Три массива: вопросы викторины, верные ответы, ответы, которые будут введены участниками. ответы в основном из одного - двух слов. все вопросы и ответы ввожу присваиванием, но когда пишу цикл на ввод ответа, то первый раз цикл срабатывает нормально, а последующие разы программа не требует ввода, то есть оператор 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 в цикле?
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