Чтобы приступить к решению задач, предложенных в этой статье, вам необхідно знати что такое двумерные (многомерные) массивы . Задачи расположены от простой к сложной. Так что, если вы новичок в программировании, начинайте с первой, чтобы лучше разобраться с остальными.
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, “російський”);
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] += а[i][j];
}
}
for (int i(0); i < 7; i )
cout << s[i]<<"\t";
_getch();
return 0;
}