Убрать зацикливание программы - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Не понимаю почему зацикливается, помогите пожалуйста. Программа -тестирование
Листинг программы
  1. program rr;
  2. uses crt;
  3. const
  4. xo=14;
  5. yo=5;
  6. var op:byte;
  7. k:integer;
  8. procedure testik;
  9. const
  10. vopr=12;
  11. prav:array [1..vopr] of byte=(4,1,1,2,1,3,1,1,2,1,2,1);
  12. var f:text;
  13. str:string;
  14. i,k:integer;
  15. op: byte;
  16. begin
  17. k:=0;
  18. clrscr;
  19. assign (f,'C:\Users\Лера\Desktop\test\text .txt'); reset (f);
  20. for i:=1 to vopr do begin
  21. writeln;
  22. writeln(' ВОПРОС № ',i);
  23. writeln;
  24. while str<>'*' do begin readln (f,str); writeln(str);end;
  25. write('Выберите ответ ');
  26. read(op);readln (f,str);
  27. if op=prav[i] then k:=k+1;
  28. end; close(f);
  29. writeln ('Вы набрали ',k,' балл(ов)' );
  30. case k of
  31. 12,11:writeln ('Красавчик! Тест выполнен на отлично! Ваша оценка 5.');
  32. 10,9:writeln ('Стоит немного подучить, но 4 тоже хорошая оценка.');
  33. 8,7:writeln('Еще немного и вы опуститесь на уровень австралопитека! Ваша оценка 3');
  34. else writeln ('Учиться, учиться и еще раз учиться! Фу какой позор на Вашу голову! Оценка 2!');
  35. end;
  36. readln;
  37. end;
  38. begin
  39. while not keypressed do begin
  40. clrscr;
  41. gotoxy(xo,yo);
  42. gotoxy(xo,yo+1); writeln(' Здесь титульник ');
  43. readkey; testik;
  44. end;
  45. end.

Решение задачи: «Убрать зацикливание программы»

textual
Листинг программы
  1. program rr;
  2.  
  3. uses crt;
  4. const
  5.   xo = 14;
  6.   yo = 5;
  7.  
  8. var
  9.   op: byte;
  10.   k: integer;
  11.  
  12. procedure testik;
  13. const
  14.   vopr = 12;
  15.   prav: array [1..vopr] of byte = (4, 1, 1, 2, 1, 3, 1, 1, 2, 1, 2, 1);
  16. var
  17.   f: text;
  18.   str: string;
  19.   i, k: integer;
  20.  
  21.   op: byte;
  22. begin
  23.   k := 0;
  24.  
  25.   clrscr;
  26.   assign(f, '1.txt');reset(f);
  27.  
  28.   for i := 1 to vopr do
  29.   begin
  30.     writeln;
  31.     writeln(' ВОПРОС № ', i);
  32.     writeln;
  33.     repeat  
  34.       readln(f, str);
  35.       writeln(str);
  36.     until str ='*';
  37.     write('Выберите ответ ');
  38.     readln(op);    
  39.     if op = prav[i] then k := k + 1;
  40.   end;
  41.   writeln('Вы набрали ', k, ' балл(ов)' );
  42.   case k of
  43.     12, 11: writeln('Красавчик! Тест выполнен на отлично! Ваша оценка 5.');
  44.     10, 9: writeln('Стоит немного подучить, но 4 тоже хорошая оценка.');
  45.     8, 7: writeln('Еще немного и вы опуститесь на уровень австралопитека! Ваша оценка 3');
  46.   else writeln('Учиться, учиться и еще раз учиться! Фу какой позор на Вашу голову! Оценка 2!');
  47.   end;
  48.   readln;
  49. end;
  50.  
  51. begin
  52.   while not keypressed do
  53.   begin
  54.     clrscr;
  55.     gotoxy(xo, yo);
  56.     gotoxy(xo, yo + 1);writeln(' Здесь титульник ');    
  57.     readkey;testik;
  58.   end;  
  59. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы