Вариант 8

Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов.

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

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

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

Вариант 7
Вариант 9
error: Content is protected !!