Вариант 18

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

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

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

//---------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
#include<windows.h>
#include<vcl.h>
#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
char *rus(const char *text);//объявление функции для распознавания русских букв 
int main(int argc, char* argv[])
 {
  int n,m,i,j,cnt=0,jpos=-1,maxcnt=0,jcnt=-1;//объявление переменных
  cout<<rus("Введите размерность массива:")<<endl;
  cout<<rus("\nВведите количество строк:    n=");cin>>n;//ввод кол строк
  cout<<rus("Введите количество столбцов: m=");cin>>m;  //ввод кол столбцов
  int **a=new int*[n];             //объявление двумерной
  for(i=0;i<n;i++)a[i]=new int [m];  //матрицы  а
  cout<<rus("\nВведите элементы массива:")<<endl<<endl;
  randomize();
  for(i=0;i<n;i++)
  {
   for(j=0;j<m;j++)
   {
    a[i][j]=-7.5+random(11.1);   //случайное заполнение и вывод матрицы
    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)    //хотя бы один 0 элемент
     {
      cnt++;          //счетчик
      break;
     }
   }
  cout<<rus("\nКоличество строк содержащих хотя бы один 0 элемент: ")<<cnt<<endl;//вывод
  for(j=0;j<m;j++)            //поиск
   {
    cnt=0;                    //номера
    for(i=0;i<n-1;i++)
     {                        //столбца
      if(a[i][j]==a[i+1][j])
      cnt++;                  //в котором
      else
       {                      //находится
        if(cnt>maxcnt)
         {                    //самая
          maxcnt=cnt;
          jpos=j;             //длинная
          jcnt++;
         }                    //серия
        cnt=0;
       }                      //одинаковых
     }
    if(cnt>maxcnt)            //элементов
     {
      maxcnt=cnt;
      jpos=j;
      jcnt++;                //счетчик
     }
   }
  cout<<rus("Номер столбца, в котором находится самая длинная серия одинаковых элементов: ");
  if(jcnt>=0) cout<<(jpos+1);                     //вывод номера столбца
  else cout<<rus("\nСерии одинаковых элементов нет!")<<endl;
  getch();
  return 0;
 }
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text, bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

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

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

Вариант 17
Вариант 19
error: Content is protected !!