21.06.2016, 17:56. Просмотров 288. Ответов 8
Здравствуйте, появилась идея создать свой "тестер".
В связи с этим появилось несколько вопросов, ну чтобы было понятнее опишу работу программы.
Содержимое файла test.txt:
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| @Вопрос 1
Ответ 1
*Ответ 2
Ответ 3
Ответ 4
Ответ 5
@Вопрос 2
Ответ 1
Ответ 2
Ответ 3
*Ответ 4
Ответ 5
....
@Вопрос N
Ответ 1
Ответ 2
Ответ 3
Ответ 4
*Ответ 5 |
|
Принцип работы:
1) Для начала открываем файл;
2) Далее считаем кол-во вопросов, а именно по такому алгоритму:
-Каждая пустая строка - 1 вопрос с вариантами ответов, то бишь, если встречаем пустую строку - плюсуем счетчик +1
3) Через for записываем файл в массив структур, сама структура
Сама структура
C++ |
1
2
3
4
5
6
7
8
9
| struct
{
string question; // Вопрос
string ans1; // Ответ 1
string ans2; // Ответ 2
string ans3; // Ответ 3
string ans4; // Ответ 4
string ransw; // Правильный ответ
}; |
|
Записываем по такому принципу:
если в начале строки встречаем символ "*", то записываем в ransw,
если @, то записываем в question,
если ничего нет, то в обычный string ans1,2,3,4.
4) Проводит тестирование(тут вопросов пока что нет).
Подскажите, будьте добры, как правильно сделать запись данных из файла в массив по условию.
C++ |
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
| #include <iostream>
#include <fstream>
#include <conio.h>
#include <Windows.h>
#include <string>
using namespace std;
struct test
{
string question; // Вопрос
string ans1; // Ответ 1
string ans2; // Ответ 2
string ans3; // Ответ 3
string ans4; // Ответ 4
string ransw; // Правильный ответ
};
void main()
{
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
//----------------------------------------------------//
//Считаем кол-во вопросов
string string1;
int n = 0;
ifstream fin("test.txt");
while (fin)
{
getline(fin, string1);
if (string1.empty())
{
n++;
}
}
cout << "Кол-во вопросов в файле: " << n << endl;
fin.seekg(0, ios::beg); // Устанавливаем указатель в начало файла.
//----------------------------------------------------//
test *questions = new test[n]; // Выделяем динамическую память под кол-во вопросов.
char ch1 = '*',
ch2 = '@';
for (int i = 0; i < n; i++) // Не знаю как реализовать запись в массив структур.
{
}
delete[] questions;
system("pause");
} |
|