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

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

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

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

23.12.2012, 18:40. Просмотров 323. Ответов 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:
Некорректная запись структуры в файл

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

Некорректная запись в файл - C++
Столкнулся с непонятной проблемой. Есть строка которая содержит шифрованные символы ...

Некорректная запись кириллицы в файл - C++
Здравствуйте! Подскажите, пожалуйста, как можно исправить (и можно ли вообще) вот такую ошибку: 1) Вводим, например, вот такие...

Запись структуры в файл - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &quot;stdafx.h&quot; int main() { struct TDataTime { int Day; int...

запись структуры в файл - C++
ПОМОГИТЕ пожалуйста......... не могу сделать так чтобы в файл по завершению работы программы записывалось действие которое...

Запись структуры в файл - C++
Доброго времени суток! Программа: создается файл с данными художников ФИО автора , Наименование картин , год написание картин все...

Запись структуры в файл - C++
С клавиатуры вводится данные в структуру, и эту структуру надо напечатать в файл. Структура имеет вид: struct people { char*...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
23.12.2012, 19:11 #2
В 57-й и 62-й строчках вложенные for'ы по одной и той же i.
0
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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2012, 19:53
Привет! Вот еще темы с ответами:

Запись структуры в файл. - C++
Структура следующая: struct TRAIN{ char punkt; int nomb; float time; }; Массив из структур нужно записать в файл. ...

Запись структуры в файл - C++
Дано код....описание : Запись множество обиектов в файл когда размеры порождаюших классов разные Но я ни как не могу найти свзяь между...

Запись структуры в файл. - C++
3. Написать процедуры (или функции) записи в файл и считывания из файла массива структур. 4. Использовать файлы трех типов – текстовый...

Запись структуры в файл - C++
Задание заключается в том что бы не используя ofstream и ifstream создать файл и записать в него, данные с клавиатуры. #include...


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

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

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