Определить, является ли последовательность, образованная заданными числами симметричной (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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д