To begin to address the tasks, proposed in this article, you need to know that is two-dimensional (multidimensional) arrays . Tasks are arranged from simple to complex. So that, If you're new to programming, start with the first, to better deal with the other.
1. Declare a two-dimensional array, fill integers and show on the screen.
2) Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения – показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.
3) Fill two-dimensional array of random numbers 10 to 100. Calculate the sum of the elements separately in each line and determine the line number, in which this sum is maximal.
Your questions, которые возникли при решении задач, leave comments on this article.
Не пойму я зачем во второй и третьей задачах дополнительные массивы.
Во второй задаче в массив rowSum будет записываться сумма значений, которые хранятся в строках двумерного массива ourMatrix. Отдельно по каждой строке.
В массив columnSum будет записана сумма по столбцам двумерного массива ourMatrix.
В третьей задаче – likewise. В ячейки rowSum запишется сумма по строкам двумерного массива ourMatrix. Далее значение элементов rowSum будут сравнены между собой и будет найдена строка с максимальной суммой.
Каюсь, я не вчитывался в решения, просто посмотрел, что какие-то лишние массивы есть.
A task (дублирую чтобы перед глазами была): Calculate the sum of the elements separately in each line and determine the line number, in which this sum is maximal.
// функция вычисления суммы строки
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);
But in general, код порезался весь что-то…
пиши код в тегах 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;
};