Вариант 17

Дана вещественная квадратная матрица:

  1. путем перестановки элементов добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине — в позиции (2,2), следующий по величине — в позиции (3,3) и т. д., заполнив таким образом всю главную диагональ;
  2. найти номер первой из строк, не содержащих ни одного положительного элемента.

Код программы:

//---------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<windows.h>
#include<iomanip.h>
#include<vcl.h>
#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
char *rus(const char *text);
int main(int argc, char* argv[])
 {
  int n,i,j,imax,jmax,iter,inum=-1;
  float max;
  bool not_poz;
  randomize();
  cout<<rus("Введите размерность квадратного массива: ");cin>>n;
  float **a=new float*[n];
  for(i=0;i<n;i++)a[i]=new float [n];
//---------------------------------------------------------------------------
  cout<<rus("Введите элементы массива:")<<endl<<endl;
   for(i=0;i<n;i++)
    {
     for(j=0;j<n;j++)
      {
       a[i][j]=-7.5+random(11.1);
       cout<<setw(6)<<a[i][j];
      }
     cout<<endl;
    }
//---------------------------------------------------------------------------
//поиск первой из строк, не содержащего ни одного положительного элемента
  for(i=0;i<n;i++)
   {
    not_poz=true;
    for(j=0;j<n;j++)
    if(a[i][j]>0)
     {
      not_poz=false;
      break;
     }
    if(not_poz)
     {
      inum=i;
      break;
     }
   }
  if(-1==inum)cout<<rus("\nСтрок не содержащих ни одного положительного элемента НЕТ!")<<endl;
  else cout<<rus("\nНомер первой из строк не содержащего ни одного положительного элемента: ")<<(inum+1)<<endl;
//---------------------------------------------------------------------------
//перестановка элементов матрицы
  for(iter=0;iter<n;iter++)
   {
    imax=0;
    jmax=1;
    for(i=0;i<n;i++)
     {
      for(j=0;j<n;j++)
       {
        if(!(i==j&&i<iter))
         {
          if(a[i][j]>a[imax][jmax])
           {
            imax=i;
            jmax=j;
           }
         }
       }
     }
    max=a[iter][iter];
    a[iter][iter]=a[imax][jmax];
    a[imax][jmax]=max;
   }
//---------------------------------------------------------------------------
//вывод матрицы
cout<<rus("\nПерестановленная матрица с максимальными элементами по диагонали:\n");     
    cout<<endl;
    for(i=0;i<n;i++)
     {
      for(j=0;j<n;j++)
       {
        cout<<setw(6)<<a[i][j];
       }
      cout<<endl;
     }
     
  getch();
  return 0;
 }
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text, bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

Результат работы программы:

Результат работы. Семнадцатый вариант. Двумерные массивы

Вариант 16
Вариант 18
error: Content is protected !!