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