Определить, является ли последовательность, образованная заданными числами симметричной (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.
Объяснение кода листинга программы
- Установка начальных значений для переменных: 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;
- Открытие файлов для чтения и записи: Assign(input, 'input.txt'); Assign(output, 'output.txt'); Reset(input); Rewrite(output);
- Ввод количества чисел для обработки: Write('N [1..', mn, '] : '); ReadLn(n);
- Чтение чисел и сохранение их в массиве: 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д