IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Счетчик и вывод ошибок, Как можно показать человеку где, и сколько раз он допустил ошибку???
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Есть программа, назовём ее “Загадки”. Программа работает следующим образом, на экран выводится некая загадка и нужно ввести на нее ответ с клавиатуры, если ответ введен не верно то программа выводит сообщения об ошибки, и просит ввести ответ еще раз, если ответ введен верно, то программа перейдет к следующий загадки. В программе ведется общий подсчет допущенных ошибок, например если человек ошибается на одной загадки три раза, а на другой два раза то, это будет считаться 5 ошибок.

ВНИМАНИЕ ВОПРОС.
Можно ли сделать так, что бы в конце выводились те загадки, на которых были допущены ошибки, и информация о том сколько раз на каждой из них человек допустил ошибку???


Writeln (' Не ездок, а со шпорами, Не будильник, а всех будит.');
readln (s);
while (s<>'петух') do
begin
writeln ('Слово введено неверно или вообще не введено!!! Будьте внимательны при вводе.');
readln (s);
end;

begin
writeln('Верно!');
ot:=ot+1;
end;


Writeln (' Она красива и мила,  А имя ей от слова "зола".');
readln (s);
while (s<>'золушка') do
begin
writeln ('Слово введено неверно или вообще не введено!!! Будьте внимательны при вводе.');
o:=o+1;
readln (s);
end;


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


А если количество загадок будет как вопросов в тесте ГИБДД, программа будет удлиняться и удлиняться?

Если ответишь "нет" и поймёшь как это сделать - получишь половину ответа на свой вопрос.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Цитата(Федосеев Павел @ 1.05.2012 19:07) *

А если количество загадок будет как вопросов в тесте ГИБДД, программа будет удлиняться и удлиняться?

Если ответишь "нет" и поймёшь как это сделать - получишь половину ответа на свой вопрос.


Нет, там будет ограниченное количество загадок, приблизительно 100 шт.
Только я не понял, как это сделать? Дело в том что, я самоучка, и многого еще не знаю, что и как можно сделать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Ну раз 100 штук, тогда точно не по-индийски.
Спасёт тебя:
1. Текстовый файл. В нём на каждую загадку будет отводиться по 2 строки - загадка и отгадка. Итого 200 строк.
2. Каждой загадке в программе будет отводиться структура record со следующими полями
i) строка загадки
ii) строка отгадки
iii) логическая переменная - угадано или нет
iv) целочисленная переменая - количество попыток
v) другие поля - на усмотрение разработчика
3. Массив (или динамический список, или массив указателей на записи - как пожелаешь) записей.
Итак, в начале программы или по мере выполнения (=диалога с пользователем) заполняется массив. В нём и хранятся результаты "тестирования загадками" - статистика.
По завершении "тестирования" с этой статистикой можно делать что угодно.

Текст программы без описания типов должен уместиться в 10-15 строк.

Раз самоучка - почитай про записи (record). массивы (array), файлы, в частности текстовые (text), циклы while и for. А также ознакомься с указателями и динамическими структурами (списками) - чуть дальше пригодится (каждая строка это 256 байт, на загадку 2 строки, на 100 загадок 50 кбайт - если программируешь в DOS может не хватить памяти на сегмент данных).

type
  RRiddle = record
    Question,                {загадка}
    Estimate : string;     {отгадка}
    Solve : boolean;      {true - угадана}
    TryCount : integer;  {количество попыток}
  end;
  TRiddlesList = array [1..100] of REnigma;
........
var
  Riddles : TRiddlesList;
  t : Text;
................
  RiddlesCount:=0; {количество загадок, введённых из файла}
  while not eof(t) do
  begin
     чтение из файла 
     inc(RiddlesCount);
     Readln(t, Riddles[RiddlesCount].Question);
     Readln(t, Riddles[RiddlesCount].Estimate);
     Riddles[RiddlesCount].Solve:=false;
     Riddles[RiddlesCount].TryCount:=0;
    .................
   попытки пользователя отгадать
   ............
  end;

вывод статистики
  for i:=1 to RiddlesCount do
  begin
      if not Riddles[i].Solve then
      begin
         WriteLn(Riddles[i].Question);
         WriteLn(Riddles[i].Estimate);
.......................................
      end;
  end;

Это очень ущербный набросок - нет проверки ошибок чтения файла и, наверняка, что-то пропущено.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 10.04.2025 3:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name