Дана вещественная квадратная матрица:
- путем перестановки элементов добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине — в позиции (2,2), следующий по величине — в позиции (3,3) и т. д., заполнив таким образом всю главную диагональ;
- найти номер первой из строк, не содержащих ни одного положительного элемента.
Код программы:
//--------------------------------------------------------------------------- #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; } //---------------------------------------------------------------------------
Результат работы программы: