Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Alex100
4 / 0 / 1
Регистрация: 12.01.2012
Сообщений: 7
#1

Тест с разным количеством вопросов - Delphi

12.01.2012, 00:53. Просмотров 2096. Ответов 16
Метки нет (Все метки)

Здравствуйте.
Воззможно данная тема поднималась, но меня интересует следующее, я пишу тест-опросник (без правильнных\неправильных ответов). Процедуру чтения вопросов и ответов из .txt файла я нашел, но дело в том, что она читает только первую строку как вопрос и последующие 4-ре строки как варианты ответа. А у меня в тесте на разных вопросах разное количество ответов (и 2 ответа, и 3, и 6, и поле ввода своего ответа). Как сделать чтобы программа выводила вопрос и нужное количество ответов. Вопросов 40 штук....поэтмоу писать их в тело просто нет смысла. Я думал делать так типо

Пример файла вопросов\ответов:

Как Вас зовут?
-Алексей
-Коля
-Витя
Сколько Вам лет?
-10
-20
-30
-40
-50
-60

Чтобы программа по знаку "-" как бы понимала что это не следующий вопрос, а один из вариантов ответа.... кто что подскажет??? как лучше сделать
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2012, 00:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Тест с разным количеством вопросов (Delphi):

Создать тест из 25 вопросов, 5 вариантов ответа
Добрый вечер мне нужно создать тест, но не получается, нужно создать тест из 25...

Тест, перетасовка вопросов и самих ответов в вопросах
Здравствуйте, объясните как сделать так, чтобы при запуске теста вопросы меняли...

Тест. Как реализовать случайное выпадение вопросов
Делаю тест и надо сделать чтобы вопросы и ответы випадали рандомом.Расскажите...

Создать тест из 10 любых вопросов с различными способами ответа
нужно создать тест из 10 любых вопросов с различными способами...

Можно ли создать тест в программе My Test Student и запустить этот тест через Delphi?
Здравствуйте! Мне нужна помощь! Я сейчас делаю курсовую, и мне нужно сделать...

Размещение компонентов с разным приоритетом
как менять местами компоненты в дельфи? надо что бы Image был над memo

16
i8085
1669 / 1185 / 235
Регистрация: 11.09.2009
Сообщений: 4,210
12.01.2012, 06:47 #2
Alex100, вполне нормальный вариант.

P.S.
Если маркером отмечать не ответы, а вопросы - маркеров понадобится ставить меньше (легче набивать файл)
0
tupik123
12 / 4 / 2
Регистрация: 10.02.2011
Сообщений: 46
12.01.2012, 07:16 #3
Можно использовать ini-файлы.
0
Alex100
4 / 0 / 1
Регистрация: 12.01.2012
Сообщений: 7
12.01.2012, 07:43  [ТС] #4
Спасибо, я теоретически понимаю как это сделать, но мне нужно помощь в конкетном кодинге. Помогите хоть частью кода как это все реализовать....
0
tupik123
12 / 4 / 2
Регистрация: 10.02.2011
Сообщений: 46
12.01.2012, 18:25 #5
Цитата Сообщение от Alex100 Посмотреть сообщение
мне нужно помощь в конкетном кодинге
Почитай Архангельского "Программирование в Delphi 7", там все очень хорошо описано.
0
Alex100
4 / 0 / 1
Регистрация: 12.01.2012
Сообщений: 7
12.01.2012, 22:16  [ТС] #6
Я понимаю, что лучше всего - это изучить полностью Delphi, но у меня нет сейчас возможности. Мне нужно конкретно чтобы программа по маркеру определяла...хотя бы пример
0
Arcor
4816 / 1817 / 380
Регистрация: 20.11.2009
Сообщений: 5,792
Записей в блоге: 1
13.01.2012, 00:00 #7
циклом забирать строки которые идут после вопроса и прекращать перед 2 вопросом, т.е. начать копировать скажем в массив строки те которые имеют значок '-'
0
Alex100
4 / 0 / 1
Регистрация: 12.01.2012
Сообщений: 7
13.01.2012, 22:38  [ТС] #8
Это все теория....мне код нужен
0
Andyc
206 / 183 / 104
Регистрация: 10.01.2011
Сообщений: 302
14.01.2012, 02:43 #9
у меня написана программа для универсального теста с вариантами. Файл теста имеет вид
Delphi
1
2
3
4
5
6
7
6   //Число строк на вопрос
Вопрос 
2   //Правильный ответ
Ответ1
Ответ2
Ответ3
.....
Считывается в TStringList (Примерный код, )
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
   Data: TStringList;
begin
   Data:=TStringList.Create;
   Data:=LoadFromFile(FileName);
   i:=0;
   l:=0;
   while i < Data.Count - 1 do
   begin
       k := StrToInt(DataStr[i]); //считываем число строк на вопрос
       Q[l] := DataStr(i+1);  //считываем вопрос
       R[l] := DataStr(i+2);  //считываем правильный ответ
       for j:=1 to k-3 do
       begin
          A[l,j-1]:=DataStr(i+j); //Считываем ответы
       end;
       Inc(i, k);
       Inc(l);
  end;
1
Arcor
14.01.2012, 03:07
  #10

Не по теме:

Цитата Сообщение от Alex100 Посмотреть сообщение
Это все теория....мне код нужен
не было бы теории не добрались бы и до кода...

так бы и сказал - решите за меня, а я сдам завтра и получу зачет....


реально студенты вошли в тупой ступор - решайте за меня, мне ничего не преподают, а требуют многого...., я уж боюсь как я дальше жить то буду с такими спецами... Я вот планировал выучится за бугром и вернуться работать в в родную страну, а кто меня там скажем поддержит? такие программеры? да я уж лучше останусь работать тут...., чем с такими спецами разрабатывать что-либо... и хай страна орет моя родная наши умы продались загранице... моя цитата из меня же самого
"Вы устройте своим такую раб площадь и зп, что она оставит вас разрабатывать что-то", не наши лучше скажут идите вы на 3 буквы дальше, они пойдут... только за границу... там платят больше и возможностей больше... помню историю и географию 7-8класс, учили там таких как бы беженцев-ученных, их обсерали как могли, я их понимаю, за спасибо от СССР свою семью не прокормишь... как считает нынешняя наша с вами страна....
я сам испытал что такое голод, что такое холод, что такое жить без воды... без света..., пить, чтобы выжить, воду из речки, с которой пьют коровы и лошади и другие животные. что такое жить без коммуникаций.., когда твоя мама пытается тебе сотворить праздник из того что она может на твое день рождения.... я не хочу чтобы мои дети будущие испытали, что такое - то, что я пережил в свои годы.....и я не хочу чтобы мои дети осиротели в столь таком возрасте как я сам...

пост не говорит ни о чем... просто если у кого-то есть душа - тот поймет к чему это нытье было тут описано...


народ, задумайтесь - для чего вы живете то вообще?

а ладно сегодня прокатило - сдал, ок, зачет.. каждый так подумал.... а кто будет наших детей учить? тому - чему учат нас, или они повыростают такими же идиотами как сегодняшняя молодежь, даже еще тупее... так как наша молодежь тупеет на глазах...... помню в мои школьные годы нельзя было использовать калькулятор.. даже на физике заставляли умножать числа с несколькими нулями в молекулярной физике, в некоторой степени..., как видно сегодня не могут решить в голове сколько будет 26% из 100..., да какой там, сколько будет 2*5 не знают многие, сегодня убедился на лекции по математике!!! Я думаю профессор когда задал вопрос, он хоте5л провалиться под землю после вариантов ответа моих сокурсников.......

0
Zombi_sib
365 / 319 / 88
Регистрация: 26.05.2010
Сообщений: 744
Завершенные тесты: 1
14.01.2012, 12:05 #11
Цитата Сообщение от Arcor Посмотреть сообщение
не было бы теории не добрались бы и до кода...

так бы и сказал - решите за меня, а я сдам завтра и получу зачет....


реально студенты вошли в тупой ступор - решайте за меня, мне ничего не преподают, а требуют многого...., я уж боюсь как я дальше жить то буду с такими спецами... Я вот планировал выучится за бугром и вернуться работать в в родную страну, а кто меня там скажем поддержит? такие программеры? да я уж лучше останусь работать тут...., чем с такими спецами разрабатывать что-либо... и хай страна орет моя родная наши умы продались загранице... моя цитата из меня же самого
"Вы устройте своим такую раб площадь и зп, что она оставит вас разрабатывать что-то", не наши лучше скажут идите вы на 3 буквы дальше, они пойдут... только за границу... там платят больше и возможностей больше... помню историю и географию 7-8класс, учили там таких как бы беженцев-ученных, их обсерали как могли, я их понимаю, за спасибо от СССР свою семью не прокормишь... как считает нынешняя наша с вами страна....
я сам испытал что такое голод, что такое холод, что такое жить без воды... без света..., пить, чтобы выжить, воду из речки, с которой пьют коровы и лошади и другие животные. что такое жить без коммуникаций.., когда твоя мама пытается тебе сотворить праздник из того что она может на твое день рождения.... я не хочу чтобы мои дети будущие испытали, что такое - то, что я пережил в свои годы.....и я не хочу чтобы мои дети осиротели в столь таком возрасте как я сам...

пост не говорит ни о чем... просто если у кого-то есть душа - тот поймет к чему это нытье было тут описано...


народ, задумайтесь - для чего вы живете то вообще?

а ладно сегодня прокатило - сдал, ок, зачет.. каждый так подумал.... а кто будет наших детей учить? тому - чему учат нас, или они повыростают такими же идиотами как сегодняшняя молодежь, даже еще тупее... так как наша молодежь тупеет на глазах...... помню в мои школьные годы нельзя было использовать калькулятор.. даже на физике заставляли умножать числа с несколькими нулями в молекулярной физике, в некоторой степени..., как видно сегодня не могут решить в голове сколько будет 26% из 100..., да какой там, сколько будет 2*5 не знают многие, сегодня убедился на лекции по математике!!! Я думаю профессор когда задал вопрос, он хоте5л провалиться под землю после вариантов ответа моих сокурсников.......
С этим высказыванием полностью согласен.
0
Alex100
4 / 0 / 1
Регистрация: 12.01.2012
Сообщений: 7
14.01.2012, 12:19  [ТС] #12
Цитата Сообщение от Arcor Посмотреть сообщение
не было бы теории не добрались бы и до кода...

так бы и сказал - решите за меня, а я сдам завтра и получу зачет....


реально студенты вошли в тупой ступор - решайте за меня, мне ничего не преподают, а требуют многого...., я уж боюсь как я дальше жить то буду с такими спецами... Я вот планировал выучится за бугром и вернуться работать в в родную страну, а кто меня там скажем поддержит? такие программеры? да я уж лучше останусь работать тут...., чем с такими спецами разрабатывать что-либо... и хай страна орет моя родная наши умы продались загранице... моя цитата из меня же самого
"Вы устройте своим такую раб площадь и зп, что она оставит вас разрабатывать что-то", не наши лучше скажут идите вы на 3 буквы дальше, они пойдут... только за границу... там платят больше и возможностей больше... помню историю и географию 7-8класс, учили там таких как бы беженцев-ученных, их обсерали как могли, я их понимаю, за спасибо от СССР свою семью не прокормишь... как считает нынешняя наша с вами страна....
я сам испытал что такое голод, что такое холод, что такое жить без воды... без света..., пить, чтобы выжить, воду из речки, с которой пьют коровы и лошади и другие животные. что такое жить без коммуникаций.., когда твоя мама пытается тебе сотворить праздник из того что она может на твое день рождения.... я не хочу чтобы мои дети будущие испытали, что такое - то, что я пережил в свои годы.....и я не хочу чтобы мои дети осиротели в столь таком возрасте как я сам...

пост не говорит ни о чем... просто если у кого-то есть душа - тот поймет к чему это нытье было тут описано...


народ, задумайтесь - для чего вы живете то вообще?

а ладно сегодня прокатило - сдал, ок, зачет.. каждый так подумал.... а кто будет наших детей учить? тому - чему учат нас, или они повыростают такими же идиотами как сегодняшняя молодежь, даже еще тупее... так как наша молодежь тупеет на глазах...... помню в мои школьные годы нельзя было использовать калькулятор.. даже на физике заставляли умножать числа с несколькими нулями в молекулярной физике, в некоторой степени..., как видно сегодня не могут решить в голове сколько будет 26% из 100..., да какой там, сколько будет 2*5 не знают многие, сегодня убедился на лекции по математике!!! Я думаю профессор когда задал вопрос, он хоте5л провалиться под землю после вариантов ответа моих сокурсников.......
Мне конечно приятно, что Вы считаете меня студентом, но я Вас очень огорчу, что в мои 32 года мне абсолютно все равно на какие-то там зачеты и экзамены. Программу я пишу для себя и для личного использования. Тема называется "Для начинающих". Если Вы лично не можете в чем то помочь начинающим, а пытаетесь в каждой теме увидеть алчный подход пользователей, или судя по Вашему посту недовольны этой жизнью и нынешней молодежью, то простите Вам явно не здесь отписываться нужно, а на другом сайте.
0
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 499
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 1
14.01.2012, 12:27 #13
Alex100, если вас интересует обучение "для себя", то нужно было спросить про интересующие моменты, а не хотеть весь код сразу
0
Alex100
4 / 0 / 1
Регистрация: 12.01.2012
Сообщений: 7
14.01.2012, 12:56  [ТС] #14
Цитата Сообщение от Dekio Посмотреть сообщение
Alex100, если вас интересует обучение "для себя", то нужно было спросить про интересующие моменты, а не хотеть весь код сразу
Много уважаемый Dekio, читайте пожалуйста внимательнее....во все своих постах я просил конкретно кодинг...я нигде не писал, чтобы это решили за меня или сделали полностью весь тест-опросник мой....я просил, чтобы мне помогли в маленькой части кодинга...причем я не выдавал все ТЗ (техническое задание) с конкретными 40 вопросами...а попросил на примере двух вопросов, которые нахдятся в шапке данной темы показать, как НАПРИМЕРЕ может быть реализовано, чтобы дальше самому лично переделать код на свои 40 вопросов. Вы чувствуете разницу между "сделайте за меня все" и "подскажите на примере"???
0
Arcor
4816 / 1817 / 380
Регистрация: 20.11.2009
Сообщений: 5,792
Записей в блоге: 1
14.01.2012, 17:02 #15
Лучший ответ Сообщение было отмечено как решение

Решение

Alex100, вот глянька на этот вариант, набросал тут немного. Вводится сам вопрос, и к нему выдается список ответов, которые принадлежат этому вопросу

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Button1Click(Sender: TObject);
var F: TextFile;
    S: String;
begin
  AssignFile(F, 'test.txt');
  Reset(F);
  while not(EOF(F)) do
    begin
      Readln(F, S);
      if Pos('вопрос номер три', S) <> 0 then
      repeat
        Memo1.Lines.Add(S);
        Readln(F, S);
      until Pos('-', S) = 0;
    end;
  CloseFile(F);
  Result.Free;
end;
вот содержимое файла(для примера просто написал не значимый текст)
Код
вопрос номер один
-вариант ответа 1
-вариант ответа 2
-вариант ответа 3
-вариант ответа 4
вопрос номер два
-вариант ответа 1
-вариант ответа 2
-вариант ответа 3
-вариант ответа 4
-вариант ответа 5
-вариант ответа 6
-вариант ответа 7
вопрос номер три
-вариант ответа 1
-вариант ответа 2
вопрос номер четыре
-вариант ответа 1
-вариант ответа 2
-вариант ответа 3
-вариант ответа 4
-вариант ответа 5
результатом выполнения программы будет
Код
вопрос номер три
-вариант ответа 1
-вариант ответа 2
Добавлено через 7 минут
а вот вариант получше будет, все то же самое, только функцией оформил что упростит применение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function Vopros_Parse(FileName: String; const Vopros: String): TStringList;
var F: TextFile;
    S: String;
begin
  Result := TStringList.Create;
  AssignFile(F, FileName);
  Reset(F);
  while not(EOF(F)) do
    begin
      Readln(F, S);
      if Pos(Vopros, S) <> 0 then
      repeat
        Result.Add(S);
        Readln(F, S);
      until Pos('-', S) = 0;
    end;
  CloseFile(F);
  Result.Free;
end;
вот применение
Delphi
1
2
3
4
procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines := Vopros_Parse('test.txt', 'вопрос номер три');
end;
Добавлено через 45 минут
18 строку лучше удалить , иначе функция вернет пустую строку что-то я ступил немного
2
Alex100
4 / 0 / 1
Регистрация: 12.01.2012
Сообщений: 7
14.01.2012, 17:19  [ТС] #16
Цитата Сообщение от Arcor Посмотреть сообщение
Alex100, вот глянька на этот вариант, набросал тут немного. Вводится сам вопрос, и к нему выдается список ответов, которые принадлежат этому вопросу

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Button1Click(Sender: TObject);
var F: TextFile;
    S: String;
begin
  AssignFile(F, 'test.txt');
  Reset(F);
  while not(EOF(F)) do
    begin
      Readln(F, S);
      if Pos('вопрос номер три', S) <> 0 then
      repeat
        Memo1.Lines.Add(S);
        Readln(F, S);
      until Pos('-', S) = 0;
    end;
  CloseFile(F);
  Result.Free;
end;
вот содержимое файла(для примера просто написал не значимый текст)
Код
вопрос номер один
-вариант ответа 1
-вариант ответа 2
-вариант ответа 3
-вариант ответа 4
вопрос номер два
-вариант ответа 1
-вариант ответа 2
-вариант ответа 3
-вариант ответа 4
-вариант ответа 5
-вариант ответа 6
-вариант ответа 7
вопрос номер три
-вариант ответа 1
-вариант ответа 2
вопрос номер четыре
-вариант ответа 1
-вариант ответа 2
-вариант ответа 3
-вариант ответа 4
-вариант ответа 5
результатом выполнения программы будет
Код
вопрос номер три
-вариант ответа 1
-вариант ответа 2
Добавлено через 7 минут
а вот вариант получше будет, все то же самое, только функцией оформил что упростит применение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function Vopros_Parse(FileName: String; const Vopros: String): TStringList;
var F: TextFile;
    S: String;
begin
  Result := TStringList.Create;
  AssignFile(F, FileName);
  Reset(F);
  while not(EOF(F)) do
    begin
      Readln(F, S);
      if Pos(Vopros, S) <> 0 then
      repeat
        Result.Add(S);
        Readln(F, S);
      until Pos('-', S) = 0;
    end;
  CloseFile(F);
  Result.Free;
end;
вот применение
Delphi
1
2
3
4
procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines := Vopros_Parse('test.txt', 'вопрос номер три');
end;
Добавлено через 45 минут
18 строку лучше удалить , иначе функция вернет пустую строку что-то я ступил немного




Arcor, огромнейшее тебе спасибо!!! Вечером доберусь до ноута, попробую -))) Спасибо еще раз.
0
Arcor
4816 / 1817 / 380
Регистрация: 20.11.2009
Сообщений: 5,792
Записей в блоге: 1
14.01.2012, 17:41 #17
еще не менее важна будет вот эта функция, получить названия вопросов, чтобы потом было легче ориентироваться и не прописывать каждый раз название вручную
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function GetVopros(FileName: String): TStringList;
var F: TextFile;
    S: String;
begin
  Result := TStringList.Create;
  AssignFile(F, FileName);
  Reset(F);
  while not(EOF(F)) do
    begin
      Readln(F, S);
      if Pos('-', S) = 0 then
        Result.Add(S)
    end;
  CloseFile(F);
end;
Добавлено через 41 секунду
что-то я переписываю уже структуру Ini файла на свой лад
0
14.01.2012, 17:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 17:41
Привет! Вот еще темы с решениями:

RegExp: Парсинг страницы по разным значаниям
Имеется вот такой код на странице: &lt;li class='clear clearfix'&gt; &lt;span...

Использование функции с разным набором параметров
Всем привет, делал сегодня рассылку через смс шлюз по API...

Написать программу тест с большим количеством вопросов, которые будут выбираться случайно
Cуть задания-нужно написать программу тест с большим количеством вопросов...

анализ анкет с разным количеством респондентов
Добрый день! Статистику изучала довольно давно и довольно поверхностно, но вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru