Вариант 19

Дана целочисленная квадратная матрица. Определить:

  1. сумму элементов в тех строках, которые не содержат отрицательных элементов;
  2. минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

Код программы:

//---------------------------------------------------------------------------
#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;
 }
//---------------------------------------------------------------------------

Результат работы программы:

Результат работы. Девятнадцатый вариант. Двумерные массивы

Вариант 18
Вариант 20
error: Content is protected !!