Чтобы приступить к решению задач, предложенных в этой статье, вам необхідно знати что такое двумерные (многомерные) массивы . Задачи расположены от простой к сложной. Так что, если вы новичок в программировании, начинайте с первой, чтобы лучше разобраться с остальными.
1. Объявить двумерный массив, заповнити цілими числами і показати на екран.
2) Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения – показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.
3) Заповнити двовимірний масив випадковими числами від 10 до 100. Порахувати суму елементів окремо в кожному рядку і визначити номер рядка, в якій ця сума максимальна.
Ваші запитання, которые возникли при решении задач, залишайте в коментарях до цієї статті.
помилку знайшов але не знаю як виправити перевіряв в окремих випадках масив забивається сміттям після рядка “s[i] += а[i][j];” в циклі
Загалом розібрався. Програму я писав в visual studio, а там якщо не заповнити масив то в ньому сміття зберігається. А якщо заповнити масив нулями, а потім виконати те ж саме виходить то що і потрібно
#include
#include
#include
#include
#include
using namespace std;
int main ()
{
Const INT обр = 3;
INT більш[arr][arr]={};
INT сума[arr]={};
ІНТ максі = 0;
srand(time(NULL));
for (INT I = 0;i<arr;i )
{
for(Int J = 0;j<arr;j )
{
але[i][j]= 10 + Rand()%100;
cout<<setw (10)<< але[i][j]<<setw (10);
}
cout<<endl;
}
for (INT I = 0;i<arr;i )
{
for(Int J = 0;j<arr;j )
{
sum[i]+а =[i][j];
}
cout<<setw (10)<<"summa stroki "<<+ 1<<" | " <<sum[i]<<endl;
}
for (int i=1;Ізюм[максі])
{
максі = я;
}
}
cout<<максі;
return 0;
}
Не можу вивести суму рядків в 3-й задачі, заповнений масив показує, а далі як ніби ні чого нет.Вот код:
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
const int First = 2;
const int Second = 5;
int Array[First][Second] = {};
int sumArray[First]{};
srand(time(NULL));
for (int i = 0; i < First; i++)
{
for (int a = 0; a < Second; a++)
{
Array[i][a] = 10+rand() % 90;
cout << Array[i][a] << " ";
sumArray[i] +=Array[i][a];
}
cout << endl<<endl;
}
for (int i = 0; i << First; i++)
{
cout << "Сумма " << i + 1 << "-й строки:" << sumArray[i] << endl;
}
return(0);
}
При чому і на другий завданню точно така ж проблема, сума рядків не виводиться на екран, інші команди завдання не перевіряв поки що ,вирішив розібратися з цим
У cout не можна виводити цілий масив (sumArray[i] ) одним оператором, а можна виводити тільки поелементно.
Двовимірні масиви можна виводити (точно так само як і заповнювати) тільки вкладеними циклами.
Але в рішенні 3-й завдання сума рядків виведена точно так же поелементно через цикл по суті, або я щось не розумію
for (int i = 0; i < MatrixSize; i++)
{
cout << i + 1 << "-я строка: " << rowSum[i] << endl;
}
А як на другий завданню,в цьому виразі rowSum[rowNum] += ourMatrix[rowNum][columnNum];
columnSum[rowNum] += ourMatrix[columnNum][rowNum];додається сума введена,не зрозумію чому rowsum[ROWNUM]например, знає,що в cout потім потрібно виводити суму трьох чисел (сума рядків)???
У 3-й задачі rowSum це 1-мірний масив:
int rowSum[MatrixSize] = {};
хоч убий, все одно не можу зрозуміти ,що не так =((адже у мене він теж одновимірний
int sumArray[First]{};
Мені так набридли ваші коментарі, що скопіював точно з екрану і виконав (Linux, компілятор GCC):
[olej@dell comments]$ g++ c1.cc -o c1
c1.cc: В функции «int main()»:
c1.cc:13:24: предупреждение: extended initializer lists only available with -std=c++11 or -std=gnu++11
int sumArray[First]{};
^
[olej@dell comments]$ ./c1
47 17 72 68 39
59 71 76 49 55
виправте:
int sumArray[First]{};
– це нонсенс!
Дякую за Ваше терпіння і за те, що намагалися мені допомогти, але виявляється помилка була дуже дурна, через моєї не уважності :
for (int i = 0; i << First; i++)
Зайвий знак '<'
хороша помилка … смішна. Тому що i << Спочатку – це абсолютно допустимий вираз, дає значенням i зрушене вліво на First довічних позицій (т.е. i * 2^ Перший).
А 2-м параметром циклу for це значення порівнюється з 0 на одно / не дорівнює (брехня / істина).
;-)
там де оголошений sumArray ти не поставив знак рівності перед фігурними дужками)
Це не сприймається як помилка. При використанні ініціалізації з фігурними дужками, дозволяється відкинути знак =
Але краще все писати явно
в останньому циклі for некоректна операція “<<"
А якщо у нас дві однакові суми? Який тоді вид повинен мати код?
Поясніть пжл, чому srand(time(NULL)) не працює всередині циклу for?
Тому що srand() – це початкова ініціалізація датчика випадкових чисел, яка повинна викликатися тільки 1 раз, на початку. А може і взагалі не викликатися – тоді датчик инициализируется за замовчуванням.
Не можу знайти помилку.. задав кількість рядків і стовпців 10х10, а на екран виводитися 5х5.
приберіть оператори (строки):
j++;
...
i++
...
Вони у вас вже в тілі циклів записані.
Ось ви і скачете через 1 элемент.
спасибі за допомогу.
Вітаю! Не можу розібратись, чому при однаковій кількості рядків і стовпців двовимірного масиву підрахунок суми рядків і стовпців програмою виконується коректно, а при що не дорівнює (например, 3 рядки і 5 стовпців або на оборот) – некоректно? Це стосується тільки підрахунку сума значень по стовпцях.
Як вирішити таку проблему?