Чтобы приступить к решению задач, предложенных в этой статье, вам необходимо знать что такое двумерные (многомерные) массивы . Задачи расположены от простой к сложной. Так что, если вы новичок в программировании, начинайте с первой, чтобы лучше разобраться с остальными.
1. Объявить двумерный массив, заполнить целыми числами и показать на экран.
2) Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения – показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.
3) Заполнить двумерный массив случайными числами от 10 до 100. Посчитать сумму элементов отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна.
Ваши вопросы, которые возникли при решении задач, оставляйте в комментариях к этой статье.
ourMatrix[rowNum][columnNum] = 10 + rand() % 91;
в третей задаче в первом цикле,если rand выдаст например 272 подставив его я так понимаю мы получим число 100,хотя максимум нам нужно до 99,или это не так работает ,объясните пожалуйста?
ошибка в условии была. Исправлено. Массив надо заполнить числами от 10 до 100
“Строка, сумма элементов которой максимальна: ”
в этой строке может выпадать ноль,если числа выпадут такие что функция if не разу не выполниться и numMaxRow останется нулем.
не совсем понятен вопрос. Например?
в третей задаче в коде нужно определить номер строки, в которой эта сумма максимальна. может получиться так что выдаст “Строка, сумма элементов которой максимальна: 0”,хотя там должны быть числа от 1 до 7 по номеру строки.
в этой части логическая ошибка я так понял,если в первой строке сумма числе будет больше чем в остальных строках,тогда условие if не выполниться ни разу и numMaxRow останется нулем,а единица получиться вообще ни как не может.
for (int i = 1; i rowSum[numMaxRow])
{
numMaxRow = i + 1;
}
}
я нашел очень грубую ошибку в оригинальном коде. В последнем FOR:
for (int i = 1; i < MatrixSize; i++) { if (rowSum[i] > rowSum[numMaxRow])
{
numMaxRow = i + 1;
}
}
cout < < "Строка, сумма элементов которой максимальна: " << numMaxRow;
numMaxrow=i+1; не правильно так как меняется строка и когда идет очередной loop на проверку. Сравнение идет с другой строкой. только в cout в конце ножно добавить << numMaxRow + 1;
то есть оригинальный код нужно поменять на:
for (int i = 1; i < MatrixSize; i++) { if (rowSum[i] > rowSum[numMaxRow])
{
numMaxRow = i;
}
}
cout < < "Строка, сумма элементов которой максимальна: " << numMaxRow + 1;
Спасибо. Код изменили
Прошу, объясните пожалуйста, как написать код в тегах cоde /cоde.
Хочется показать мой вариант решения 3 задачи. На мой взгляд он выглядит попроще предложенного вами ( увидев у вас второй массив немного удивилась – зачем он? )
#include
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL,"rus");
int array1[10][10];
srand(time(NULL));
cout << " двумерный массив" << endl;
cout << endl;
for ( int i=0; i<10; i++)
{
for ( int j=0; j<10; j++)
{
array1[i][j]=10+rand()%90;
cout << array1[i][j] << " " << "|" << " ";
}
cout << endl;
}
int max(0), sum(0), a(0);
for ( int i=0; i<10; i++)
{
sum=0;
for ( int j=0; j<10; j++)
{
sum+=array1[i][j];
}
cout << " сумма " << i+1 << " ой строки = " << sum <max)
{
max=sum;
a=i+1;
}
}
cout << "максимальная сумма элементов в строке № " << a << " равна = " << max << endl;
return 0;
}
Почему у меня выходят нули?
int main()
{
setlocale(LC_ALL, “Rus”);
const int first = 3;
const int second = 5;
int myArr[first][second] = {};
for(int i = 0; i < first; i++)
{
for(int j = 0; j < second; j++)
{
myArr[first][second] = i + j;
cout << myArr[i][j] << " | ";
}
cout << endl << endl;
}
return 0;
}
Все, не надо. Ошибку нашел сам)
Помогите, не понимаю в чем дело. Все значения массива s забиваются мусором.
#include
#include
using namespace std;
int main(){
setlocale(LC_ALL, “Russian”);
int a[7][4], s[7];
for (int i(0); i < 7; i++){
for (int j(0); j < 4; j++){
a[i][j] = 10 + rand() % (100 – 10 + 1);
s[i] += a[i][j];
}
}
for (int i(0); i < 7; i++)
cout << s[i]<<"\t";
_getch();
return 0;
}