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

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

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

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

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

textual
Листинг программы
  1. const
  2.   mn=1000;
  3.   NY: array [Boolean] of String[3] = ('','не ');
  4. var
  5.   a: array [1..mn] of Byte;
  6.   n, i, j: Integer;
  7. begin
  8.   Assign(input,'input.txt'); Assign(output,'output.txt');
  9.   Reset(input); Rewrite(output);
  10.   repeat Write('N [1..',mn,']: '); ReadLn(n); until (n>=1) and (n<=mn);
  11.   for i:=1 to n do Read(a[i]);
  12.   i:=n; j:=1; while (a[i]=a[j]) and (i>j) do begin Dec(i); Inc(j); end;
  13.   WriteLn(NY[i>j],'симметрична');
  14.   Close(input); Close(output);
  15. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы