Условие 1. Заполнить матрицу A размерностью NхN так, чтобы на диагоналях располагались 1, а остальные элементы были равны 0.
Составим блок-схему решения задачи (рисунок 5.3)
Рисунок 5.3 —Блок-схема решения задачи
Код программы представлен ниже:
# include <iostream.h>
int main () {
int i,j,N;
int a[10] [10];
cout<< " Vvedi N= ";
cin >> N;
for (i=0; i<N; i++){
for (j=0; j<N; j++)
if (i==j || i+j+1==N)
a[i][j]=1; else a[i][j]=0;}
cout<< " Maccub rezalt "<< endl;
for (i=0; i<N;i++) {
for (j=0;j<N;j++) {
cout<< a[i][j] << " ";}
cout<< "\n";}
system ("pause");
return 0;}
Результат работы программы представлен на рисунке 5.4.
Рисунок 5.4 — Результат работы программы
Далее в рассмотренных примерах укажем основной алгоритм решения, опустив описание и ввод данных.
Условие 2. Найти минимальный и максимальный элементы матрицы и их координаты.
min=max=a[0][0];
imin=jmin=imax=jmax=0;
for (i=0; i<n; i++)
for (j=0; j<m; j++)
{
if (a[i][j]<min) { min=a[i][j]; imin=i; jmin=j; }
Else
if (a[i][j]>max) { max=a[i][j]; imax=i; jmax=j; }
}
Условие 3. Упорядочить строки матрицы по неубыванию их максимальных элементов.
|
|
for (i=0; i<n; i++)
{ // поиск максимальных элементов в строках и занесение их в массив b
b[i]=a[i][0];
for (j=1; j<m; j++)
if (a[i][j]>b[i]) b[i]=a[i][j];
}
//сортировка строк матрицы по максимальному элементу
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
for (k=0; k<m; k++)
{
t=a[i][k];
a[i][k]=a[j][k];
a[j][k]=t;
} }