Вопрос: двумерные массивы в функциях, статич. и динамич. массивы, рабо

Тема в разделе "C/C++/C#", создана пользователем SchwarzeWolfin, 29 ноя 2010.

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

    Регистрация:
    28 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    Пробовала написать в разных вариантах,всё время либо компиллятор ругается,либо аварийное завершение программы. Как правильно использовать многомерные массивы в функциях?
    Код (C++):
    //подсчёт суммы всех элементов чётных строк массива
    #include <iostream>
    using namespace std;
    void de(double **a,int n,int m)
    {
    double s=0;
    for(int i=0;i<n;i+2)
    for(int j=0;j<m;j++)
    s+=a[i][j];
    cout<<s;
    }
    int main()
    {
    int x,y;
    cin>>x;
    cin>>y;
    double ar[x][y];
    for(int i=0;i<x;i++)
    for(int j=0;j<y;j++)
    cin>>ar[i][j];
    de(ar,x,y);
    return 0;
    }
     
  2. c1100

    c1100 Гость

  3. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код (C++):
    #include <iostream>
    using namespace std;

    //Тут у вас все абсолютно верно
    void de(double **a,int n,int m)
    {
    double s=0;
    //А вот тут присвоение упустили
    //for(int i=0;i<n;i+2)
    for(int i=0;i<n;i+=2)
    for(int j=0;j<m;j++)
    s+=a[i][j];
    cout<<"Сумма четных строк массива : " << s;
    }
    int main()
    {
    setlocale(LC_ALL,".1251");
    int x,y; //Вот тут смотрите вы определяете переменные(!!!)
    cin>>x; //Вводите их
    cin>>y;
    //double ar[x][y]; //А в этом месте вы предлагаете компилятору выделять память под массив (x на y) но они же (!!!)переменные(!!!), а должны быть константами
    //Помпилятор на момент сборки просто не знает сколько нужно выделить памяти...
    //Тут без динамики никак
    //И так выделим динамически память..
    double **ar; //Наш двумерный массив (указатель на массив указателей)
    ar = new double*[x]; //Выделим память под строки массива
    for(int i=0;i<x;i++)
    {
    ar[i] = new double[y]; //А тут будем выделять память под столбцы (для каждой строки!!!), иными словами под элементы массива(стоки)
    for(int j=0;j<y;j++)
    cin>>ar[i][j];
    };
    de(ar,x,y);
    return 0;
    }
     
  4. SchwarzeWolfin

    Регистрация:
    28 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    DarkKnight125,спасибо,всё работает.С динамическим массивом пробовала,но,как написано выше,в этом случае выполнение программы аварийно завершалось.Видимо из-за той самой самой ошибки с присвоением
     
Загрузка...
Похожие Темы - Вопрос двумерные массивы
  1. Генералл
    Ответов:
    2
    Просмотров:
    53
  2. ApplePen
    Ответов:
    0
    Просмотров:
    55
  3. gURaBA_N
    Ответов:
    3
    Просмотров:
    91
  4. ghost
    Ответов:
    1
    Просмотров:
    86
  5. kartaman
    Ответов:
    0
    Просмотров:
    126
Статус темы:
Закрыта.

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