Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68
#1

Некорректная запись структуры в файл - C++

23.12.2012, 18:40. Просмотров 318. Ответов 2
Метки нет (Все метки)

Добрый вечер всем!
Следующая проблема: некорректно заполняется файл из структуры.
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
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
class questions : public test, public testsystem
{
public:
    string question;
    string kind_of_answer[4];
    string answer;
    
    void getData()
    {
    ifstream ifs ("input.txt");
 
    const int SIZE=2; // кол-во вопросов
    const int NUM=4; // кол-во вариантов ответов.
    
    questions MAS[SIZE];
    string user [SIZE]; // будет содержать все варианты ответа пользователя.
    char *letter [NUM] = {"a) ", "b) ", "c) ", "d) "}; // для удоства вывода.
 
    // заполнение структуры с файла.
    for (int i=0; i<SIZE; i++)
    {
        getline (ifs, MAS[i].question);
        for (int j=0; j<NUM; j++)
           getline (ifs, MAS[i].kind_of_answer[j]);
        ifs >> MAS[i].answer;
    }
    // ответы пользователя.
    for (int i=0; i<SIZE; i++)
    {
        cout << MAS[i].question;
        cout << endl;
        for (int j=0; j<NUM; j++)
        {
            cout << letter [j] << MAS[i].kind_of_answer[j];
            cout << endl;
        }
        cin >> user [i];
    }
    // находим кол-во баллов.
    int cnt=0;
    for (int i=0; i<SIZE; i++)
        if (MAS[i].answer == user[i]) ++cnt;
    //
    cout << "Correct answer: " << cnt << endl;
    cout << "Uncorrect answer: " << SIZE - cnt << endl;
 
    ifs.close ();
    }
 
    void setData()
    {
    questions st[50];
  int n, i;
  cout << "Введите количество вопросов: ";
  cin >> n;
  for (i = 0; i < n; i ++)
  {
    cout << endl << "Вопрос " << i+1 << ":\n";
    cout << "Введите question: ";
    cin >> st[i].question;
    for(i = 0; i< 4; i++)
    {
        cout << endl <<"Введите kind_of_answer: ";
        cin >> st[i].kind_of_answer[i];
    }
    cout << "Введите answer: ";      
    cin >> st[i].answer;
   }
 
  ofstream file;
  file.open("input.txt");
 
  for (i = 0; i < n; ++i)
        {
            for (int j = 0; j < 4; j++)
            {
        file << st[i].question<<"\n";
        file <<st[j].kind_of_answer[j]<<"\n";
        file << st[i].answer;
            }
        }
  file.close();
    }
};
Данные для ввода:
Некорректная запись структуры в файл
Содержимое Input.txt:
Некорректная запись структуры в файл

Помогите, пожалуйста, а то не могу понять в чем причина такого вывода.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2012, 18:40     Некорректная запись структуры в файл
Посмотрите здесь:
Некорректная запись в файл C++
C++ Некорректная запись кириллицы в файл
Запись структуры в файл C++
C++ Запись структуры в файл
Запись в файл структуры C++
запись структуры в файл C++
C++ Запись структуры в файл.
C++ запись структуры в файл
Запись Структуры в файл C++
C++ Запись структуры в файл
C++ Запись структуры в файл
Запись структуры в файл C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
23.12.2012, 19:11     Некорректная запись структуры в файл #2
В 57-й и 62-й строчках вложенные for'ы по одной и той же i.
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68
23.12.2012, 19:53  [ТС]     Некорректная запись структуры в файл #3
Цитата Сообщение от Somebody Посмотреть сообщение
В 57-й и 62-й строчках вложенные for'ы по одной и той же i.
Спасибо! Помогло!
Но для корректного вывода в файл пришлось сделать такой вывод элементов структуры:
C++
1
2
3
4
5
6
  for (i = 0; i < n; ++i)
  file << st[i].question<<"\n";
  for (int j = 0; j < 4; j++)
  file <<st[j].kind_of_answer[j]<<"\n";
  for (i = 0; i < n; ++i)
  file << st[i].answer;
Но работает только при одном вопросе. Когда их количество равно 2 и более - тогда снова некорректный вывод.
Если не найду нормального решения - попробую через цикл do...while
Ответ Создать тему
Опции темы

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