Дана целочисленная квадратная матрица порядка n. Найти номера строк: а) все элементы которых четны; б) в которых нет ни одного нулевого элемента. Приравнять к нулю все элементы на главной и побочной диагоналях. (С++)
using namespace std; int main() { setlocale(LC_ALL, "Russian"); int n; bool notEvenOrNulls = false; cout << "n = "; cin >> n; int even, nulls; int **A = new int*[n]; for (int i = 0; i < n; i++) A[i] = new int[n];
Answers & Comments
#include <time.h>
#include <stdlib.h>
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
int n;
bool notEvenOrNulls = false;
cout << "n = ";
cin >> n;
int even, nulls;
int **A = new int*[n];
for (int i = 0; i < n; i++)
A[i] = new int[n];
//Заполнение матрицы
cout << " *** Исходный массив *** " << endl;
srand(time(NULL));
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
A[i][j] = rand() % 10;
printf("%4d", A[i][j]);
}
printf("\n");
}
//Поиск номеров строк со всеми четными
cout << "№ строк со всеми четными = ";
for (int i = 0; i < n; i++) {
even = 0;
for (int j = 0; j < n; j++)
if (A[i][j] % 2 == 0) even++;
if (even == n) {
cout << i + 1 << " ";
notEvenOrNulls = true;
}
}
if (notEvenOrNulls == false) cout << "Таких строк нет";
cout << endl;
notEvenOrNulls = false;
//Поиск номеров строк без нулей
cout << "№ строк без нулей = ";
for (int i = 0; i < n; i++) {
nulls = 0;
for (int j = 0; j < n; j++)
if (A[i][j] == 0) nulls++;
if (nulls == 0) {
cout << i + 1 << " ";
notEvenOrNulls = true;
}
}
if (notEvenOrNulls == false) cout << "Таких строк нет";
cout << endl;
//Замена диагоналей на нули
cout << " *** Измененный массив *** " << endl;
for (int i = 0; i < n; i++) {
A[i][n - 1 - i] = 0;
for (int j = 0; j < n; j++)
if (i == j) A[i][j] = 0;
}
//Вывод матрицы
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
printf("%4d", A[i][j]);
printf("\n");
}
system("pause");
return 0;
}