Как исправить?
код программы:
uses crt; {раздел объявления внешних модулей}
label m1,m2;
var
n: integer;
x,y,b: real;
p: byte; {признак выполнения пункта n1}
begin
clrscr; { очистка экрана }
writeln('программа вычисления ');
{вывод на экран меню}
writeln('++');
writeln('| 1. ввод данных |');
writeln('| 2. вычисление функции и вывод результатов |');
writeln('| 3. завершение работы программы |');
writeln('++');
p: =0;
m1: writeln('введите пункт меню');
readln(n); {ввод номера пункта меню}
case n of
1:
begin {ввод данных}
m2: write('введите значение аргумента x=');
readln(x);
{проверка допустимого значения аргумента}
if x = 8 then
begin
writeln('x не может быть равным 0 по условию');
goto m2;
end;
p: =1; {пункт n1 выполнен}
end;
2: {вычисление значения функции}
begin
if p = 0 then
writeln('данные не введены, выполните пункт n1')
else
begin
{операторы вычисления и вывода значения функции}
y : = sqr(x) + 4*x - 8;
if x > 2 then
y : = 1/y;
writeln('при х=', x: 7: 2, ' y=', y: 7: 2)
end;
end;
3: exit {выход из программы}
end; {end case}
goto m1;
end. {конец программы}
// Внимание! Если программа не работает, обновите версию!
procedure PrintArr(f:Text; a:array of integer);
begin
foreach var x in a do Write(f,x,' ');
Writeln(f)
end;
begin
var fin:=OpenRead('input.txt');
var n:=ReadlnInteger(fin);
var a:=new integer[n];
for var i:=0 to n-1 do Read(fin,a[i]);
var fout:=OpenWrite('output.txt');
fin.Close;
PrintArr(fout,a);
var b:=a.Where(x->x.IsEven).ToArray;
PrintArr(fout,b);
var c:=a.Where(x->x.IsOdd).ToArray;
PrintArr(fout,c);
fout.Close
end.
Объяснение:
оретические исследования нашего соотечественника Андрея Андреевича Маркова (младшего) (1903-1979), выполненные в середине века, показали, что в общем случае алгоритмы должны содержать предписания двух видов:
1) предписания, направленные на непосредственное преобразование информации (функциональные операторы);
2) предписания, определяющие дальнейшее направление действий (логические операторы).
ример 1. Словесное описание алгоритма нахождения наибольшего общего делителя (НОД) пары натуральных чисел (алгоритм Евклида).
Чтобы найти НОД двух чисел, составьте таблицу из двух столбцов и назовите столбцы X и У. Запишите первое из заданных чисел в столбец X, а второе — в столбец У. Если данные числа не равны, замените большее из них на результат вычитания из большего числа меньшего. Повторяйте такие замены до тех пор, пока числа не окажутся равными, после чего число из столбца X считайте искомым результатом.
Построчная запись. Это запись на естественном языке, но с соблюдением некоторых дополнительных правил: