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.
Задачу №3 можно решить используя лишь 1 цикл с вложенным, место трёх, как в ответе.
К таким заявлениям нужно код прикреплять так-то
I agree, не стоит давать такие глупые решения задач новичкам, в том числе и мне. Нужно приучать людей с самого начала использовать меньше ненужных циклов, чтобы улучшить скорость выполнения программы..
Вот нормальное решение 3-го задания: cpp.sh/9zvl
Глупость написана (про “улучшить скорость выполнения программы”).
1. Попытался решить задачу №2, введя две константы:
iLine на число строк
iColumn на число столбцов
то есть количество строк не совпадает с количеством столбцов. В результате после компиляции, выводится не верное значение суммы 3-го столбца. В чем моя ошибка?
2. В примере решения задачи №2 в строке кода №35, я так понимаю вместо columnSum[rowNum]—— must be —–columnSum[columnNum] or I'm wrong?
IMHO, если количество строк не совпадает с количеством столбцов, то нужно создавать два отдельных цикла для подсчета сумы строк и столбцов.
та же проблема была, вот такое выдумал.
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
const int strok = 2;
const int stolb = 3;
int array[stroke][stolb] = {};
int isumm[stroke] = {};
int isum[stolb] = {};
int s(0), st(0);
cout << "Заполните таблицу"<<endl;
for (int s = 0; s < stroke; s )
{
for (int st = 0; st < stolb; st++)
{
cout << "Введите значение " << s + 1 << "-й стройки и " << st + 1 <> array[s][st];
}
cout << endl;
}
for (int s = 0; s < stroke; 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 < stroke; 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 столбцов
Hi. Решил вторую задачу. все работает как надо. Потом зашел посмотреть решение. Там тоже все ок. BUT. Не понимаю зачем записывать сумму всех строк и всех столбцов в массивы когда можно записать в переменные? Какой в этом смысл? Here is my solution. Делал без всяких красивостей.
#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 << " strings – " << from << 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;
}