Консультация № 199463
29.10.2020, 03:32
0.00 руб.
0 1 1
Здравствуйте! Прошу помощи в следующем вопросе:

Даны натуральное число m, целые числа a_1,...,a_m и целочисленная квадратная матрица порядка m. Строку с номером i матрицы назовем отмеченной, если a_i > 0 , и неотмеченной в противном случае. Нужно все элементы, расположенные в отмеченных строках матрицы, преобразовать по правилу: отрицательные элементы заменить на –1, положительные – на 1, а нулевые оставить без изменения.

Обсуждение

давно
Студент
400828
51
02.11.2020, 12:37
общий
это ответ
Здравствуйте, neznaikalunniy!
Решение может выглядеть так:
Код:

#include <stdlib.h>
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;

int main(int argc, char** argv) {
int m;
cout << "Input m: ";
cin >> m;
cout << "Array a:\n";
srand(time(0));
int * a = new int [m];
for(int i=0; i<m; i++){
a[i]=rand()%21-10; // Заполняем случайными числами из интервала [-10; 10]. Может Вам здесь потребуется клавиатурный ввод (cin)
cout << setw(4) << a[i];//setw(4) - по 4 позиции на число
}
cout << endl;
cout << "Array matrix:\n";
int * * matrix = new int * [m];
for(int i=0; i<m; i++){
matrix[i]=new int [m];
for(int j=0; j<m; j++){
matrix[i][j]=rand()%21-10; // Заполняем случайными числами из интервала [-10; 10]. Может Вам здесь потребуется клавиатурный ввод (cin)
cout << setw(4) << matrix[i][j];
}
cout << endl;
}
for(int i=0; i<m; i++){
if(a[i]>0){ // i-я строка матрицы отмечена
for(int j=0; j<m; j++){
if(matrix[i][j]<0){
matrix[i][j]=-1;
}
if(matrix[i][j]>0){
matrix[i][j]=1;
}
}
}
}
cout << "Array matrix result:\n";
for(int i=0; i<m; i++){
for(int j=0; j<m; j++){
cout << setw(4) << matrix[i][j];
}
cout << endl;
}
for(int i=0; i<m; i++){
delete []matrix[i];
}
delete []matrix;
system("pause");
return 0;
}

Об авторе:
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Форма ответа