Убрать зацикливание программы - PascalABC.NET
Формулировка задачи:
Не понимаю почему зацикливается, помогите пожалуйста. Программа -тестирование
Листинг программы
- 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,'C:\Users\Лера\Desktop\test\text .txt'); reset (f);
- for i:=1 to vopr do begin
- writeln;
- writeln(' ВОПРОС № ',i);
- writeln;
- while str<>'*' do begin readln (f,str); writeln(str);end;
- write('Выберите ответ ');
- read(op);readln (f,str);
- if op=prav[i] then k:=k+1;
- end; close(f);
- 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.
Решение задачи: «Убрать зацикливание программы»
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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д