Дана целочисленная квадратная матрица. Определить:
- произведение элементов в тех строках, которые не содержат отрицательных элементов;
- максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
Код программы:
//--------------------------------------------------------------------------- #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,maxsum_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 *pro=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(13); cout<<setw(4)<<a[i][j]; } cout<<endl; } //--------------------------------------------------------------------------- cout<<rus("\nПроизведение элементов в строках, которые не содержат отрицательных элементов:\n\n"); for(i=0;i<n;i++) { all_posit=true; pro[i]=1; for(j=0;j<n;j++) if(a[i][j]<0) { all_posit=false; pro[i]=0; break; } if(all_posit) { for(j=0;j<n;j++) pro[i]*=a[i][j]; } } for(i=0;i<n;i++) { for(j=0;j<n;j++) cout<<setw(4)<<a[i][j]; cout<<" | "<<pro[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(4)<<sums_of_diag[m]; //--------------------------------------------------------------------------- cout<<rus("\n\nМаксимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы: "); maxsum_of_diag=sums_of_diag[0]; for(m=0;m<cnt;m++) { if(sums_of_diag[m]>maxsum_of_diag) maxsum_of_diag=sums_of_diag[m]; } cout<<maxsum_of_diag; getch(); return 0; } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text, bufrus); return bufrus; } //---------------------------------------------------------------------------
Результат работы программы: