Задаю три массива: вопросы викторины, верные ответы, ответы, которые будут введены участниками. Ответы в основном из одного - двух слов. Все вопросы и ответы ввожу присваиванием, но когда пишу цикл на ввод ответа, то первый раз цикл срабатывает нормально, а последующие разы программа не требует ввода, то есть оператор read не работает. Что я сделала не так? Вот программа:
program m81337154u;
var i: integer;
ans:array [1..12] of string;
quest:array [1..12] of string;
answ:array [1..12] of string;
begin
writeln ('');
ans[1]:='';
ans[2]:='';
ans[3]:='';
ans[4]:='';
ans[5]:='';
ans[6]:='';
ans[7]:='';
ans[8]:='';
ans[9]:='';
ans[10]:='';
ans[11]:='';
ans[12]:='';
quest[1]:='';
quest[2]:='';
quest[3]:='';
quest[4]:='';
quest[5]:='';
quest[6]:='';
quest[7]:='';
quest[8]:='';
quest[9]:='';
quest[10]:='';
quest[11]:='';
quest[12]:='';
for i:=1 to 12 do begin
writeln ('Вопрос номер ', i);
writeln (quest[i]);
write ('Ваш ответ - ');
read (answ[i]);
if answ[i]=ans[i] then
writeln ('Ответ верный') else
writeln ('Ответ неверный, попробуйте снова');
writeln;
end;
writeln ('Congrats');
end.
Где-то есть ошибка? Или паскаль никогда не повторяет read в цикле?
Answers & Comments
Verified answer
Program p;var i: integer;
quest:array [1..2] of string;
ans:array [1..2] of string;
answ:array [1..2] of string;
begin
quest[1]:='20*2=';
quest[2]:='3*5=';
ans[1]:='40';
ans[2]:='15';
for i:=1 to 2 do begin
writeln ('Вопрос номер ', i);
writeln (quest[i]);
write ('Ваш ответ - ');
readln (answ[i]);
while answ[i]<>ans[i] do
begin
writeln ('Ответ неверный, попробуйте снова');
readln(answ[i]);
end;
writeln ('Ответ верный');
writeln;
end;
writeln ('Congrats');
end.
Пример:
Вопрос номер 1
20*2=
Ваш ответ - 40
Ответ верный
Вопрос номер 2
3*5=
Ваш ответ - 10
Ответ неверный, попробуйте снова
14
Ответ неверный, попробуйте снова
15
Ответ верный
Congrats