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

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

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

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

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

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

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

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

  1. #include
    using namespace std;

    int main()
    {
    const int ROW = 3;
    const int COL = 3;
    setlocale(LC_ALL, “RU”);
    int arr[ROW][COL];
    cout << "Заполните двумерный массив случайными числами" << endl;
    for (int i = 0; i < ROW; i++) {
    for (int j = 0; j > arr[i][j];
    }
    }
    int sumROW = 0, sumCOL = 0;
    cout << endl;
    for (int i = 0; i < ROW; i++) {
    for (int j = 0; j < COL; j++) {
    cout << arr[i][j]<< "\t";
    }
    cout<<endl;
    }
    for (int i = 0; i < ROW; i++) {
    for (int j = 0; j < COL; j++) {
    sumROW = sumROW + arr[i][j];
    }
    cout << "Сумма элементов в строке : " << i + 1 << " " << sumROW;
    sumROW = 0;
    cout << endl;
    }
    for (int i = 0; i < ROW; i++) {
    for (int j = 0; j < COL; j++) {
    sumCOL = sumCOL + arr[j][i];
    }
    cout << "Сумма элементов в столбце : " << i + 1 << " " << sumCOL ;
    sumCOL = 0;
    cout << endl;
    }
    }

  2. #include
    #include

    using namespace std;

    int main()
    {
    srand(time(NULL));
    const int ROW = 10;
    const int COL = 10;
    int sumROW = 0;
    int sumROWMax = 0;
    int numberROW = 1;

    setlocale(LC_ALL, “RU”);
    int arr[ROW][COL];
    for (int i = 0; i < ROW; i++) {
    for (int j = 0; j < COL; j++) {
    arr[i][j] = rand() % 100 + 10;
    }
    }
    for (int i = 0; i < ROW; i++) {
    for (int j = 0; j < COL; j++) {
    cout << arr[i][j] << "\t";
    }
    cout << endl;
    }
    for (int i = 0; i < ROW; i++)
    {
    for (int j = 0; j < COL; j++)
    {
    sumROW = sumROW + arr[i][j];
    }
    cout << "Сумма элементов в строке : " << i + 1 << " " << sumROW << endl;
    sumROW = 0;
    }
    cout << endl;

    for (int i = 0; i < ROW; i++)
    {
    for (int j = 0; j sumROWMax)
    {
    sumROWMax = sumROW;
    numberROW = i;
    }
    sumROW = 0;
    }
    cout << "Максимальная сумма элементов в строке "<< numberROW + 1 << ". сумма строки : " << sumROWMax << endl;

    }

  3. А можно еще 3-4 задачи по этой теме? Автору RESPECT за такой обучающий материал, очень доходчиво и просто изложены темы

  4. #include
    #define DEBUG
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, “ru”);
    int ROWS, COLS;
    cout <> ROWS;
    cout <> COLS;
    int** a = new int*[ROWS];
    for (int i = 0; i < ROWS; i++)
    a[i] = new int[COLS];

    for (int i = 0; i < ROWS; i++) // ввод элементов матрицы
    for (int j = 0; j < COLS; j++)
    a[i][j] = rand() % 101 + 10;
    cout<< endl;
    #ifdef DEBUG
    for (int i = 0; i < ROWS; i++)
    {
    for (int j = 0; j < COLS; j++)
    cout << a[i][j] << " ";
    cout << endl;
    } //вывод матрицы
    #endif
    int* sum_in_row = new int[ROWS]; // инициализация массива
    for (int i = 0; i < ROWS; i++)
    sum_in_row[i] = 0;
    for (int i = 0; i < ROWS; i++) // подсчет сумм элементов строк
    {
    int sum = 0;
    for (int j = 0; j < COLS; j++)
    sum_in_row[i] += a[i][j];
    }

    for (int i = 0; i < ROWS; i++)
    cout << "сумма строки " << i + 1 << "=" << sum_in_row[i] << endl; // вывод сумм строк

    int num_max_sum = 0;
    int max_sum = 0;
    int h=0;
    for (int i = 0; i max_sum ? max_sum = sum_in_row[i], num_max_sum = i:h++;

    cout << "номер строки с наибольшей суммой: " << num_max_sum+1;

    for (int i = 0; i < ROWS; i++) // очистка памяти
    delete [] a[i];
    delete [] a;
    delete[] sum_in_row;
    }

  5. #include
    using namespace std;
    #include
    #include “mainCu.h”
    int main()
    {
    setlocale(LC_ALL, “rus”);
    srand(time(NULL));
    int row;
    cin >> row;
    int col;
    cin >> col;
    int** arr = new int* [row];
    int* row_arr_sum = new int[row];
    int* col_arr_sum = new int[col];
    int row_sum = 0, col_sum = 0;
    for (short i = 0; i < row; i++)
    row_arr_sum[i] = 0;
    for (short i = 0; i < row; i++)
    col_arr_sum[i] = 0;
    for (short i = 0; i < row; i++) {
    arr[i] = new int[row];
    for (short j = 0; j < col; j++)
    arr[i][j] = rand() % 10;
    }
    for (short i = 0; i < row; i++) {
    for (short j = 0; j < col; j++)
    cout <<"|"<< arr[i][j] << "|";
    cout << endl;
    }cout << endl;
    for (short i = 0; i < row; i++) {
    for (short j = 0; j < col; j++) {
    row_arr_sum[i] += arr[i][j];
    col_arr_sum[i] += arr[i][j];
    }
    }
    cout << "сумма по строкам: " << endl;
    for (short i = 0; i < row; i++) {
    row_sum += row_arr_sum[i];
    cout << "строка(" << i+1 << "):"<< row_arr_sum[i]<<endl;
    } cout << "сумма по столбцам: " << endl;
    for (short i = 0; i < row; i++){
    col_sum += row_arr_sum[i];
    cout << "столбец(" << i + 1 << "):" << col_arr_sum[i] <<endl;}
    cout << endl << col_sum << endl << row_sum << endl;

    }

    1. //к сожелению там допустил пару ошибок. тут исправлено

      #include
      using namespace std;
      #include
      #include “mainCu.h”
      int main()
      {
      setlocale(LC_ALL, “rus”);
      srand(time(NULL));
      int row;
      cin >> row;
      int col;
      cin >> col;
      int** arr = new int* [row];
      int* row_arr_sum = new int[row];
      int* col_arr_sum = new int[col];

      for (short i = 0; i < row; i++)
      row_arr_sum[i] = 0;
      for (short i = 0; i < row; i++)
      col_arr_sum[i] = 0;
      for (short i = 0; i < row; i++) {
      arr[i] = new int[row];
      for (short j = 0; j < col; j++)
      arr[i][j] = rand() % 10;
      }
      for (short i = 0; i < row; i++) {
      for (short j = 0; j < col; j++)
      cout <<"|"<< arr[i][j] << "|";
      cout << endl;
      }cout << endl;
      for (short i = 0; i < row; i++) {
      for (short j = 0; j < col; j++){
      row_arr_sum[i] += arr[i][j];
      col_arr_sum[i] += arr[j][i];
      }
      }
      cout << "сумма по строкам: " << endl;
      for (short i = 0; i < row; i++) {
      cout << "строка(" << i+1 << "):"<< row_arr_sum[i]<<endl;
      } cout << "сумма по столбцам: " << endl;
      for (short i = 0; i < row; i++){
      cout << "столбец(" << i + 1 << "):" << col_arr_sum[i] <<endl;}
      int max_count = 0;
      int min_count =0;
      int max_row_sum = row_arr_sum[0], min_row_sum = row_arr_sum[0];
      for (short i= 0; i <row; i++)
      {

      if (max_row_sum row_arr_sum[i]) {

      min_row_sum = row_arr_sum[i];
      min_count = i;
      }
      }
      cout << "максимальная сумма в строке №" << max_count + 1 << " = " << max_row_sum << endl
      << "Минимальная сумма в строке №" << min_count + 1 << " = " << min_row_sum << endl;

      }

  6. #include
    #include

    using namespace std;

    int main()
    {
    srand(time(NULL));

    const int ROWS = 10;
    const int COLS = 10;
    int arr[ROWS][COLS]{};

    for (int i = 0; i < ROWS; i++)//Заполнение массива arr[][]
    {
    for (int j = 0; j < COLS; j++)
    {
    arr[i][j] = rand() % 90 + 10;
    }
    }

    int arr_sum[ROWS]{};//Создаем массив в котором будем хранить сумму //элементов каждой строки массива arr[][]
    for (int i = 0; i < ROWS; i++)
    {
    for (int j = 0; j < COLS; j++)
    {
    arr_sum[i] = arr_sum[i] + arr[i][j];//Присваиваем в i элемент масива //arr_sum[] сумму всех элементов в i строке массива arr[][] (и так далее )
    }
    }

    int max_index = 0;//переменная в которой будет хранится индекс //максимального элемента массива max_sum[]
    for (int i = 1; i < ROWS; i++)
    {
    if (arr_sum[max_index] < arr_sum[i])
    {
    max_index = i;
    }
    }

    /*Так как размер массива arr_sum[] равен колличеству строк
    * массива arr[][] то индекс максимального элемента массива arr_sum[]
    * соответствует индексу строки массива arr[][] с наибольшей суммой элементов
    */

    cout << "Index max row – " << max_index;

    return 0;
    }

  7. Почему можно заменить

    columnSum[rowNum] += ourMatrix[columnNum][rowNum];

    на

    columnSum[columnNum] += ourMatrix[rowNum][columnNum];

    и результат будет тем же?

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

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