
Void main()
{
int k, i, j, N, a[20][20];
cout<<”N= “;
cin>>N;
cout<<”M= “;
cin>>M;
cout<<”Input Matrix A”<<endl;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
cin>>a[i][j];
for(i=k=0; i<N; i++)
{
//елемент розташований на головній діагоналі
if (a[i][j]>0) k++;
//елемент розташований на побічній діагоналі
if (a[i][N-i-1]>0) k++;
}
for(i=1; i<N-1; i++)
{
//елемент знаходиться в нульовому рядку
if (a[0][i]>0) k++;
//елемент знаходиться в останньому рядку
if (a[N-1][i]>0) k++;
//елемент знаходиться в нульовому стовпці
if (a[i][0]>0) k++;
//елемент знаходиться в останньому стовпці
if (a[i][N-1]>0) k++;
}
//якщо елемент,розташований на перетині діагоналей, підраховано двічі,
//то зменшити обчислене значення на один.
if ((N%2!=0)&&(a[N/2][N/2]>0))k--;
cout<<”k=”<<k<<endl;
}
Приклад.
Перевірити, чи є задана квадратна матриця одиничною. Одиничною називають матрицю, у якої елементи головної діагоналі – одиниці, а решта елементів – нулі.
# include<iostream.h>
Void main()
{
int pr, i, j, N, a[20][20];
cout<<”N= “;
cin>>N;
cout<<”M= “;
cin>>M;
cout<<”Input Matrix A”<<endl;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
cin>>a[i][j];
//Припустимо, що матриця одинична, і привласнимо змінній pr значення 1
//(істина). Якщо значення цієї змінноїпри виході з циклу не
//зміниться, це буде означати, що матриця дійсно одинична.
for(pr=1, i=0; i<N; i++)
for(j=0; j<N; j++)
if (((i==j)&& (a[i][j]!=1)) || ((i!=j)&&(a[i][j]!=0)))
//якщо елемент розташований на головній діагоналі і не дорівнює //одиниці чи елемент розташований не на головній діагоналі і не //дорівнює нулю, то
{
//змінній pr привласнити значення 0 (помилково), це буде означати,що
//матриця не є одиничною, та вийти з циклу
pr=0;
break;
}
//Перевірка значення змінної pr та вивід відповідного повідомлення.
if (pr) cout<<”Single Matrix \n”;
else cout<<”No Single Matrix \n”;
}
Завдання для самостійного вирішення:
Дана квадратная матрица порядка n (n рядків, n стовпців). Знайти найбільше значення з елементів, розташованих у замальованих частинах матриць.