Вариант 6

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

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

ПРИМЕЧАНИЕ———————————————————————————————————
Матрица А имеет седловую точку Аij, если Аij является минимальным элементом
в i-й строке и максимальным в j-м столбце.
——————————————————————————————————————————

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

//---------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
#include<iomanip.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[])
 {
  int n,m,i,j,sum=0,ipos=0,jpos=0,maxmin=0,minmax=0; //объявление переменных
  cout<<rus("Введите размерность массива:")<<endl;
  cout<<rus("\nВведите количество строк:    n=");cin>>n;//ввод кол-ва строк
  cout<<rus("Введите количество столбцов: m=");cin>>m; //ввод кол-ва столбцов
  randomize();
  int **a=new int*[n];             // объявление
  for(i=0;i<n;i++)a[i]=new int [m]; // двумерного массива
  int *min=new int[n];     // объявление массива для хранения минимальных
  int *max=new int[m];     // и максимальных значений матрицы
  cout<<rus("\nВведите элементы массива:")<<endl<<endl;
  for(i=0;i<n;i++)
  for(j=0;j<m;j++)a[i][j]=-5+random(20); //заполнение матрицы случайными числами
  for(i=0;i<n;i++)
   {
    for(j=0;j<m;j++)
    cout<<setw(4)<<a[i][j];
    cout<<endl;
   }
  for(i=0;i<n;i++)      //поиск
   {                    //отрицательного
    for(j=0;j<m;j++)
    if(a[i][j]<0)      //элемента
     {
      for(j=0;j<m;j++)
      sum+=a[i][j];    //суммирование
      cout<<endl;
      cout<<rus("Сумма элементов в ");//вывод
      cout<<(i+1)<<rus(" строке: ")<<sum;                //количества
      sum=0;
     }
   }
  for(i=0;i<n;i++)
   {
    min[i]=a[i][0];//принимаем за минимальный элемент все 1-е значения строк
   }
  for(i=0;i<n;i++)
   {                    //поиск
    for(j=0;j<m-1;j++)   //минимального
    if(a[i][j+1]<min[i])  //элемента
     {                    //по
      min[i]=a[i][j+1];  //строкам
     }
   }
  cout<<endl;
  cout<<rus("\nМинимальный элемент по строкам:")<<endl<<endl;
  for(i=0;i<n;i++)cout<<setw(4)<<min[i]<<endl;//вывод минимальных элементов
  for(j=0;j<m;j++)
   {
    max[j]=a[0][j];//принимаем за максимальный элемент все 1-е значения столбцов
   }
  for(j=0;j<m;j++)
   {                      //поиск
    for(i=0;i<n-1;i++)    //максимального
    if(a[i+1][j]>max[j])  //элемента
     {                    //по
      max[j]=a[i+1][j];   //столбцам
     }
   }
  cout<<endl;
  cout<<rus("Максимальный элемент по столбцам:")<<endl<<endl;
  for(j=0;j<m;j++)cout<<setw(4)<<max[j];//вывод максимальных элементов

  minmax=min[0];      //поиск
  for(i=0;i<n;i++)    //максимального
  if(min[i]>minmax)   //элемента
   {                  //из минимальных
    minmax=min[i];    //по строкам
    ipos=i;           //запоминаем позицию элемента
   }
  cout<<rus("\n\nМаксимальный из минимальных по строкам: ")<<minmax;//вывод
  maxmin=max[0];      //поиск
  for(j=0;j<m;j++)    //минимального
  if(max[j]<maxmin)   //элемента
   {                  //из максимальных
    maxmin=max[j];    //по столбцам
    jpos=j;           //запоминаем позицию элемента
   }
  cout<<rus("\nМинимальный из максимальных по столбцам: ")<<maxmin; //вывод
  cout<<rus("\nСедловая точка: ")<<a[ipos][jpos];//вывод седловой точки
  getch();
  return 0;
 }
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text, bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

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

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

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