Масивный масив на с++

Тема в разделе "C и С++ FAQ", создана пользователем Vovann, 24 июн 2009.

Статус темы:
Закрыта.
  1. Vovann

    Vovann Гость

    Задание: В одномерном массиве, состоящем из n вещественых эл-тов, вычислить:
    1 Сумму отрицательных элементов массива
    2 Произведение эл-тов массива, расположеных между максимальным и минимальными эл-тами

    есть код, он он нихрена не работает... прошу извенить за ошибки, т.к клава глючит + писал я из тетради, небыло возможности праверить орфографию

    Код (Text):
    int mas[100]
    int n=0; int k=o; int max; =0; l,li;
    cout<<"Введите кол-во элемент"<< end;
    for (int i=0; i<n; i++ cin>>n;)
    {
    cin>>mas[i]
    if (mas[i] <0)
    k=k +mas [i];
    max;=mas [0]; L'=mas [0];
    }
    for(int i=0; i<n; i++)
    {m=max(maxi, mas[i]);
    maxi=m;
    li =min(l,mas[i]);
    maxi=m;
    li=min(l,mas[i]);
    }
    int x=l, y=m, xy=1; c=0;
    if (x>y)
    for (int i = y; i=x; i++)
    {xy*=mas[i], c++)
    else
    for (int i=x; i<y; i++)
    (xy*=mas [i]; c++)
    int<<"
    cout <<"Ответ сумма отрицательных элементов равна"<<n<<end l;
    if (c>0)
    cout<<" Произведение...равно"<<xy<<end;
    else
    cout <<"Таких нет" <<end;
    return o;
    }
    :D
     
  2. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    Код (Text):
    #include <conio.h>
    #include <stdio.h>
    #include <iostream.h>

    float get_sum(float *x,int n)
    {
    float *p=x,rezult=0;
    for(int i=0;i<n;i++,p++) if (*p<0) rezult+=*p;
    return rezult;
    }

    int min_position(float *x,int n)
    {
    float *p=x,min=*p;
    int rez=0;
    p++;
    for(int i=1;i<n;i++,p++) if (min>*p) {
    min=*p;
    rez=i;
    }
    return rez;
    }

    void input_array(float *x,int n)
    {
    float *p=x;
    for (int i=0;i<n;i++,p++) cin>>*p;
    }

    void output_array(float *x,int n)
    {
    float *p=x;
    for (int i=0;i<n;i++,p++) cout<<*p<<"\t";
    puts("");
    }



    int max_position(float *x,int n)
    {
    float *p=x,max=*p;
    int rez=0;
    p++;
    for(int i=1;i<n;i++,p++) if (max<*p) {
    max=*p;
    rez=i;
    }
    return rez;
    }

    void make_quest(float *x,int n)
    {
    int sum=get_sum(x,n),
    min=min_position(x,n),
    max=max_position(x,n);
    float task;
    printf("Сумма отрицательных элементов вектора: %d\n",sum);
    printf("Позиция минимального элемента:         %d\n",min);
    printf("Позиция максимального элемента:     %d\n",max);
    int i,d;
    if (min<max) {i=min+1;d=max-1;}
    else {i=max+1;d=min-1;};
    for(task=1;i<=d;i++) task*=x[i];
    printf("Произведение элементов между min и max == %.2f",task);
    }

    int main()
    {
    clrscr();
    puts("Введите количество элементов в массиве");
    int n;
    cin>>n;
    puts("Введите массив:");
    float *a=new float [n];
    input_array(a,n);
    clrscr();
    puts("Введенный массив:");
    output_array(a,n);
    make_quest(a,n);
    }
     
  3. Vovann

    Vovann Гость

    спасибо, ет схема на работоспособность проверена ?
     
  4. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    да
     
  5. Vovann

    Vovann Гость

    неработает нифика... пишет фатал ерор
     
  6. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    что ты вводишь?
     
  7. Vovann

    Vovann Гость

  8. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    1) я спрашивал не это =)
    2) раз уж речь зашла о компиляторах - то попробую запустить в Borland Cpp - ибо я писал на нем и всё пашет
    3) единственное место где не работает прога - это когда максимальный и минимальный элемент стоят рядом (произведение цифр между ними по моему алгоритму равно 1, а должно быть 0... это можно исправить добавив всего лишь одно условие, где и будет присваиваться значение task...
    4) а спрашивал, что конктретно ты вводишь... ибо если задашь слишком большой размер массива - ясен пень вылетит программа, с ошибкой переполнения буфера памяти
     
  9. Vovann

    Vovann Гость

    ааа... просто понимаеш для меня С++ как андройный колайдер... он вроде есть
     
  10. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Его точно нет. Есть адронный коллайдер
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей