Задачи на двумерные массивы
Задача 1: как заполнить двумерный массив
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); const int RowCount = 3; const int ColumnCount = 4; int ourMatrix[RowCount][ColumnCount] = {}; for (int rowNum = 0; rowNum < RowCount; rowNum++) { for (int columnNum = 0; columnNum < ColumnCount; columnNum++) { ourMatrix[rowNum][columnNum] = rowNum + columnNum; cout << ourMatrix[rowNum][columnNum] << " "; } cout << endl; } return 0; } |
Как видите, заполняется двумерный массив достаточно просто. Для этого используйте вложенные циклы. Счетчик внешнего цикла перебирает номера строк массива, а счетчик вложенного проходит по элементам этой строки чисел – по столбцам.
Результат:
Кстати немного изменив задачу, можно нарисовать таблицу умножения в консольном окне.
Задача 1: как заполнить двумерный массив 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <iostream> #include <iomanip> // для функции setw() using namespace std; int main() { setlocale(LC_ALL, "rus"); const int RowCount = 9; const int ColumnCount = 9; int ourMatrix[RowCount][ColumnCount] = {}; for (int rowNum = 1; rowNum <= RowCount; rowNum++) { for (int columnNum = 1; columnNum <= ColumnCount; columnNum++) { ourMatrix[rowNum - 1][columnNum - 1] = rowNum * columnNum; cout << setw(4) << ourMatrix[rowNum - 1][columnNum - 1]; } cout << endl; } return 0; } |
Функция setw() используется в коде для форматирования вывода на экран данных – строка 19. Она устанавливает ширину поля для отображения элемента расположенного после неё. Например без применения этой функции (cout << ourMatrix[rowNum - 1][columnNum -1];) вывод на экран двумерного массива мог бы быть таким:
|
|
Но нам бы хотелось всё таки увидеть матрицу в виде таблицы – с одинаковыми отступами между столбцами. Применив setw() в потоке вывода и передав в неё число 4, мы указали, что для каждого следующего элемента надо установить ширину поля в четыре символа: cout << setw(4) << ourMatrix[rowNum - 1][columnNum - 1];
Результат:
Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения – показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.
Задача 2: двумерные массивы в с++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <iostream> #include <iomanip> using namespace std; int main() { setlocale(LC_ALL, "rus"); const int MatrixSize = 3; int ourMatrix[MatrixSize][MatrixSize] = {}; int rowSum[MatrixSize] = {}; // для записи суммы по строкам int columnSum[MatrixSize] = {}; //... по столбцам cout << "Заполните матрицу " << MatrixSize << 'х' << MatrixSize << " числами построчно.\n"; for (int rowNum = 0; rowNum < MatrixSize; rowNum++) { for (int columnNum = 0; columnNum < MatrixSize; columnNum++) { cout << rowNum + 1 << "-я строка "; cout << columnNum + 1 << "-й столбец: "; cin >> ourMatrix[rowNum][columnNum]; } cout << endl; } // вывод на экран + подсчет суммы for (int rowNum = 0; rowNum < MatrixSize; rowNum++) { cout << " | "; for (int columnNum = 0; columnNum < MatrixSize; columnNum++) { cout << setw(4) << ourMatrix[rowNum][columnNum] << " "; rowSum[rowNum] += ourMatrix[rowNum][columnNum]; columnSum[rowNum] += ourMatrix[columnNum][rowNum]; } cout << "|" << endl; } cout << "\nСумма по строкам!\n"; for (int i = 0; i < MatrixSize; i++) { cout << i + 1 << "-я строка: " << rowSum[i] << endl; } cout << "\nСумма по столбцам!\n"; for (int i = 0; i < MatrixSize; i++) { cout << i + 1 << "-й столбец: " << columnSum[i] << endl; } return 0; } |
Результат работы программы:
|
|