Вариант 15

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

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

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

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

Вариант 14
Вариант 16
error: Content is protected !!