Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {Написать программу выполнения следующего задания: из всех непрерывных участков массива а1,а2,…,аn, состоящих из нулей, выбрать наибольший по длине.
- Вывести индексы его начала и конца.
- Вариант первый, более очевидный, но работающий не со всеми вариантами входного массива}
- const
- Raz = 100; {констранта}
- type
- Tind = 1..Raz; {объявление типа «индекс»}
- Telem = integer; {объявление типа «элемент»}
- TMas = array[TInd] of Telem; {объявление массива}
- {===========================================}
- procedure Vvod(var Mas: TMas; n: TInd);{Процедура заполнения массива значениями}
- var
- i: TInd; {объявляем локальную перемнную типа "Индекс"}
- begin
- writeln('Введите ', n, ' чисел, среди которых есть нули'); {выводим на экран какую-нибудь подсказку для пользователя}
- for i := 1 to n do
- begin
- read(Mas[i]); {при помощи цикла заполняем массив}
- end;
- writeln; {пустой оператор ввода - переход на строку вниз}
- end;
- {===========================================}
- procedure Vivod(var Mas: TMas; n: TInd);{Процедура заполнения массива значениями}
- var
- i: TInd; {объявляем локальную перемнную типа "Индекс"}
- begin
- for i := 1 to n do
- begin
- writeln(i, ' ', Mas[i]);
- end;
- writeln; {пустой оператор ввода - переход на строку вниз}
- end;
- {===========================================}
- procedure Nul(var Mas: TMas; n: TInd);
- var
- i, j, inn: TInd;
- dlinna: integer;
- begin
- dlinna := 1;
- inn := 1;
- i := 1;
- while (i < n) do begin
- if Mas[i] = 0 then begin
- j := i+1;
- while (Mas[j] = 0) and (j <= n) do begin
- if dlinna <= (j - i + 1) then begin
- dlinna := (j - i + 1);
- inn := i;
- end;
- j := j + 1;
- end;
- i := inn + dlinna + 1;
- end else begin
- i := i + 1;
- end;
- end;
- writeln('Наибольшая последовательность нулей имеет длину : ', dlinna);
- writeln('Координата начала : ', inn);
- writeln('Координата конца : ', inn+dlinna-1);
- end;
- {===========================================}
- var{объявление глобальных переменных}
- n: Tind;
- Mas: Tmas;
- {===========================================}
- begin
- writeln('Укажите длину массива');
- readln(n);
- Vvod(Mas, n);
- Vivod(Mas, n);
- Nul(Mas, n);
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement