Основы программирования на С++ для начинающих

Задачи: Двумерные массивы C++

Чтобы приступить к решению задач, предложенных в этой статье, вам необходимо знать что такое двумерные (многомерные) массивы . Задачи расположены от простой к сложной. Так что, если вы новичок в программировании, начинайте с первой, чтобы лучше разобраться с остальными.

1. Объявить двумерный массив, заполнить целыми числами и показать на экран. 

2) Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения – показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.

3) Заполнить двумерный массив случайными  числами от 10  до 100. Посчитать сумму элементов отдельно в каждой строке и определить номер строки,  в которой эта сумма максимальна.

Ваши вопросы, которые возникли при решении задач, оставляйте в комментариях к этой статье.

115 thoughts on “Задачи: Двумерные массивы C++

  1. Во второй задаче в массив rowSum будет записываться сумма значений, которые хранятся в строках двумерного массива ourMatrix. Отдельно по каждой строке.
    В массив columnSum будет записана сумма по столбцам двумерного массива ourMatrix.

    В третьей задаче – аналогично. В ячейки rowSum запишется сумма по строкам двумерного массива ourMatrix. Далее значение элементов rowSum будут сравнены между собой и будет найдена строка с максимальной суммой.

  2. Каюсь, я не вчитывался в решения, просто посмотрел, что какие-то лишние массивы есть.
    Задача (дублирую чтобы перед глазами была): Посчитать сумму элементов отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна.

    // функция вычисления суммы строки
    int rowsum(int **a, int m, int i) {
    int sum = 0;
    for (int j = 0; j < m; ++j)
    sum += a[i][j];
    return sum;
    }

    int **arr; // твой массив
    int n, m; // размер массива

    int imaxsum = 0, maxsum = rowsum(0);
    // номер строки с максимальной суммой и сумма

    for (int i = 1; i maxsum)
    maxsum = sum, imaxsum = i;
    }

    Разве так не лучше?

  3. мне не совсем понятно, как ты вызываешь функцию и передаешь в неё 0: maxsum = rowsum(0);
    В заголовке ведь определенно три параметра
    int rowsum(int **a, int m, int i)

    1. Ну я код схемотично описал, не проверял я его даже близко.
      Правильно так:
      maxsum = rowsum(a, m, 0);

      А вообще, код порезался весь что-то…

      1. пиши код в тегах cоde /cоde
        надо будет узнать, как сделать и добавить к комментариям кнопку для написания кода


  4. int rowsum(int **a, int m, int i) {
    int sum = 0;
    for (int j = 0; j < m; ++j) sum += a[i][j]; return sum; } int main() { int **arr; // твой массив int n, m; // размер массива //... int imaxsum = 0, maxsum = rowsum(a, m, 0); // номер строки с максимальной суммой и сумма for (int i = 1; i < n; ++i) int sum = rowsum(a, m, i); if (sum > maxsum)
    maxsum = sum, imaxsum = i;
    }

    Написал в тегах

  5. Вот тоже решение 2-ой задачи без лишних массивов.

    #include
    using namespace std;

    int main()
    {
    int nLine, nRow, nSumLine=0, nSumRow=0;

    cout << nLine;

    cout << nRow;

    int aArray[nLine][nRow];

    for (int i=0; i < nLine; i++)
    {
    for (int j=0; j < nRow; j++)
    {
    cout << "Введите элемент " << j+1 << " строки " << i+1 <> aArray[i][j];
    }
    }

    for (int i=0; i<nLine; i++)
    {
    nSumLine = 0;
    for (int j=0; j<nRow; j++)
    {
    cout << "[" << i <<"]["<< j <<"]="<<aArray[i][j]<<" ";
    nSumLine +=aArray[i][j];
    }
    cout << "Сумма элементов в строке " << i+1 <<" = " << nSumLine << "\n";
    }

    for (int j=0; j<nRow; j++)
    {
    nSumRow = 0;
    for (int i=0; i< nLine; i++)
    {
    nSumRow +=aArray[i][j];
    }
    cout << " "<< j+1 << " = " << nSumRow << " ";
    }

    cout << "\n";

    return 0;
    }

  6. А я вообще так вывел


    for (int i = 0; i < 3; i++)
    {
    for (int j = 0; j < 3; j++)
    {
    third = third + first[i][j];
    fourth = fourth + first[j][i];
    };
    std::cout << "sum in string " << i + 1 << " = " << third << std::endl;
    third = 0;
    std::cout << "sum in colunm " << i + 1 << " = " << fourth << std::endl;
    fourth = 0;
    };

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *