Убрать зацикливание программы - 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.

Объяснение кода листинга программы

Список элементов кода:

  1. Объявление переменных и констант
    • op: byte;
    • k: integer;
    • const
    • xo = 14;
    • yo = 5;
  2. Ввод данных с помощью цикла
    • 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;
  3. Проверка результатов и вывод оценки
    • writeln('Вы набрали ', k, ' балл(ов)' );
    • case k of
    • 12, 11: writeln('Красавчик! Тест выполнен на отлично! Ваша оценка 5.');
    • 10, 9: writeln('Стоит немного подучить, но 4 тоже хорошая оценка.');
    • 8, 7: writeln('Еще немного и вы опуститесь на уровень австралопитека! Ваша оценка 3');
    • else
    • writeln('Учиться, учиться и еще раз учиться! Фу какой позор на Вашу голову! Оценка 2!');
    • end;
  4. Основной цикл программы
    • begin
    • while not keypressed do
    • begin
    • clrscr;
    • gotoxy(xo, yo);
    • gotoxy(xo, yo + 1);writeln(' Здесь титульник ');
    • readkey;
    • testik;
    • end; *end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы