Чтобы приступить к решению задач, предложенных в этой статье, вам необходимо знать что такое двумерные (многомерные) массивы . Задачи расположены от простой к сложной. Так что, если вы новичок в программировании, начинайте с первой, чтобы лучше разобраться с остальными.
1. Объявить двумерный массив, заполнить целыми числами и показать на экран.
2) Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения – показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.
3) Заполнить двумерный массив случайными числами от 10 до 100. Посчитать сумму элементов отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна.
Ваши вопросы, которые возникли при решении задач, оставляйте в комментариях к этой статье.





В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Победителем соревнований объявляется тот спортсмен, у которого максимален наилучший результат по всем броскам. Таким образом, программа должна найти значение максимального элемента в данном массиве, а также его индексы (то есть номер спортсмена и номер попытки).
Входные данные
Программа получает на вход два числа n и m, являющиеся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по m чисел, являющихся элементами массива.
Выходные данные
Программа выводит значение максимального элемента, затем номер строки и номер столбца, в котором он встречается. Если в массиве несколько максимальных элементов, то нужно вывести минимальный номер строки, в которой встречается такой элемент, а если в этой строке таких элементов несколько, то нужно вывести минимальный номер столбца. Не забудьте, что все строки и столбцы нумеруются с 0.
Примеры
входные данные
3 3
3 1 2
1 3 4
3 3 3
выходные данные
4
1 2
И на что вы рассчитываете?
Что кто-то станет решать за вас ваши домашние задания пока вы будете широко гулять?
Так за такое удовольствие деньги платят!
#include “stdafx.h”
#include
#include
#include
#include // setw(отступ)
using namespace std;
int main() {
setlocale(0, “”);
srand(time(NULL));
const int ROWSIZE = 3;
const int COLSIZE = 3;
int arr[ROWSIZE][COLSIZE] = {};
// заполнение массива с клавиатуры
/*
for (int rowNum = 0; rowNum < ROWSIZE; rowNum++) {
for (int colNum = 0; colNum < COLSIZE; colNum++) {
cout << "Пожалуйста, введите исходные значения массива: ";
cout << rowNum + 1 << "-я строка ";
cout << colNum + 1 <> arr[rowNum][colNum];
}
}
*/
// Заполняем массив случайными числами
for (int rowNum = 0; rowNum < ROWSIZE; rowNum++) {
cout << "Строка " << rowNum + 1 << ": ";
for (int colNum = 0; colNum < COLSIZE; colNum++) {
arr[rowNum][colNum] = 1 + rand() % 9;
cout << setw(2) << arr[rowNum][colNum];
}
cout << endl;
}
// Находим максимальное число, а если их несколько то находим самую первую строку и столбец, где оно встречается
int row[ROWSIZE]{};
int col[COLSIZE]{};
int temp = 0;
int temp1 = 0;
for (int r = 0; r < ROWSIZE; r++) {
for (int c = 0; c < COLSIZE; c++) {
if (col[0] < arr[c][r]) {
col[0] = arr[c][r];
temp = r;
temp1 = c;
}
else c;
}
}
cout << "Максимальное: " << col[0] << " COL: " << temp1 + 1 << " ROW: " << temp + 1 << endl;
system("pause");
return 0;
};
#include
#include
#include
#include
#include
int main ()
{
setlocale(LC_ALL, “rus”);
srand(time(NULL));
int N, M;
printf (“Введите количество спортсменов: “);
scanf (“%d”, &N);
printf (“Введите количество попыток: “);
scanf (“%d”, &M);
int **A = new int *[N];
for (int count = 0; count < N; count++)
A[count] = new int [N];
int nMax = 0, iMax, jMax;
int i, j;
printf ("\nТаблица с результатами: \n");
for (i = 0; i < N; i++)
{
printf ("Спортсмен №%d: ", i+1);
for (j = 0; j < M; j++)
{
A[i][j] = rand()%25 + 1;
printf ("%3d ", A[i][j]);
if(nMax == A[i][j])
{
if(i < iMax && j < jMax)
nMax = A[i][j];
else
nMax != A[i][j];
}
if(nMax < A[i][j])
{
nMax = A[i][j];
iMax = i;
jMax = j;
}
}
printf ("\n");
}
printf ("\nЛучший результат – %d у спорстмена №%d в попытке №%d!", nMax, iMax + 1, jMax + 1);
for (int count = 0; count < N; count++)
delete [] A[count];
return 0;
}
int main()
{
setlocale(LC_ALL, “rus”);
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand(time(NULL));
const int n = 5, m = 7;
int MM[n][m]{}, max = 0,r,s,R,S;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
MM[i][j] = 15 + rand() % 55;
cout << MM[i][j] << "|";
}
cout << endl;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j max)
{
max = MM[i][j];
r = i;
s = j;
}
if (max==MM[i][j] && i != r && j != s)
{
cout << "Opapa! U nas 2 Pobeditelya!\n";
R = i;
S = j;
cout << "Pobedu delyat uchastnik #" << r + 1 << " i uchastnik #" << R + 1 << " S rezultatom " << max << " metrov!\n Pozdravlyaem!";
return 0;
}
}
}
cout << "Pobedil uchastnik #" << r+1 << " s " << s+1 << " poputki, S rezultatom " << max << " metrov!\n Pozdravlyaem!";
int ourMatrix[MatrixSize][MatrixSize] = {}
зачем тут “{}”?
ОБЪяСНИТЕ ПОЖАЛУЙСТА!!! почему сумма в столбцах выводится не правильно??
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
srand(time(NULL));
const int RowCount = 10;
int array[RowCount][RowCount] = {};
int SumRow[RowCount] = {}, SumColumn[RowCount] = {};
for (int i = 0; i < RowCount; i++) {
for (int j = 0; j < RowCount; j++) {
array[i][j] = i*j;
cout << setw(4) << array[i][j] << " ";
SumRow[i] += array[i][j];
SumColumn[i] += array[j][i];
}
cout << endl;
}
for (int i = 0; i < 10; i++) {
cout << "Сумма в " << i + 1 << " строке = " << SumRow[i] << " ";
cout << "Сумма в " << i + 1 << " столбце = " << SumColumn[i] << endl;
}
system("pause");
return 0;
}
Строка “SumColumn[i] += array[j][i];” складывает ещё незаполненные случайными числами ячейки массива.
Я не знаю, актуальна ли ещё тема. последний коммент очень давний. Но меня интересует тот же вопрос, что в предъидущем комменте.
решение задачи 2 работает только с константой и только с тройкой. С остальными числами суммы неверные. Хотелось бы объяснений, если это возможно. И решение с рандомным вводом и с вводом размера массива с клавиатуры
Задача №2 с рандомным вводом.
#include
#include
#include
#include
int main ()
{
setlocale(LC_ALL, “rus”);
srand(time(NULL));
int N, M, i, j;
printf (“Введите количество строк двумерного массива: “);
scanf (“%d”, &N);
printf (“Введите количество столбцов двумерного массива: “);
scanf (“%d”, &M);
int **A = new int *[N];
for (int count = 0; count < N; count++)
A[count] = new int [N];
printf ("\nИсходный двухмерный массив: \n");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
A[i][j] = rand()%99+ 1;
printf ("%4d ", A[i][j]);
}
printf ("\n");
}
printf ("\nСумма элементов по строкам\n");
int sumi;
for (i = 0; i < N; i++)
{
sumi = 0;
for (j = 0; j < N; j++)
{
sumi += A[i][j];
}
printf ("%d-я строка: %d \n", i, sumi);
}
printf ("\nСумма элементов по столбцам\n");
int sumj;
for (j = 0; j < N; j++)
{
sumj = 0;
for (i = 0; i < N; i++)
{
sumj += A[i][j];
}
printf ("%d-й столбец: %d \n", j, sumj);
}
for (int count = 0; count < N; count++)
delete [] A[count];
return 0;
}
Задача №2 с вводом значений массива с клавиатуры
#include
int const N = 4;
int main ()
{
setlocale(LC_ALL, “rus”);
int A[N][N];
int i, j;
printf (“\nÇàïîëíèòå äâóìåðíûé ìàññèâ %dx%d ÷èñëàìè ïîñòðî÷íî: \n”, N, N);
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
printf ("A[%d][%d] = ", i, j);
scanf ("%d", &A[i][j]);
}
}
printf ("\nÈñõîäíûé äâóìåðíûé ìàññèâ: \n");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
printf ("%2d", A[i][j]);
}
printf ("\n");
}
printf ("\nÑóììà ýëåìåíòîâ ïî ñòðîêàì\n");
int sumi;
for (i = 0; i < N; i++)
{
sumi = 0;
for (j = 0; j < N; j++)
{
sumi += A[i][j];
}
printf ("%d-ÿ ñòðîêà: %d \n", i, sumi);
}
printf ("\nÑóììà ýëåìåíòîâ ïî ñòîëáöàì\n");
int sumj;
for (j = 0; j < N; j++)
{
sumj = 0;
for (i = 0; i < N; i++)
{
sumj += A[i][j];
}
printf ("%d-é ñòîëáåö: %d \n", j, sumj);
}
return 0;
}
спасибо))
ух, в рандоме сделал описку в циклах по столбцам, подправил
int main ()
{
setlocale(LC_ALL, “rus”);
srand(time(NULL));
int N, M, i, j;
printf (“Введите количество строк двумерного массива: “);
scanf (“%d”, &N);
printf (“Введите количество столбцов двумерного массива: “);
scanf (“%d”, &M);
int **A = new int *[N];
for (int count = 0; count < N; count++)
A[count] = new int [N];
printf ("\nИсходный двухмерный массив: \n");
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
A[i][j] = rand()%99+ 1;
printf ("%4d ", A[i][j]);
}
printf ("\n");
}
printf ("\nСумма элементов по строкам\n");
int sumi;
for (i = 0; i < N; i++)
{
sumi = 0;
for (j = 0; j < M; j++)
{
sumi += A[i][j];
}
printf ("%d-я строка: %d \n", i, sumi);
}
printf ("\nСумма элементов по столбцам\n");
int sumj;
for (j = 0; j < N; j++)
{
sumj = 0;
for (i = 0; i < M; i++)
{
sumj += A[i][j];
}
printf ("%d-й столбец: %d \n", j, sumj);
}
for (int count = 0; count < N; count++)
delete [] A[count];
return 0;
}