С Новым годом! Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/32: Рейтинг темы: голосов - 32, средняя оценка - 4.72
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 120

Составить программу, которая будет считывать задания с файла

24.05.2013, 14:10. Показов 6310. Ответов 85
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет) скажите, можно ли составить программу которая будет считывать вопросы с файла? то есть программа считывает заданный файл, в который записаны вопросы с вариантами ответов, а затем выводит этот вопрос и пользователь на него отвечает. реально ли сделать такое?
заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.05.2013, 14:10
Ответы с готовыми решениями:

Написать программу, которая будет считывать слово и расставлять буквы по алфавиту
Здравствуйте)Напишите, пожалуйста, программу на паскалеАВС.net, расставляющую буквы Вашего имени в алфавитном порядке.Спасибо за уделённое...

Составить программу, которая будет находить длину сторон квадрата
Нужно составить программу, которая будет находить длину сторон квадрата. Квадрат может состоять из четырех типов прямоугольных...

Надо составить программу в Паскале, которая будет выводить на экран все подмножества множества {1, 2, 3, 4}
надо составить программу в Паскале, которая будет выводить на экран все подмножества множества {1, 2, 3, 4}. Используя тип данных set

85
SausageFlat
 Аватар для Striker
242 / 221 / 154
Регистрация: 19.08.2012
Сообщений: 499
Записей в блоге: 1
24.05.2013, 14:57
Конечно реально, смогу написать вечером, т.к. Сейчас на работе, если никто не ответит - скину код.
0
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 120
24.05.2013, 17:05  [ТС]
буду благодарен жду
0
 Аватар для Kordn
158 / 137 / 106
Регистрация: 18.05.2013
Сообщений: 289
24.05.2013, 18:08
Если я Вас правильно понял, то:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
  f: Text;
 
var
  answ: string;
 
begin
  assign(f, 'quest.txt');
  reset(f);
  var s: string;
  while not eof(f) do 
  begin
    readln(f, s);
    if s[1] in ['0'..'9'] then begin
      write(s);
      readln(answ);
    end;
  end;
  close(f);
end.
Файл 'quest.txt':
1. 2+2=
а)12
б)16
в)4
Правильный ответ: в)
2. Вставьте правильную букву: г_лова
а)о
б)е
в)а
Правильный ответ: а)
3. Сколько пальцев на одной руке?
а)3
б)5
в)8
Правильный ответ: б)
1
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 120
24.05.2013, 18:39  [ТС]
как бы да ) но вот еще бы выдавились сами варианты ответов и выбирать сделать можно?
P.S. спасибо
0
SausageFlat
 Аватар для Striker
242 / 221 / 154
Регистрация: 19.08.2012
Сообщений: 499
Записей в блоге: 1
24.05.2013, 18:43
Цитата Сообщение от PacificABCNET Посмотреть сообщение
как бы да ) но вот еще бы выдавились сами варианты ответов и выбирать сделать можно?
P.S. спасибо
Можно, еду домой, скоро сделаю.
0
 Аватар для Kordn
158 / 137 / 106
Регистрация: 18.05.2013
Сообщений: 289
24.05.2013, 19:11
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
uses GraphABC;
var
  f: Text;
 
var
  answ: char;
 
begin
  assign(f, 'quest.txt');
  reset(f);
  var s: string;
  var x: integer;
  while not eof(f) do 
  begin
  x:=0;
    repeat
      readln(f, s);
      textout(0,x,s);
      x+=20;
    until s[1] = 'в';
    readln(answ);
    readln(f, s);
    if answ=s[19] then 
    ClearWindow(clGreen)
    else
   ClearWindow(clRed);
      readln;
      ClearWindow;
  end;
  close(f);
  CloseWindow;
end.
Добавлено через 2 минуты
Пойдет?
1
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 120
24.05.2013, 19:49  [ТС]
о, круто, то что надо, спасибо а вот еще тут возник вопросик
можно ли сделать чтобы в "вопроснике" можно было делать рандомное число ответов? в смысле 2, 3, 4 и т.д.
0
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 3
24.05.2013, 21:00
Ребят, мне помощь нужна почти тоже самое.
Имеется файл в нем вопрос.
Первая строка -сам вопрос,
вторая строка -вариант ответа 1,
третья строка- вариант ответа 2,
четвертая строка-вариант ответа 3,
пятая строка- вариант ответа 4,
шестая строка-правильный вариант ответа.
Нужно считать каждую строку и присвоить переменную , после этого вывести на экран вопрос и варианты ответа, А после ответа пользователя проверить верный ли ответ. Буду очень признателен если кто поможет.
0
 Аватар для Kordn
158 / 137 / 106
Регистрация: 18.05.2013
Сообщений: 289
24.05.2013, 21:16
PacificABCNET, ну это вряд ли, т.к. каждый ответ Вы прописываете сами. Вопрос, например, может быть такой: "Имя Пушкина?" и варианты ответов "а) Сергей", "б) Александр", "в) Игорь", т.е. каждый вариант ответа Вы прописали вручную. Но если в файле у Вас к каждому вопросу, к примеру, по 5 вариантов ответов, то, в принципе, Вы можете выводить в программе от 1 до 5 уже прописанных вариантов. Правда, не факт, что из этих выданных вариантов будет правильный (в этом и есть суть рандомайза ). Так что оставьте, как есть - ни разу не видел, чтобы в одном тесте встречалось к каждому вопросу разное кол-во ответов.

Добавлено через 4 минуты
monya, а чем моя программа отличается от той, о которой говорите Вы?
Просто в файле напишите не 3, а 4 варианта ответа, а все остальное оставьте неизменным - все должно работать
0
SausageFlat
 Аватар для Striker
242 / 221 / 154
Регистрация: 19.08.2012
Сообщений: 499
Записей в блоге: 1
24.05.2013, 21:40
Я смотрю уже помогли.

Цитата Сообщение от PacificABCNET Посмотреть сообщение
можно ли сделать чтобы в "вопроснике" можно было делать рандомное число ответов? в смысле 2, 3, 4 и т.д.
Воспользуюсь программой сверху и модернизирую её.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
uses
  GraphABC;
 
var
  f: Text;
 
var
  answ: char;
  a, col: integer;
 
begin
  assign(f, 'quest.txt');
  reset(f);
  var s: string;
  var x: integer;
  while not eof(f) do 
  begin
    x := 0;
    col := 0;
    a := random(3, 4);
    repeat
      readln(f, s);
      textout(0, x, s);
      x += 20;
      inc(col);
    until col = a;
    if(s [1] <> 'в') Then
      repeat
        readln(f, s);
      until s[1] = 'в';
    
    readln(answ);
    readln(f, s);
    if answ = s[19] then 
      ClearWindow(clGreen)
    else
      ClearWindow(clRed);
    readln;
    ClearWindow;
  end;
  close(f);
  CloseWindow;
end.
0
 Аватар для Kordn
158 / 137 / 106
Регистрация: 18.05.2013
Сообщений: 289
24.05.2013, 22:18
striker72rus, да, таким образом на экран выводится случайное кол-во вариантов ответов. Но среди них может не оказаться правильного!
0
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 120
24.05.2013, 23:32  [ТС]
Kordn, ладно окей, спасибо сделал по 4 варианта, нормально будет а скажи, можно ли как то сделать кнопочный вариант? то есть высвечивается вопрос, а варианты ответов кнопками?

Добавлено через 1 минуту
striker72rus, у меня вылетает программа, может что-то не так? )

Добавлено через 1 час 7 минут
блин еще фигня, делаю чтобы при нажатии клавиши ESC окно закрывало а оно не закрывается
как это правильно сделать?
0
SausageFlat
 Аватар для Striker
242 / 221 / 154
Регистрация: 19.08.2012
Сообщений: 499
Записей в блоге: 1
24.05.2013, 23:44
Цитата Сообщение от Kordn Посмотреть сообщение
striker72rus, да, таким образом на экран выводится случайное кол-во вариантов ответов. Но среди них может не оказаться правильного!
Если подольше над этой программой посидеть, то можно сделать чтобы и рандомно выбирал 3 из 5 вариантов, при этом гарантированно 1 из них правильный.

Цитата Сообщение от PacificABCNET Посмотреть сообщение
striker72rus, у меня вылетает программа, может что-то не так? )
В чём это выражается? После чего вылетает?

Цитата Сообщение от PacificABCNET Посмотреть сообщение
блин еще фигня, делаю чтобы при нажатии клавиши ESC окно закрывало а оно не закрывается
как это правильно сделать?
Ох... Как на ABC.Net не знаю, но в Turbo помню была такая вещица как Readkey, но это CRT, есть ли здесь альтернатива - не помню.

Добавлено через 6 минут
Цитата Сообщение от PacificABCNET Посмотреть сообщение
Kordn, ладно окей, спасибо сделал по 4 варианта, нормально будет а скажи, можно ли как то сделать кнопочный вариант? то есть высвечивается вопрос, а варианты ответов кнопками?
Можно, вот пример работы с кнопками:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uses
  GraphABC, ABCbuttons;
 
var
  but: ButtonABC;
 
procedure sozd;
var
  f: text;
  s: string;
begin
  s := ('1 2 3 4 5 6 7');
  assign(f, 'name.txt');
  rewrite(f);
  Write(f, s);
  close(f);
  TextOut(34, 33, 'Файл успешно создан!');
end;
 
begin
  but := new buttonABC(0, 359, 200, 50, 'Создать файл', ClWhite); //Рисуем кнопку в нужном месте.
  but.OnClick := sozd;//Переходим в процедуру для создания файла.
end.
0
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 120
24.05.2013, 23:46  [ТС]
здесь на паскале это что то вроде
Pascal
1
2
3
4
5
procedure MyClose(key: integer); // key - код нажатой клавиши
begin
  if key=vk_ESCAPE then Window.Close;  
  // если нажата клавиша ESC (vk_ESCAPE - константа, соответствующая этому коду), то окно закрываем
end;
и
Pascal
1
  OnKeyDown := MyClose; // отлавливается событие onKeyDown
я это пробовал но программа не хочет закрываться

а про вылет.
программа выдает ошибку.
Program1.pas(34) : Ошибка времени выполнения: Индекс находился вне границ массива.
и из вариантов ответов не всегда выдает правильный.
0
SausageFlat
 Аватар для Striker
242 / 221 / 154
Регистрация: 19.08.2012
Сообщений: 499
Записей в блоге: 1
24.05.2013, 23:53
Про ESC ничего сказать не могу, с таким не сталкивался.

Цитата Сообщение от PacificABCNET Посмотреть сообщение
а про вылет.
программа выдает ошибку.
Program1.pas(34) : Ошибка времени выполнения: Индекс находился вне границ массива.
и из вариантов ответов не всегда выдает правильный.
А если запускать пошаговое выполнение? И следить за изменениями переменных? Просто у меня всё замечательно запускается...
0
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 120
25.05.2013, 00:09  [ТС]
striker72rus, проблема решилась, после изменения в вопроснике 4-х вариантов ответов на 3.
0
SausageFlat
 Аватар для Striker
242 / 221 / 154
Регистрация: 19.08.2012
Сообщений: 499
Записей в блоге: 1
25.05.2013, 00:12
PacificABCNET,

Вот та же программа, но с кнопками. Писал на скорую руку - она после окончания вопросов, просто выходит.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
uses
  GraphABC, ABCbuttons;
 
var
  f: Text;
 
var
  s: string;
 
var
  x: integer;
  answ: char;
  b, b2, b3: ButtonABC;
 
procedure otv; forward;
 
procedure otv2; forward;
 
procedure otv3; forward;
 
procedure files;
begin
  sleep(1000);
  clearwindow;
  x := 0;
  repeat
    readln(f, s);
    textout(0, x, s);
    x += 20;
    if s[1] = 'к' Then
      closewindow;
  until s[1] = 'в';
  
  b := new buttonABC(0, x + 60, 20, 50, 'A', ClWhite);
  b2 := new buttonABC(30, x + 60, 20, 50, 'Б', ClWhite);
  b3 := new buttonABC(60, x + 60, 20, 50, 'В', ClWhite);
  b.OnClick := otv;
  b2.OnClick := otv2;
  b3.OnClick := otv3;
  
end;
 
procedure otv;
begin
  answ := 'а';
  readln(f, s);
  if answ = s[19] then 
    TextOUT(100, 100, 'Правильно!')
  else
    TextOUT(100, 100, 'Не правильно!');
  b.Destroy;
  b2.Destroy;
  b3.Destroy;
  files;
end;
 
procedure otv2;
begin
  answ := 'б';
  readln(f, s);
  if answ = s[19] then 
    TextOUT(100, 100, 'Правильно!')
  else
    TextOUT(100, 100, 'Не правильно!');
  b.Destroy;
  b2.Destroy;
  b3.Destroy;
  files;
end;
 
procedure otv3;
begin
  answ := 'в';
  readln(f, s);
  if answ = s[19] then 
    TextOUT(100, 100, 'Правильно!')
  else
    TextOUT(100, 100, 'Не правильно!');
  b.Destroy;
  b2.Destroy;
  b3.Destroy;
  files;
end;
 
begin
  assign(f, 'quest.txt');
  reset(f);
  files;
  
end.
Содержание файла:
1. 2+2=
а)12
б)4
в)16
Правильный ответ: б)
2. Вставьте правильную букву: г_лова
а)о
б)е
в)а
Правильный ответ: а)
3. Сколько пальцев на одной руке?
а)3
б)5
в)8
Правильный ответ: б)
к
1
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 120
25.05.2013, 00:23  [ТС]
работает, спасибо с вылетом пока не знаю конечно как побороться, но думаю может смогу что-нибудь сделать
0
SausageFlat
 Аватар для Striker
242 / 221 / 154
Регистрация: 19.08.2012
Сообщений: 499
Записей в блоге: 1
25.05.2013, 00:25
Цитата Сообщение от PacificABCNET Посмотреть сообщение
работает, спасибо с вылетом пока не знаю конечно как побороться, но думаю может смогу что-нибудь сделать
Пожалуйста, с каким вылетом? Просто с выходом? Можно создать дополнительную процедуру, которая по окончанию вопросов показывает статистику. Фантазируем
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2013, 00:25
Помогаю со студенческими работами здесь

Составить программу, которая по указанному алгоритму будет выводить на печать число, используя любой текст
Для запоминания числа p иногда используют &quot;магические&quot; фразы, например: &quot;это я знаю и помню прекрасно Пи многие знаки мне лишни...

Составить программу, которая записывает текст в файлы F и Н , и переписать в файл G компоненты файла F, а потом файла H
Составить программу которая записывает текс в файлы F и Н , и переписать в фай G компоненты файла F а потом файла H Помогите написать...

Составить программу, которая будет генерировать случайные целые числа в интервале [a;b] и заполнять ими двумерный массив
Составить программу, которая будет генерировать случайные целые числа в интервале и заполнять ими двумерный массив n*n, размер массива и...

Составить программу, которая будет генерировать случайные целые числа в интервале [a;b] и заполнять ими двумерный массив
Составить программу, которая будет генерировать случайные целые числа в интервале и заполнять ими двумерный массив n*n, размер массива и...

Составить программу, которая будет генерировать случайные целые числа в интервале [a;b] и заполнять ими двумерный массив
Составить программу, которая будет генерировать случайные целые числа в интервале и заполнять ими двумерный массив n*n, размер массива и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru