Чтобы приступить к решению задач, предложенных в этой статье, вам необходимо знать что такое двумерные (многомерные) массивы . Задачи расположены от простой к сложной. Так что, если вы новичок в программировании, начинайте с первой, чтобы лучше разобраться с остальными.
1. Объявить двумерный массив, заполнить целыми числами и показать на экран.
2) Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения – показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.
3) Заполнить двумерный массив случайными числами от 10 до 100. Посчитать сумму элементов отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна.
Ваши вопросы, которые возникли при решении задач, оставляйте в комментариях к этой статье.
Задачу №3 можно решить используя лишь 1 цикл с вложенным, место трёх, как в ответе.
К таким заявлениям нужно код прикреплять так-то
Согласен, не стоит давать такие глупые решения задач новичкам, в том числе и мне. Нужно приучать людей с самого начала использовать меньше ненужных циклов, чтобы улучшить скорость выполнения программы..
Вот нормальное решение 3-го задания: cpp.sh/9zvl
Глупость написана (про “улучшить скорость выполнения программы”).
1. Попытался решить задачу №2, введя две константы:
iLine на число строк
iColumn на число столбцов
то есть количество строк не совпадает с количеством столбцов. В результате после компиляции, выводится не верное значение суммы 3-го столбца. В чем моя ошибка?
2. В примере решения задачи №2 в строке кода №35, я так понимаю вместо columnSum[rowNum]—— должно быть —–columnSum[columnNum] или я ошибаюсь?
ИМХО, если количество строк не совпадает с количеством столбцов, то нужно создавать два отдельных цикла для подсчета сумы строк и столбцов.
та же проблема была, вот такое выдумал.
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
const int strok = 2;
const int stolb = 3;
int array[strok][stolb] = {};
int isumm[strok] = {};
int isum[stolb] = {};
int s(0), st(0);
cout << "Заполните таблицу"<<endl;
for (int s = 0; s < strok; s++)
{
for (int st = 0; st < stolb; st++)
{
cout << "Введите значение " << s + 1 << "-й стройки и " << st + 1 <> array[s][st];
}
cout << endl;
}
for (int s = 0; s < strok; s++)
{
for (int st = 0; st < stolb; st++)
{
cout <<setw(5)<< array[s][st];
isumm[s]+= array[s][st];
isum[st]+= array[s][st];
}
cout << endl;
cout << endl;
}
for (int i = 0; i < strok; i++)
{
cout << i + 1 << "-ая строка cумма " << isumm[i] << " " << endl;
}
for (int i = 0; i < stolb; i++)
{
cout << i + 1 << "-ый столбец cумма " << isum[i] << " " << endl;
}
return 0;
}
А как заполнить прямоугольную матрицу состоящую только из нулей и единиц , имеющей N строк M столбцов
Привет. Решил вторую задачу. все работает как надо. Потом зашел посмотреть решение. Там тоже все ок. НО. Не понимаю зачем записывать сумму всех строк и всех столбцов в массивы когда можно записать в переменные? Какой в этом смысл? Вот мое решение. Делал без всяких красивостей.
#include
using namespace std;
int main()
{
int matrixSize = 3;
int arr[matrixSize][matrixSize] = {};
// Ввод двумерного массива с клавиатуры
for(int i = 0; i < matrixSize; i++)
{
for(int j = 0; j > arr[i][j];
}
}
// Вывод двумерного массива
for(int i = 0; i < matrixSize; i++)
{
for(int j = 0; j < matrixSize; j++)
{
cout<<"\t"<<arr[i][j];
}
cout<<endl;
}
// Вычисление и вывод суммы строк
for(int i = 0; i < matrixSize; i++)
{
int sum = 0;
for(int j = 0; j < matrixSize; j++)
{
sum += arr[i][j];
}
cout<<endl<<sum;
}
cout<<endl<<endl;
// вычисление и вывод суммы столбцов
for(int i = 0; i < matrixSize; i++)
{
int sum = 0;
for(int j = 0; j < matrixSize; j++)
{
sum += arr[j][i];
}
cout<<sum<<endl;
}
}
#include
using namespace std;
int main()
{
int matrixSize = 3;
int arr[matrixSize][matrixSize] = {};
// Ввод двумерного массива с клавиатуры
for(int i = 0; i < matrixSize; i++)
{
for(int j = 0; j > arr[i][j];
}
}
// Вывод двумерного массива
for(int i = 0; i < matrixSize; i++)
{
for(int j = 0; j < matrixSize; j++)
{
cout<<"\t"<<arr[i][j];
}
cout<<endl;
}
// Вычисление и вывод суммы строк
for(int i = 0; i < matrixSize; i++)
{
int sum = 0;
for(int j = 0; j < matrixSize; j++)
{
sum += arr[i][j];
}
cout<<endl<<sum;
}
cout<<endl<<endl;
// вычисление и вывод суммы столбцов
for(int i = 0; i < matrixSize; i++)
{
int sum = 0;
for(int j = 0; j < matrixSize; j++)
{
sum += arr[j][i];
}
cout<<sum<<endl;
}
}
Почему у меня код не правильно вставился?
Задан двумерный массив А из 5-и строк и 4-х столбцов. Составить программу, которая вычисляет значение произведения сумм строк.
#include
#include
using namespace std;
void main()
{
setlocale(LC_ALL, “ru”);
srand(time(NULL));
const int ROWS = 5;
const int COLS = 4;
int z = 0;
int x = 0;
int ms [ROWS][COLS]{};
int ms2 [ROWS]{};
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j z)
{
z = ms2[i];
x = i;
}
}
}
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
cout << ms[i][j] << "\t";
}
cout << "|" << "сумма " << i + 1 << " строки = " << ms2[i] << endl;
}
cout << "максимальное значение у " << x + 1 << " строки – " << z << endl;
}
задача №1:
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
const int RowCount = 3;
const int ColumnCount = 4;
int ourMatrix[RowCount][ColumnCount] = {};
for (int rowNum = 0; rowNum < RowCount; rowNum++)
{
for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
{
ourMatrix[rowNum][columnNum] = rowNum + columnNum;
cout << ourMatrix[rowNum][columnNum] << " ";
}
cout << endl;
}
return 0;
}