Убрать зацикливание программы - PascalABC.NET
Формулировка задачи:
Не понимаю почему зацикливается, помогите пожалуйста. Программа -тестирование
Решение задачи: «Убрать зацикливание программы»
textual
Листинг программы
program rr;
uses crt;
const
xo = 14;
yo = 5;
var
op: byte;
k: integer;
procedure testik;
const
vopr = 12;
prav: array [1..vopr] of byte = (4, 1, 1, 2, 1, 3, 1, 1, 2, 1, 2, 1);
var
f: text;
str: string;
i, k: integer;
op: byte;
begin
k := 0;
clrscr;
assign(f, '1.txt');reset(f);
for i := 1 to vopr do
begin
writeln;
writeln(' ВОПРОС № ', i);
writeln;
repeat
readln(f, str);
writeln(str);
until str ='*';
write('Выберите ответ ');
readln(op);
if op = prav[i] then k := k + 1;
end;
writeln('Вы набрали ', k, ' балл(ов)' );
case k of
12, 11: writeln('Красавчик! Тест выполнен на отлично! Ваша оценка 5.');
10, 9: writeln('Стоит немного подучить, но 4 тоже хорошая оценка.');
8, 7: writeln('Еще немного и вы опуститесь на уровень австралопитека! Ваша оценка 3');
else writeln('Учиться, учиться и еще раз учиться! Фу какой позор на Вашу голову! Оценка 2!');
end;
readln;
end;
begin
while not keypressed do
begin
clrscr;
gotoxy(xo, yo);
gotoxy(xo, yo + 1);writeln(' Здесь титульник ');
readkey;testik;
end;
end.
Объяснение кода листинга программы
Список элементов кода:
- Объявление переменных и констант
- op: byte;
- k: integer;
- const
- xo = 14;
- yo = 5;
- Ввод данных с помощью цикла
- for i := 1 to vopr do
- begin
- writeln;
- writeln(' ВОПРОС № ', i);
- writeln;
- repeat
- begin
- readln(f, str);
- writeln(str);
- end
- until str ='*';
- write('Выберите ответ ');
- readln(op);
- if op = prav[i] then k := k + 1;
- end;
- Проверка результатов и вывод оценки
- writeln('Вы набрали ', k, ' балл(ов)' );
- case k of
- 12, 11: writeln('Красавчик! Тест выполнен на отлично! Ваша оценка 5.');
- 10, 9: writeln('Стоит немного подучить, но 4 тоже хорошая оценка.');
- 8, 7: writeln('Еще немного и вы опуститесь на уровень австралопитека! Ваша оценка 3');
- else
- writeln('Учиться, учиться и еще раз учиться! Фу какой позор на Вашу голову! Оценка 2!');
- end;
- Основной цикл программы
- begin
- while not keypressed do
- begin
- clrscr;
- gotoxy(xo, yo);
- gotoxy(xo, yo + 1);writeln(' Здесь титульник ');
- readkey;
- testik;
- end; *end.