Дана целочисленная прямоугольная матрица. Определить:
- номер первого из столбцов, содержащих хотя бы один нулевой элемент;
- характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик.
Код программы:
//--------------------------------------------------------------------------- #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[]) { randomize(); int n,m,i,j,nmin,buf_a,num=-1; //объявление long buf_sum; //переменных cout<<rus("Введите размерность массива:")<<endl; cout<<rus("\nВведите количество строк: n=");cin>>n;//ввод n cout<<rus("Введите количество столбцов: m=");cin>>m; //ввод m int **a=new int*[n]; //объявление двумерного for(i=0;i<n;i++)a[i]=new int [m]; //массива a long *sum=new long[n]; //объявление массива sum //--------------------------------------------------------------------------- cout<<rus("\nВведите элементы массива:")<<endl<<endl; for(i=0;i<n;i++) { sum[i]=0; for(j=0;j<m;j++) { a[i][j]=-10+random(20); if(a[i][j]<0&&(a[i][j]%2)==0) { sum[i]+=a[i][j]; } } } for(i=0;i<n;i++) { for(j=0;j<m;j++) cout<<setw(5)<<a[i][j]; cout<<" | "<<sum[i]<<endl; } //--------------------------------------------------------------------------- for(j=0;j<m;j++) //поиск { //номера столбца for(i=0;i<n;i++) //в котором if(a[i][j]==0) //находится хотя бы один 0 элемент num=j; //номер столбца if(-1!=num) break; } if(-1==num)cout<<rus("\nСтолбцов нет!")<<endl; else cout<<rus("\nНомер первого столбца содержащий хотя бы один 0 элемент: ")<<(num+1); //---------------------------------------------------------------------------- for(i=0;i<n-1;i++) { nmin=i; for(j=i+1;j<n;j++) if(sum[j]>sum[nmin]) nmin=j; buf_sum=sum[i]; sum[i]=sum[nmin]; sum[nmin]=buf_sum; for(j=0;j<m;j++) { buf_a=a[i][j]; a[i][j]=a[nmin][j]; a[nmin][j]=buf_a; } } cout<<rus("\nУпорядоченная матрица:"); cout<<endl<<endl; for(i=0;i<n;i++) { for(j=0;j<m;j++) cout<<setw(5)<<a[i][j]; cout<<" | "<<sum[i]<<endl; } getch(); return 0; } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text, bufrus); return bufrus; } //---------------------------------------------------------------------------
Результат работы программы: