Вариант 5

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

  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,q,w,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];
  int **buf_a=new int*[n];
  for(i=0;i<n;i++)buf_a[i]=new int[n];
  long unsigned *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]=-1+random(10);
      cout<<setw(5)<<a[i][j];
     }
    cout<<endl;
   }
//---------------------------------------------------------------------------
  cout<<rus("\nСумма элементов в столбцах, которые не содержать отрицательных элементов:\n\n");
  for(j=0;j<n;j++)
   {
    all_posit=true;
    sum[j]=0;
    for(i=0;i<n;i++)
    if(a[i][j]<0)
     {
      all_posit=false;
      sum[j]=0;
      break;
     }
    if(all_posit)
     {
      for(i=0;i<n;i++)
      sum[j]+=a[i][j];
     }
   }
  for(i=0;i<n;i++)
   {
    for(j=0;j<n;j++)
    cout<<setw(5)<<a[i][j];
    cout<<endl;
   }
  for(i=0;i<n;i++)cout<<setw(5)<<"=";cout<<endl;
  for(i=0;i<n;i++)cout<<setw(5)<<sum[i];
//---------------------------------------------------------------------------
 for(i=q=0;i<n,q<n;i++,q++)           //преобразование матрицы
   {                                  //начало и конец
    for(j=n-1,w=0;j>=0,w<n;j--,w++)   //каждой строки матрицы
     {                                //меняются местами
      buf_a[q][w]=a[i][j];
     }
   }
//-------------------------
  for(q=n-1,m=0;q>0;q--)
   {
    s1=0;
    for(w=0;w<n-1;w++)      //сумма элементов диагоналей
     {                      //расположенных
      for(k=q+w;k<n;)       //ниже главной диагонали
       {                    //матрицы
        s1+=buf_a[k][w];
        break;
       }
     }
    sums_of_diag[m++]=s1;
    cnt++;
   }
//-------------------------
  s1=0;
  for(q=0;q<n;q++)
   {                          //сумма элементов
    for(w=n-1;w>=0;w--)        //расположенных на
    if(q==w)                  //главной диагонали
    s1+=buf_a[q][w];
   }
  sums_of_diag[m++]=s1;
  cnt++;
//-------------------------
  for(w=1,m=cnt;w<n;w++)
   {
    s1=0;
    for(q=0;q<n-1;q++)      //сумма элементов диагоналей
     {                      //расположенных выше
      for(k=q+w;k<n;)       //главной диагонали
       {                    //матрицы
        s1+=buf_a[q][k];
        break;
       }
     }
    sums_of_diag[m++]=s1;
    cnt++;
   }
  cout<<rus("\n\nКоличество просуммированных диагоналей: ")<<cnt<<endl;
  cout<<rus("Сумма элементов диагоналей, параллельных побочной диагонали матрицы:\n\n");
  for(m=cnt-1;m>=0;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;
 }
//---------------------------------------------------------------------------

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

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

Вариант 4
Вариант 6
error: Content is protected !!