Есть программа, назовём ее “Загадки”. Программа работает следующим образом, на экран выводится некая загадка и нужно ввести на нее ответ с клавиатуры, если ответ введен не верно то программа выводит сообщения об ошибки, и просит ввести ответ еще раз, если ответ введен верно, то программа перейдет к следующий загадки. В программе ведется общий подсчет допущенных ошибок, например если человек ошибается на одной загадки три раза, а на другой два раза то, это будет считаться 5 ошибок.
ВНИМАНИЕ ВОПРОС. Можно ли сделать так, что бы в конце выводились те загадки, на которых были допущены ошибки, и информация о том сколько раз на каждой из них человек допустил ошибку???
Writeln (' Не ездок, а со шпорами, Не будильник, а всех будит.');
readln (s);
while (s<>'петух') dobegin
writeln ('Слово введено неверно или вообще не введено!!! Будьте внимательны при вводе.');
readln (s);
end;
begin
writeln('Верно!');
ot:=ot+1;
end;
Writeln (' Она красива и мила, А имя ей от слова "зола".');
readln (s);
while (s<>'золушка') dobegin
writeln ('Слово введено неверно или вообще не введено!!! Будьте внимательны при вводе.');
o:=o+1;
readln (s);
end;
А если количество загадок будет как вопросов в тесте ГИБДД, программа будет удлиняться и удлиняться?
Если ответишь "нет" и поймёшь как это сделать - получишь половину ответа на свой вопрос.
Нет, там будет ограниченное количество загадок, приблизительно 100 шт. Только я не понял, как это сделать? Дело в том что, я самоучка, и многого еще не знаю, что и как можно сделать.
Ну раз 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; {количество загадок, введённых из файла}whilenot eof(t) dobegin
чтение из файла
inc(RiddlesCount);
Readln(t, Riddles[RiddlesCount].Question);
Readln(t, Riddles[RiddlesCount].Estimate);
Riddles[RiddlesCount].Solve:=false;
Riddles[RiddlesCount].TryCount:=0;
.................
попытки пользователя отгадать
............
end;
вывод статистики
for i:=1to RiddlesCount dobeginifnot Riddles[i].Solve thenbegin
WriteLn(Riddles[i].Question);
WriteLn(Riddles[i].Estimate);
.......................................
end;
end;
Это очень ущербный набросок - нет проверки ошибок чтения файла и, наверняка, что-то пропущено.