Чтобы приступить к решению задач, предложенных в этой статье, вам необходимо знать что такое двумерные (многомерные) массивы . Задачи расположены от простой к сложной. Так что, если вы новичок в программировании, начинайте с первой, чтобы лучше разобраться с остальными.
1. Объявить двумерный массив, заполнить целыми числами и показать на экран.
2) Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения – показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.
3) Заполнить двумерный массив случайными числами от 10 до 100. Посчитать сумму элементов отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна.
Ваши вопросы, которые возникли при решении задач, оставляйте в комментариях к этой статье.
Не пойму я зачем во второй и третьей задачах дополнительные массивы.
Во второй задаче в массив rowSum будет записываться сумма значений, которые хранятся в строках двумерного массива ourMatrix. Отдельно по каждой строке.
В массив columnSum будет записана сумма по столбцам двумерного массива ourMatrix.
В третьей задаче – аналогично. В ячейки rowSum запишется сумма по строкам двумерного массива ourMatrix. Далее значение элементов rowSum будут сравнены между собой и будет найдена строка с максимальной суммой.
Каюсь, я не вчитывался в решения, просто посмотрел, что какие-то лишние массивы есть.
Задача (дублирую чтобы перед глазами была): Посчитать сумму элементов отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна.
// функция вычисления суммы строки
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;
}
Разве так не лучше?
мне не совсем понятно, как ты вызываешь функцию и передаешь в неё 0:
maxsum = rowsum(0);
В заголовке ведь определенно три параметра
int rowsum(int **a, int m, int i)
Ну я код схемотично описал, не проверял я его даже близко.
Правильно так:
maxsum = rowsum(a, m, 0);
А вообще, код порезался весь что-то…
пиши код в тегах cоde /cоde
надо будет узнать, как сделать и добавить к комментариям кнопку для написания кода
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;
}
Написал в тегах
Вот тоже решение 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;
}
А я вообще так вывел
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;
};