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.
ourMatrix[rowNum][columnNum] = 10 + rand() % 91;
в третей задаче в первом цикле,если rand выдаст например 272 подставив его я так понимаю мы получим число 100,хотя максимум нам нужно до 99,или это не так работает ,Explain, please?
ошибка в условии была. Fixed. Массив надо заполнить числами от 10 to 100
“String, сумма элементов которой максимальна: ”
в этой строке может выпадать ноль,если числа выпадут такие что функция if не разу не выполниться и numMaxRow останется нулем.
не совсем понятен вопрос. For example?
в третей задаче в коде нужно определить номер строки, in which this sum is maximal. может получиться так что выдаст “String, сумма элементов которой максимальна: 0”,хотя там должны быть числа от 1 to 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;
Thank you. Код изменили
Прошу, Explain, please, как написать код в тегах cоde /cоde.
Хочется показать мой вариант решения 3 tasks. На мой взгляд он выглядит попроще предложенного вами ( увидев у вас второй массив немного удивилась – зачем он? )
#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;
}
It is all, do not. Ошибку нашел сам)
Help, не понимаю в чем дело. Все значения массива 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;
}