Advertisement
Domerk

Вариант2

Jan 3rd, 2013
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.03 KB | None | 0 0
  1. {Написать программу выполнения следующего задания: из всех непрерывных участков массива а1,а2,…,аn, состоящих из нулей, выбрать наибольший по длине.
  2. Вывести индексы его начала и конца.
  3. Вариант 2, работающий}
  4.  
  5. const
  6.   Raz = 100; {констранта}
  7.  
  8. type
  9.   Tind = 1..Raz; {объявление типа «индекс»}
  10.   Telem = integer; {объявление типа «элемент»}
  11.   TMas = array[TInd] of Telem; {объявление массива}
  12. {===========================================}
  13. procedure Vvod(var Mas: TMas; n: TInd);{Процедура заполнения массива значениями}
  14. var
  15.   i: TInd; {объявляем локальную перемнную типа "Индекс"}
  16. begin
  17.   writeln('Введите ', n, ' чисел, среди которых есть нули'); {выводим на экран какую-нибудь подсказку для пользователя}
  18.   for i := 1 to n do
  19.   begin
  20.     read(Mas[i]); {при помощи цикла заполняем массив}
  21.   end;
  22.   writeln; {пустой оператор ввода - переход на строку вниз}
  23. end;
  24. {===========================================}
  25. procedure Vivod(var Mas: TMas; n: TInd);{Процедура заполнения массива значениями}
  26. var
  27.   i: TInd; {объявляем локальную перемнную типа "Индекс"}
  28. begin
  29.   for i := 1 to n do
  30.   begin
  31.     writeln(i, '   ', Mas[i]);
  32.   end;
  33.   writeln; {пустой оператор ввода - переход на строку вниз}
  34. end;
  35. {===========================================}
  36. procedure Nul(var Mas: TMas; n: TInd);
  37. var
  38. i, i_start, max_i_start: TInd;
  39. num_zeros, max_num_zeros: integer;
  40. begin
  41. num_zeros:=0;
  42. max_num_zeros:=0;
  43. i_start:=1;
  44. max_i_start:=1;
  45. i:=1;
  46. while (i<n) do begin
  47.        num_zeros:=0;
  48.        i_start:=i;
  49.               while (Mas[i]=0)and(i<=n) do begin
  50.                      num_zeros:=num_zeros+1;
  51.                      i:=i+1;
  52.               end;
  53.              
  54.               if num_zeros > max_num_zeros then begin      
  55.                         max_num_zeros := num_zeros;
  56.                         max_i_start := i_start;
  57.               end;    
  58.               i:=i+1;
  59. end;              
  60.  
  61.   writeln('Наибольшая последовательность нулей имеет длинну : ', max_num_zeros);
  62.   writeln('Координата начала : ', max_i_start);
  63.   writeln('Координата конца : ', max_num_zeros+max_i_start-1);
  64. end;
  65. {===========================================}
  66. var{объявление глобальных переменных}
  67.   n: Tind;
  68.   Mas: Tmas;
  69. {===========================================}
  70. begin
  71.  
  72.   writeln('Укажите длину массива');
  73.   readln(n);
  74.   Vvod(Mas, n);
  75.   Vivod(Mas, n);
  76.   Nul(Mas, n);
  77.   readln;
  78. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement