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

Чтение массива структур из бинарного файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить последнюю букву из каждого слова заданного текста (файловый ввод/вывод) http://www.cyberforum.ru/cpp-beginners/thread1859235.html
В текстовом файле задана последовательность слов, обособленных пробелами. Удалить последнюю букву из каждого слова, результат вывести на экран.
C++ Найти произведение и количество положительных элементов заданной матрицы Помогите, пожалуйста, решить. Заранее спасибо. Задача: Найти произведение и количества положительных элементов матрицы A http://www.cyberforum.ru/cpp-beginners/thread1859226.html
Нестабильная работа программы при большом количестве строк во входном потоке C++
Вопрос с подвохом: пользователь вставляет n строк символов в консоль, где n > 1000. Задание - сделать так, чтобы программа не зависала и не вылетала. while (true) { cout << "Уведіть строку : "; //поток STL getline(cin, a); cout << "Ваша строка :" << a << endl; cin.clear();
C++ Как сделать что бы число зарандомилось один раз
srand ( time(0) ); int balans=rand()%50+0; int count; cin>>count; switch(count) { case 1: { cout<<"Balans na carte sostavlyaet "<<balans<<" grn"<<endl; Sleep(1000);
C++ Программа "Терминал официанта" http://www.cyberforum.ru/cpp-beginners/thread1859172.html
программа оформления официантом заказа, официант выбирает номер столика, выбор блюд, их вес, количество, варианты оплаты. Предусмотреть вариант оплаты по карточке.(в консольке) помогите с какой либо частью программы, или что использовать? каким способом?
C++ Вычисление значения одной из заданных функций в заданной точке Всем привет! Нужно написать программку на вычисление значения одной из заданных функций в точке, но незнаю с чего начать и чем закончить, только начал учить С++ Помогите пожалуйста, очень нужно!) Условие: Составить Программу которая вычисляет значение одной из заданных функций в указанной точке. Вид простейшего меню: Введите номер функции: 1) y = 1\x 2) y = 1\(x*x) 3) y = 1\(x*x*x) подробнее

Показать сообщение отдельно
pavlenko2k16
0 / 0 / 0
Регистрация: 24.09.2016
Сообщений: 92
24.11.2016, 20:33  [ТС]     Чтение массива структур из бинарного файла
C++
1
2
3
4
5
6
7
struct tick {
    char name[25];
    int day;
    int month;
    int year;
    int cost;
};
вот структура

Добавлено через 18 секунд
вот полный код, если интересует
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include <fstream>
#include <windows.h>
#include <iostream>
#include <cstdio>
 
using namespace std;
 
struct tick {
    char name[25];
    int day;
    int month;
    int year;
    int cost;
};
 
void Sort (fstream& buf, int num) {
    buf.seekg(0); 
    tick ticks[num];
    
    for (int i = 0; i < num; i++) {
    buf.read((char*)&ticks[i], sizeof(tick));
        cout << endl << ticks[i].name;
    }
    for (int i = 0; i < num; i++)
    for (int j = 0; j < (num - 1); j++) {
    if (ticks[j].name > ticks[j + 1].name)
    swap (ticks[j].name, ticks[j + 1].name);
    }
}
 
void zapolnenie () {
    ofstream out ("input.dat", ios_base::out | ios_base::binary | ios_base::app);
    
    int num;
    char cc[100];
    
    cout << "Введите количество тиков: ";;
    cin >> num;
    gets(cc);
    tick ticker[num];
    
    for (int i = 0; i < num; i++) {
        cout << endl << "Введите название тика: ";
        gets(ticker[i].name);
        for (;;) {
        cout << endl << "Введите дату (ДД ММ ГГГГ): "; 
        cin >> ticker[i].day; 
        cin >> ticker[i].month;
        cin >> ticker[i].year;
        gets(cc);
        if (ticker[i].day > 31 || ticker[i].day <= 0 || ticker[i].month <= 0 || ticker[i].month > 12 || ticker[i].year <= 0)
        cout << endl << "Повторите ввод!";
        else break;
    }
        cout << endl << "Введите стоимость: ";
        cin >> ticker[i].cost;
        gets(cc);
    }
    for (int i = 0; i < num; i++)
    out.write((char*)&ticker[i],sizeof(tick));
    out.close();
}
 
int main () {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale (0, "");
 
    string otvet;
    char buf[100];
    int schet = 0;
    tick ticks[10];
    
    cout << endl << "Желаете добавить тикеры? ";
    for (;;) {
    cin >> otvet;
    if (otvet == "Y" || otvet == "y") {
        zapolnenie();
        break;
    }   
    else if (otvet == "N" || otvet == "n")
    break;
    else cout << endl << "Повторите ввод";
    }
    
    ifstream base ("input.dat", ios_base::in | ios_base::binary);
    for (int i = 0; !base.eof(); i++) {
     schet++;
    base.read((char*)&ticks[0], sizeof(tick));
    }
    
    base.clear(); 
    base.seekg(0); 
    schet = schet - 1;
    int step = schet/10; 
    
    fstream buf1("buf1.dat",  ios_base::out | ios_base::binary);
    for (int i = 0; i < (schet - step * 9); i++) {
    base.read((char*)&ticks[0], sizeof(tick));
    buf1.write((char*)&ticks[0],sizeof(tick));
    }
    fstream buf2("buf2.dat",  ios_base::out | ios_base::binary);
    for (int i = 0; i < step; i++) {
    base.read((char*)&ticks[0], sizeof(tick));
    buf2.write((char*)&ticks[0],sizeof(tick));
    }
    fstream buf3("buf3.dat",  ios_base::out | ios_base::binary);
    for (int i = 0; i < step; i++) {
    base.read((char*)&ticks[0], sizeof(tick));
    buf3.write((char*)&ticks[0],sizeof(tick));
    }
    fstream buf4("buf4.dat",  ios_base::out | ios_base::binary);
    for (int i = 0; i < step; i++) {
    base.read((char*)&ticks[0], sizeof(tick));
    buf4.write((char*)&ticks[0],sizeof(tick));
    }
    fstream buf5("buf5.dat",  ios_base::out | ios_base::binary);
    for (int i = 0; i < step; i++) {
    base.read((char*)&ticks[0], sizeof(tick));
    buf5.write((char*)&ticks[0],sizeof(tick));
    }
    fstream buf6("buf6.dat",  ios_base::out | ios_base::binary);
    for (int i = 0; i < step; i++) {
    base.read((char*)&ticks[0], sizeof(tick));
    buf6.write((char*)&ticks[0],sizeof(tick));
    }
    fstream buf7("buf7.dat",  ios_base::out | ios_base::binary);
    for (int i = 0; i < step; i++) {
    base.read((char*)&ticks[0], sizeof(tick));
    buf7.write((char*)&ticks[0],sizeof(tick));
    }
    fstream buf8("buf8.dat",  ios_base::out | ios_base::binary);
    for (int i = 0; i < step; i++) {
    base.read((char*)&ticks[0], sizeof(tick));
    buf8.write((char*)&ticks[0],sizeof(tick));
    }
    fstream buf9("buf9.dat",  ios_base::out | ios_base::binary);
    for (int i = 0; i < step; i++) {
    base.read((char*)&ticks[0], sizeof(tick));
    buf9.write((char*)&ticks[0],sizeof(tick));
    }
    fstream buf10("buf10.dat",  ios_base::out | ios_base::binary);
    for (int i = 0; i < step; i++) {
    base.read((char*)&ticks[0], sizeof(tick));
    buf10.write((char*)&ticks[0],sizeof(tick));
    }
    
    Sort (buf1, (schet - step * 9));
    Sort (buf2, step);
    Sort (buf3, step);
    Sort (buf4, step);
    Sort (buf5, step);
    Sort (buf6, step);
    Sort (buf7, step);
    Sort (buf8, step);
    Sort (buf9, step);
    Sort (buf10, step);
    
    buf1.close();
    buf2.close();
    buf3.close();
    buf4.close();
    buf5.close();
    buf6.close();
    buf7.close();
    buf8.close();
    buf9.close();
    buf10.close();
    remove("buf1.dat"); 
    remove("buf2.dat");
    remove("buf3.dat");
    remove("buf4.dat");
    remove("buf5.dat");
    remove("buf6.dat");
    remove("buf7.dat");
    remove("buf8.dat");
    remove("buf9.dat");
    remove("buf10.dat");
}
 
Текущее время: 00:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru