Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {Написать программу выполнения следующего задания: из всех непрерывных участков массива а1,а2,…,аn, состоящих из нулей, выбрать наибольший по длине.
- Вывести индексы его начала и конца.
- Вариант 2, работающий}
- 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, i_start, max_i_start: TInd;
- num_zeros, max_num_zeros: integer;
- begin
- num_zeros:=0;
- max_num_zeros:=0;
- i_start:=1;
- max_i_start:=1;
- i:=1;
- while (i<n) do begin
- num_zeros:=0;
- i_start:=i;
- while (Mas[i]=0)and(i<=n) do begin
- num_zeros:=num_zeros+1;
- i:=i+1;
- end;
- if num_zeros > max_num_zeros then begin
- max_num_zeros := num_zeros;
- max_i_start := i_start;
- end;
- i:=i+1;
- end;
- writeln('Наибольшая последовательность нулей имеет длинну : ', max_num_zeros);
- writeln('Координата начала : ', max_i_start);
- writeln('Координата конца : ', max_num_zeros+max_i_start-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