S
STORM(c)
вот такая задача:
Сделать алгоритм и программу для обработки двухмерных массивов.
1.) Элементы матрицы A сделать с помощью генератора случайных чисел.
2.) Сделать новую матрицу B , в которой удалить с матрицы А ряд, в котором минимальный элемент среди элементов главной диагонали .
не все так просто оказалось как хотелось
вот что получилось сделать по задачке у меня:
так вот я не могу понять как можно в матрицу B загнать значения с матрицы A но без того рядка (тот где по диагонали мы находим минимальный элемет)...
думал сначала так получится сделать:
но оказалось плохо думал ...
дальше начал думать: записать сначала значения до row (ряд которого надо удалить), и после row , ага .... и что ж тада если минимум по диагонали например окажется последний ряд или первый ряд , то наверное будет не хорошая ошибочка....
а дальше "думалка" сломалась...
помогите разобратся пожалуйста ?
Сделать алгоритм и программу для обработки двухмерных массивов.
1.) Элементы матрицы A сделать с помощью генератора случайных чисел.
2.) Сделать новую матрицу B , в которой удалить с матрицы А ряд, в котором минимальный элемент среди элементов главной диагонали .
не все так просто оказалось как хотелось
вот что получилось сделать по задачке у меня:
Код:
#include <iostream>
#include <conio>
#include <iomanip>
using namespace std;
const n = 4;
const m = 4;
int main(int argc, char* argv[])
{
clrscr();
unsigned short arrayA[n][m];
unsigned short arrayB[n-1][m];
// генерим матрицу
for ( int i = 0; i < n; i++ )
{
for ( int j = 0; j < m; j++ )
{
arrayA[i][j] = rand() % 50; // случайным образом до 50
}
}
//------------------------------------
// Выводим матрицу А на дисплей
cout << "Matrix A: \n" << endl;
for( int i = 0; i<n; i++ )
{
for( int j = 0; j < m; j++ )
cout << setw(4) << arrayA[i][j];
cout << "\n\n";
}
//------------------------------------
// ищем на главной диагонали минимальный элемент
unsigned short min;
int row;
min = arrayA[0][0]; // first
for ( int i = 0; i < n; i++ )
{
for ( int j = 0; j < m; j++ )
{
if ( min > arrayA[i=i+1][j=i+1] ) // ищем по диагонали минимум
{
min = arrayA[i][j]; // минимальный елемент по диагонали
row = i; // запоминаем ряд который надо del
}
}
}
//------------------------------------
// а тут надо сделать матрицу B без рядка в котором минимальный элемент по диагонали в матрице А , только вот как ? я затрудняюсь :confused:
cout << "min po diagonali: " << min;
cout << " row : " << row << endl;
getch();
return 0;
}
так вот я не могу понять как можно в матрицу B загнать значения с матрицы A но без того рядка (тот где по диагонали мы находим минимальный элемет)...
думал сначала так получится сделать:
Код:
....
for ( int i = 0; i < n; i++)
{
for ( int j = 0; j < m; j++ )
{
if (row != i )
{
arrayB[i][j] = arrayA[i][j];
}
}
}
....
![Frown :( :(](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f641.png)
дальше начал думать: записать сначала значения до row (ряд которого надо удалить), и после row , ага .... и что ж тада если минимум по диагонали например окажется последний ряд или первый ряд , то наверное будет не хорошая ошибочка....
а дальше "думалка" сломалась...
![Big grin :D :D](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f600.png)