Определить, является ли последовательность, образованная заданными числами симметричной (while/repeat) - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Несколько школьников выстроились в шеренгу. Для каждого школьника известен день его рождения. Требуется: 1) Определить, является ли последовательность, образованная заданными числами: симметричной(через цикл ПОКА или ДО)
program fasd;
var a:array[1..31] of integer;
n,i,b,c,k:longint;
begin
repeat
write('введите количество учеников не больше 100 000='); readln(n);
until(n>0) and (n<100000);
for i:=1 to n do
begin
writeln('введите день рождения в промежутке от 1 до 31');
write('гзҐ*ЁЄ*[',i,']='); readln(a[i]);
if (a[i]>31) then while (a[i]>31) do begin
writeln('гзҐ*ЁЄ* [',i,']=');
readln(a[i]);
end
end;
i:=n div 2;
while (i>0) and (a[i]=a[n-i+1]) do i:=i-1;
write('симметрично'); if i>0 then write ('не');writeln('симметрично*');
readln;
end.
организовать чтение исходных данных из файла данных и вывод результата в файл данных.

Решение задачи: «Определить, является ли последовательность, образованная заданными числами симметричной (while/repeat)»

textual
Листинг программы
const
  mn=1000;
  NY: array [Boolean] of String[3] = ('','не ');
var
  a: array [1..mn] of Byte;
  n, i, j: Integer;
begin
  Assign(input,'input.txt'); Assign(output,'output.txt');
  Reset(input); Rewrite(output);
  repeat Write('N [1..',mn,']: '); ReadLn(n); until (n>=1) and (n<=mn);
  for i:=1 to n do Read(a[i]);
  i:=n; j:=1; while (a[i]=a[j]) and (i>j) do begin Dec(i); Inc(j); end;
  WriteLn(NY[i>j],'симметрична');
  Close(input); Close(output);
end.

Объяснение кода листинга программы

  1. Установка начальных значений для переменных: mn := 1000; NY := array [Boolean] of String[3] = ('','не '); a := array [1..mn] of Byte; n, i, j := Integer; a[1] := 0; a[2] := 1; a[3] := 1;
  2. Открытие файлов для чтения и записи: Assign(input, 'input.txt'); Assign(output, 'output.txt'); Reset(input); Rewrite(output);
  3. Ввод количества чисел для обработки: Write('N [1..', mn, '] : '); ReadLn(n);
  4. Чтение чисел и сохранение их в массиве: for i := 1 to n do Read(a[i]);
  5. Поиск центра симметрии массива: i := n; j := 1; while (a[i] = a[j]) and (i > j) do begin Dec(i); Inc(j); end;
  6. Вывод сообщения о результате: WriteLn(NY[i > j], 'симметрична');
  7. Закрытие файлов: Close(input); Close(output);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы