Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Листинг 7.5



#include <fstream.h>

int ser equals(int **a, const int m, const int n);

int main()

{

if stream fin (."matrix.txt", los :: in | ios:: nocreate);

if (!fin)

{

cout «"Нет файла matrix.txt" «endl;

return 0;

}

int m, n, 1,j;

fin» m» n;

int **a = new int *[m]; // выделение памяти

for (d = 0;i < m; i++)

a[i] = new int [n];

for ( i = 0;i < m; i++) // ввод нассива

for (j = 0; j < n) fin» a[i][j];

int line = ser_equals(a, m, n); // вызовфункции

if (line >= 0)cout «" Самая длинная серия в строке " «line;

else cout «" Серий одинаковых элементов нет ";

return 0;

}

int ser_equals ( int **а, const int m, const int n)

{

int I,j, count, line = -1, maxcount = 0;

for (1 - 0; 1< m; 1++)

{

count = 0;

for (j = 0; j < n - 1; j++)

{

if (a[i][j] == a[l][j + 1])

else

{

if (count > maxcount)

{

maxcount = count;

line = i;

}

count = 0;

}

}

if (count > maxcount)

{

maxcount = count;

line = i;

}

}

}

return line;

Алгоритм работы функции прост: в каждой строке выполняется сравнение сосед­них элементов (оператор 2). Если они равны, мы находимся внутри серии, при этом увеличиваем ее текущую длину. Она накапливается в переменной count, ко­торая обнуляется перед обработкой каждой строки (оператор 1). Если же элемен­ты не равны, это означает либо окончание серии, либо просто одиночный элемент (оператор 3). В этом случае надо посмотреть, не является ли данная серия самой длинной из рассмотренных и, если да, то запомнить ее длину и номер строки, в ко­торой она встретилась (оператор 4). Для подготовки к анализу следующих серий в этой же строке надо обнулить счетчик count. Аналогичная проверка после цикла просмотра строки (оператор 5) выполняется для серии, которая расположена в конце строки, поскольку в этом случае ветвь else выполняться не будет.

Если в массиве нет ни одной серии одинаковых элементов, функция вернет значе­ние, равное -1.





Дата публикования: 2015-10-09; Прочитано: 214 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...