Есть не законченый код для решения квадратного уравнения. Столкнулся с проблемой, если присвоить переменной тип string то readln(переменная) не будет читаться, если заменить на real, тоесть на число, то все работает, дело в том что мне нужно именно буквенное выражение. Что делать? program n_zigota;
Замените все свои Read() на ReadLn() и будет вам счастье.
Фишка в том, что процедура Read() оставляет в буфере клавиатуры смвол перевода строки, который при чтении в строковую переменную и приводит к такому эффекту.
Процедура же ReadLn() очищает буфер клавиатуры полностью. Для проверки достаточно заменить Read(c) на ReadLn(c) и программа остановится в ожидании второго ответа юзера.
program n_zigota;
const
awnser_1_1 = 1;
awnser_1_2 = 2;
awnser_1_3 = 3;
awnser_1_4 = 4;
var
a,b,c:real;
users_awnser_1:real;
users_awnser_2:string;
begin
writeln('Все ответы писать цифрами!');
writeln(' ');
writeln('Выберите квадратноe уравнениe: ');
writeln(' ');
writeln('1) ax^2+bx+c=0');
writeln('2) ax^2-bx+c=0');
writeln('3) ax^2+bx-c=0');
writeln('4) ax^2-bx-c=0');
writeln(' ');
write('Квадратное уравнение: ');
read(users_awnser_1);
writeln(' ');
if users_awnser_1 = awnser_1_1 then begin
write('Запишите переменную a: ');
read(a);
write('Запишите переменную b: ');
read(b);
write('Запишите переменную c: ');
read(c);
writeln(' ');
writeln('Ваше уравнение: ',a,'x^2+',b,'x+',c,'=0');
writeln('Верно?');
readln(users_awnser_2);
end