Дана целочисленная квадратная матрица. Определить:
- сумму элементов в тех строках, которые не содержат отрицательных элементов;
- минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
Код программы:
//--------------------------------------------------------------------------- #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,k,cnt=0,s1,minsum_of_diag; bool all_posit; cout<<rus("Введите размерность массива:")<<endl; cout<<rus("Введите количество строк и столбцов: n=");cin>>n; int **a=new int*[n]; for(i=0;i<n;i++)a[i]=new int[n]; unsigned long *sum=new unsigned long[n]; int *sums_of_diag=new int[m]; //--------------------------------------------------------------------------- cout<<rus("\nВведите элементы массива:\n\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) { a[i][j]=-2+random(10); cout<<setw(5)<<a[i][j]; } cout<<endl; } //--------------------------------------------------------------------------- cout<<rus("\nСумма элементов в строках, которые не содержать отрицательных элементов:\n\n"); for(i=0;i<n;i++) { all_posit=true; sum[i]=0; for(j=0;j<n;j++) if(a[i][j]<0) { all_posit=false; sum[i]=0; break; } if(all_posit) { for(j=0;j<n;j++) sum[i]+=a[i][j]; } } for(i=0;i<n;i++) { for(j=0;j<n;j++) cout<<setw(5)<<a[i][j]; cout<<" | "<<sum[i]<<endl; } //--------------------------------------------------------------------------- for(i=n-1,m=0;i>0;i--) { s1=0; for(j=0;j<n-1;j++) //сумма элементов диагоналей { //расположенных for(k=i+j;k<n;) //ниже главной диагонали { //матрицы s1+=a[k][j]; break; } } sums_of_diag[m++]=s1; cnt++; } //------------------------- s1=0; for(i=0;i<n;i++) { //сумма элементов for(j=0;j<n;j++) //расположенных на if(i==j) //главной диагонали s1+=a[i][j]; } sums_of_diag[m++]=s1; cnt++; //------------------------- for(j=1,m=cnt;j<n;j++) { s1=0; for(i=0;i<n-1;i++) //сумма элементов диагоналей { //расположенных выше for(k=i+j;k<n;) //главной диагонали { //матрицы s1+=a[i][k]; break; } } sums_of_diag[m++]=s1; cnt++; } cout<<rus("\nКоличество просуммированных диагоналей: ")<<cnt<<endl; cout<<rus("Суммы элементов диагоналей, параллельных главной диагонали матрицы:\n\n"); for(m=0;m<cnt;m++) cout<<setw(5)<<sums_of_diag[m]; //--------------------------------------------------------------------------- cout<<rus("\n\nМинимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы: "); minsum_of_diag=sums_of_diag[0]; for(m=0;m<cnt;m++) { if(sums_of_diag[m]<minsum_of_diag) minsum_of_diag=sums_of_diag[m]; } cout<<minsum_of_diag; getch(); return 0; } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text, bufrus); return bufrus; } //---------------------------------------------------------------------------
Результат работы программы: