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


Знаток
****

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

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


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

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





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

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


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

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

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


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


Знаток
****

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

Репутация: -  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

 




- Текстовая версия 16.01.2018 20:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"