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

Создание структуры Date - C++

Восстановить пароль Регистрация
 
Аматор
0 / 0 / 0
Регистрация: 15.12.2012
Сообщений: 18
21.01.2013, 22:57     Создание структуры Date #1
Всем привет!
Задание такое:
//Объявите структуру Date, которая должна содержать данные, необходимые для решения следующей задачи:
//Пользователь должен иметь возможность:
//А) формировать любое количество дат в программе
//Б) сортировать даты по году
//В) сохранять данные в файле
//Г) считывать данные из файла
//Д) удалять даты, удовлетворяющие заданному критерию

А,В,Г у меня получилось сделать, а вот с В и Д беда, плохо работаю с динамическими массивами ;( помогите пожалуйста, как их сделать? Много функций уже есть...
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
#include <iostream>
#include <Windows.h>
#include <cstring>
#include <fstream>
#include <conio.h>
#include <string.h>
using namespace std;
 
void Get_amount_floor();
void Get_Info_in_file();
    int stroka=0;
    //int ar[3][stroka];
struct Date
{
 
public:
    void Set_Year();
    void Set_Month(unsigned char Value);
    void Set_Day(unsigned char Value);
    void Get_info(ofstream &out);
 
private:
    unsigned char Day;
    unsigned char Month;
    unsigned short Year;
};
 
//===========================================================================//
 
void main()
{
    system("chcp 1251->text");
    
    ofstream out_file_0("data_Data.txt"  , ios::out | ios::app) ; /* хранится инфо о датах       */
    //ifstream in_file_0("data_Data.txt");                            /* считывание инфо о датах     */              
 
MENU:;
    int Operation;
    cout << " 1 - Сформировать дату  " << endl;
    cout << " 2 - Сортировать даты  " << endl;
    cout << " 3 - Сохранить данные в файле " << endl;
    cout << " 4 - Считать данные из файла  " << endl;
    cout << " 5 - удалять даты, удовлетворяющие заданному критерию " << endl;
    cout << " 6  - Выход из программы " << endl << endl;
 
    cout << " Ваш выбор : "; cin >> Operation;
 
    switch(Operation)
    {
    case 1: goto CreateData              ; break;
    case 2: goto Sort_Data         ; break;
    case 3: goto Write_Date_in_file  ; break;
    case 4: goto Read_Data_from_file ; break;
    case 5: goto Delete_Data                ; break;
 
    case 6: exit(1); break;
    default: system("cls") ; goto MENU; break;
    }
 
//===========================================================================//
 
CreateData:;
             
    system("cls");
    Date New_date;
    unsigned char Day;
    unsigned char Month;
    cout << "Введите день : "                       ; cin >> Day ; New_date.Set_Day(Day);
    cout << "Введите месяц : "                       ; cin >> Month ; New_date.Set_Month(Month);
                                                                    New_date.Set_Year();
    MessageBox(0,L" Дата успешно добавлена " , L"Success",MB_OK) ; 
    system("cls") ;
    goto MENU ;
 
                                                                     //
//===========================================================================//
// Запись информации о созданной дате в файл                              //
 
Write_Date_in_file:;
    stroka++; // Количество записей дат
    New_date.Get_info(out_file_0);
    MessageBox(0,L"Запись успешно сделана",L"Success",MB_OK);
    system("cls");
    goto MENU;
 
//                                                                           //
//===========================================================================//
// Считать информацию о дате из файла                                    //
 
Read_Data_from_file:;
    Get_Info_in_file();
    MessageBox(0,L"Считывание информации прошло успешно ",L"Success",MB_OK);
    system("cls");
    goto MENU;
 
//                                                                           //
//===========================================================================//
// сортировать записи                          //
 
Sort_Data:;
 
    MessageBox(0,L"Завершение программы",L"Message",MB_OK);
    goto MENU;
 //                                                                           //
//===========================================================================//
// Удалить даты, удовлетворяющие заданному критерию                       //
Delete_Data:;
    int Day1=0, Month1=0, Year1=0;
    cout << "Введите дату,которую нужно удалить : \nДень"                       ; cin >> Day1 ;
        cout << "Месяц"                       ; cin >> Month1 ;
            cout << "Год"                       ; cin >> Year1 ;
 
 
 
       MessageBox(0,L"Удаление завершено",L"Message",MB_OK);
       cout<<stroka;
       system("cls");
       goto MENU;
 }
 
//===========================================================================//
// Методы                                                                    //
//===========================================================================//
 
void Date::Set_Day(unsigned char Value1)
{
    Day = Value1;
}
 
 void Date::Set_Month(unsigned char Value2)
{
    Month = Value2;
}
 
void Date::Set_Year()
{
    cout << "Год: ";
    //cin.getline(Year,63);
    cin >> Year;
}
void Date::Get_info(ofstream &out)
{
    out << "* Информация о дате " << endl;
    out << "*\t\t День : " << Day << endl;
        out << "*\t\t Месяц : " << Month << endl;
            out << "*\t\t Год : " << Year << endl;
}
 
 
void Get_Info_in_file()
{
    ifstream file("data_Data.txt");
    system("cls");
    char buff;
 
    for(int i = 0 ; !file.eof() ; i++)
    {
        buff = file.get();
        cout << buff;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2013, 22:57     Создание структуры Date
Посмотрите здесь:

Создание структуры. C++
Создание структуры C++
C++ Создание структуры)))
C++ Создание класса Date.Помогите сделать!
Создание структуры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Starscream
21.01.2013, 23:01
  #2

Не по теме:

Знакомый код

Аматор
0 / 0 / 0
Регистрация: 15.12.2012
Сообщений: 18
21.01.2013, 23:37  [ТС]     Создание структуры Date #3
Цитата Сообщение от Starscream Посмотреть сообщение

Не по теме:

Знакомый код

Ага, спасибо! Я немного подкорректировал под себя)
Кстати, 1 сообщение изменять нельзя... Б и Д, конечно. Сортировка по полной дате, то есть наверно сначала проверка на год, при совпадении на месяц, день ...
Starscream
 Аватар для Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
22.01.2013, 00:26     Создание структуры Date #4
я в прошлой задаче (про животных) тоже застрял на сортировке , проблема была в считывание данных из файла в новый массив структур (те для каждого животного нужно вынуть информацию из файла в определенном месте а как сделать это незнаю ) + например переменная под хранения возраста была int а при с читывании чисел из файла проблема возникает (какоето другое число считывается)

Добавлено через 13 минут
Вот жалкая попытка создать функциию для сортировки мб пригодится (застрял уже на считывание инфы из файла)
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
void Get_Sort_Info()
{
    ifstream read_file("data_Animal.txt");
    system("cls");
 
    _MENU:;
 
    int _Operation;
    cout << " 1 - Сортировать по возрасту " << endl;
    cout << " 2 - Сортировать по половому признаку " << endl;
    cout << " 3 - Сортировать по наличию хозяина " << endl;
    cout << " 4 - Сортировать по имени " << endl;
 
    cout << " Ваш выбор : "; cin >> _Operation;
 
//=============================//
 
    int _AmountAnimal = 0;
    char Buffer;
    for(int i = 0 ; !read_file.eof() ; i++) /* находим количество животных */
    {
        Buffer = read_file.get();
        if((Buffer == '>') || (Buffer == '<'))
            _AmountAnimal++;
        if(read_file.eof())
            read_file.close();
    }
 
    Animal *Arr_Animal = new Animal[_AmountAnimal]; /* создаем массив структур чтобы записать инфо о каждом животном */
    char _1Buffer;
    ifstream read_file_2("data_Animal.txt");
 
    for(int i = 0 ; i <= _AmountAnimal - 1 ; ) /* крутим животных */
    {
        _1Buffer = read_file_2.get();
        if((_1Buffer == '<') || (_1Buffer == '>'))
        {
        for(int j = 0 ; ; j++)
        {
        _1Buffer = read_file_2.get();
        cout << _1Buffer;
        
        if(_1Buffer == ':')
        {
            for(int q = 0; ;q++)
            {
                _1Buffer = read_file_2.get();
                if(_1Buffer == '/') break;
                Arr_Animal[i]._Age[q] = _1Buffer;
            }
        }
        
        if(_1Buffer == '/')
        {
            _1Buffer = read_file_2.get();
            switch(_1Buffer)
            {
            case '0': Arr_Animal[i].floor = false; break ;
            case '1': Arr_Animal[i].floor = true ; break ;
            }
            _1Buffer = read_file_2.get();
        }
 
        if(_1Buffer == '\\')
        {
            _1Buffer = read_file_2.get();
            switch(_1Buffer)
            {
            case '0': Arr_Animal[i].Owner = false; break ;
            case '1': Arr_Animal[i].Owner = true ; break ;
            }
            _1Buffer = read_file_2.get();
        }
 
        if(_1Buffer == '|')
            for(int z = 0 ; ; z++)
            {
                _1Buffer = read_file_2.get();
                if(_1Buffer == '_') break;
                Arr_Animal[i].Name[z] = _1Buffer;
            }
            break;
        }
        i++;
        }
        
    }
 
//=============================//
 
    switch(_Operation)
    {
    case 1:  system("cls")  ; goto Sort_Age   ; break ;
    case 2:  system("cls")  ; goto Sort_floor ; break ;
    case 3:  system("cls")  ; goto Sort_Owner ; break ; 
    case 4:  system("cls")  ; goto Sort_Name  ; break ;
    default: system("cls")  ; goto _MENU      ; break ;
    }
 
//===========================//
Sort_Age:;
 
//===========================//
Sort_floor:;
 
//===========================//
Sort_Owner:;
 
//===========================//
Sort_Name:;
 
//===========================//
 
    delete [] Arr_Animal;
}
также изменил лог в файле вот пример
Кликните здесь для просмотра всего текста
<***************************LOG ANIMAL******************************
* Информация о живтоном for_reading_log:3/1\0|Кот_

* Возраст животного : 3 лет
* Имя животного : Кот
* Пол животного : мужской
* Есть ли у живтоного хозяин : нет
<***************************LOG ANIMAL******************************
* Информация о живтоном for_reading_log:6/1\1|Собака_

* Возраст животного : 6 лет
* Имя животного : Собака
* Пол животного : мужской
* Есть ли у живтоного хозяин : да


Не по теме:

ну и вот весь код мб кто поможет найти и исправить ошибку с записью инфы из файла


Кликните здесь для просмотра всего текста
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
#include <iostream>
#include <Windows.h>
#include <cstring>
#include <fstream>
using namespace std;
 
void Get_amount_floor();
void Get_Info_in_file();
 
struct Animal
{
 
public:
    void Set_Age(int Value);
    void Set_floor(bool f);
    void Set_Owner(bool O);
    void Set_Name();
    void Get_info(ofstream &out);
    friend void Get_Sort_Info();
    char _Age[3]; /* возраст для сортировки */
private:
    int Age;
    bool floor;      /* 1 - м , 0 - ж                     */
    bool Owner;      /* 1 - есть хозяин , 0 - нет хозяина */
    char Name[64];
    
};
 
//===========================================================================//
 
void main()
{
    system("chcp 1251->text");
    
    ofstream out_file_0("data_Animal.txt"  , ios::out | ios::app) ; /* хранится инфо о животных       */
    //ifstream in_file_0("data_Animal.txt");                            /* считывание инфо о животных     */              
 
MENU:;
    int Operation;
    cout << " 1 - Создать животного " << endl;
    cout << " 2 - Подсчитать количество животных с заданным полом " << endl;
    cout << " 3 - Сохранить информацию о созданном животном в файл " << endl;
    cout << " 4 - Считать информацию о животных из файла " << endl;
    cout << " 5 - Сортировать записи " << endl;
    cout << " 6  - Выход из программы " << endl << endl;
 
    cout << " Ваш выбор : "; cin >> Operation;
 
    switch(Operation)
    {
    case 1: goto CreateAnimal               ; break;
    case 2: goto AmountAnimal_floor         ; break;
    case 3: goto Write_Info_Animal_in_file  ; break;
    case 4: goto Read_Info_Animal_from_file ; break;
    case 5: goto Sort_Animal                ; break;
 
    case 6: exit(1); break;
    default: system("cls") ; goto MENU; break;
    }
 
//===========================================================================//
 
CreateAnimal:;
             
    system("cls");
    Animal New_animal;
    int Age;
    bool f , o ;
    cout << "Введите возраст животного : "                       ; cin >> Age ; New_animal.Set_Age(Age);
    cout << "Введите пол животного ( 1 - м || 0 - ж ) : "        ; cin >> f   ; New_animal.Set_floor(f);
    cout << "Есть ли у животного хозяин ( 1 - да || 0 - нет ) : "; cin >> o   ; New_animal.Set_Owner(o);
                                                                              ; New_animal.Set_Name()  ;
    MessageBox(0," Животное успешно создано " , "Success",MB_OK) ; 
    system("cls") ;
    goto MENU ;
 
//===========================================================================//
// Подсчет количества животных с заданным полом                              //
 
AmountAnimal_floor:;
    Get_amount_floor();
    system("cls");
    goto MENU;
//                                                                           //
//===========================================================================//
// Запись информации о созданом животном в файл                              //
 
Write_Info_Animal_in_file:;
    New_animal.Get_info(out_file_0);
    MessageBox(0,"Запись успешно сделана","Success",MB_OK);
    system("cls");
    goto MENU;
 
//                                                                           //
//===========================================================================//
// Считать информацию о животном из файла                                    //
 
Read_Info_Animal_from_file:;
    Get_Info_in_file();
    MessageBox(0,"Считывание информации прошло успешно ","Success",MB_OK);
    system("cls");
    goto MENU;
 
//                                                                           //
//===========================================================================//
// сортировать записи согласно заданному критерию                            //
 
Sort_Animal:;
    Get_Sort_Info();
 
//                                                                           //
//===========================================================================//
 
    
    MessageBox(0,"Завершение программы","Message",MB_OK);
    exit(0);
}
 
 
//===========================================================================//
// Методы                                                                    //
//===========================================================================//
 
void Animal::Set_Age(int Value)
{
    Age = Value;
}
 
void Animal::Set_floor(bool f)
{
    floor = f;
}
 
void Animal::Set_Owner(bool O)
{
    Owner = O;
}
 
void Animal::Set_Name()
{
    cout << " Введите имя животного : ";
    cin.getline(Name,63);
    cin >> Name;
}
 
void Animal::Get_info(ofstream &out)
{
    if(floor)
    {
        out << "<***************************LOG ANIMAL******************************" << endl;
    }
    else
    {
        out << ">***************************LOG ANIMAL******************************" << endl;
    }
 
    char buffer[1000];
    sprintf(buffer ," * Информация о живтоном for_reading_log:%d/%d\\%d|" , Age , floor , Owner);
    for(int i = 0 ; i <= strlen(buffer) - 1 ; i++) out << buffer[i];
    for(int i = 0 ; i <= strlen(Name) - 1 ; i++) out << Name[i]; out << '_'; out << endl << endl;
 
    out << "*\t\t Возраст животного : " << Age << " лет " << endl;
 
    out << "*\t\t Имя животного : ";
    for(int i = 0 ; i <= strlen(Name) - 1 ; i++)
    out << Name[i];
    out << endl;
 
    if(floor)
        out << "*\t\t Пол животного : мужской " << endl;
    else
        out << "*\t\t Пол животного : женский " << endl;
 
    if(Owner)
        out << "*\t\t Есть ли у живтоного хозяин : да " << endl;
    else
        out << "*\t\t Есть ли у живтоного хозяин : нет " << endl;
}
 
void Get_amount_floor()
{
ifstream read_floor("data_Animal.txt");
 
    char buffer;
    int man = 0 , woman = 0;
    for(int i = 0 ; !read_floor.eof() ; i++)
    {
        read_floor >> buffer;
        if(buffer == '<')
            man++;
        if(buffer== '>')
            woman++;
    }
    
    char str[100];
    sprintf(str," Количество животных мужского пола = %d \n Количество животных женского пола = %d "  , man , woman);
    MessageBox(0, str , "" , MB_OK  );
}
 
void Get_Info_in_file()
{
    ifstream file("data_Animal.txt");
    system("cls");
    char buff;
 
    for(int i = 0 ; !file.eof() ; i++)
    {
        buff = file.get();
        cout << buff;
    }
}
 
void Get_Sort_Info()
{
    ifstream read_file("data_Animal.txt");
    system("cls");
 
    _MENU:;
 
    int _Operation;
    cout << " 1 - Сортировать по возрасту " << endl;
    cout << " 2 - Сортировать по половому признаку " << endl;
    cout << " 3 - Сортировать по наличию хозяина " << endl;
    cout << " 4 - Сортировать по имени " << endl;
 
    cout << " Ваш выбор : "; cin >> _Operation;
 
//=============================//
 
    int _AmountAnimal = 0;
    char Buffer;
    for(int i = 0 ; !read_file.eof() ; i++) /* находим количество животных */
    {
        Buffer = read_file.get();
        if((Buffer == '>') || (Buffer == '<'))
            _AmountAnimal++;
        if(read_file.eof())
            read_file.close();
    }
 
    Animal *Arr_Animal = new Animal[_AmountAnimal]; /* создаем массив структур чтобы записать инфо о каждом животном */
    char _1Buffer;
    ifstream read_file_2("data_Animal.txt");
 
    for(int i = 0 ; i <= _AmountAnimal - 1 ; ) /* крутим животных */
    {
        _1Buffer = read_file_2.get();
        if((_1Buffer == '<') || (_1Buffer == '>'))
        {
        for(int j = 0 ; ; j++)
        {
        _1Buffer = read_file_2.get();
        cout << _1Buffer;
        
        if(_1Buffer == ':')
        {
            for(int q = 0; ;q++)
            {
                _1Buffer = read_file_2.get();
                if(_1Buffer == '/') break;
                Arr_Animal[i]._Age[q] = _1Buffer;
            }
        }
        
        if(_1Buffer == '/')
        {
            _1Buffer = read_file_2.get();
            switch(_1Buffer)
            {
            case '0': Arr_Animal[i].floor = false; break ;
            case '1': Arr_Animal[i].floor = true ; break ;
            }
            _1Buffer = read_file_2.get();
        }
 
        if(_1Buffer == '\\')
        {
            _1Buffer = read_file_2.get();
            switch(_1Buffer)
            {
            case '0': Arr_Animal[i].Owner = false; break ;
            case '1': Arr_Animal[i].Owner = true ; break ;
            }
            _1Buffer = read_file_2.get();
        }
 
        if(_1Buffer == '|')
            for(int z = 0 ; ; z++)
            {
                _1Buffer = read_file_2.get();
                if(_1Buffer == '_') break;
                Arr_Animal[i].Name[z] = _1Buffer;
            }
            break;
        }
        i++;
        }
        
    }
 
//=============================//
 
    switch(_Operation)
    {
    case 1:  system("cls")  ; goto Sort_Age   ; break ;
    case 2:  system("cls")  ; goto Sort_floor ; break ;
    case 3:  system("cls")  ; goto Sort_Owner ; break ; 
    case 4:  system("cls")  ; goto Sort_Name  ; break ;
    default: system("cls")  ; goto _MENU      ; break ;
    }
 
//===========================//
Sort_Age:;
 
//===========================//
Sort_floor:;
 
//===========================//
Sort_Owner:;
 
//===========================//
Sort_Name:;
 
//===========================//
 
    delete [] Arr_Animal;
}

Правда там черт ногу сломит )
Аматор
0 / 0 / 0
Регистрация: 15.12.2012
Сообщений: 18
22.01.2013, 00:34  [ТС]     Создание структуры Date #5
Цитата Сообщение от Starscream Посмотреть сообщение
я в прошлой задаче (про животных) тоже застрял на сортировке , проблема была в считывание данных из файла в новый массив структур (те для каждого животного нужно вынуть информацию из файла в определенном месте а как сделать это незнаю ) + например переменная под хранения возраста была int а при с читывании чисел из файла проблема возникает (какоето другое число считывается)

Добавлено через 13 минут
Вот жалкая попытка создать функциию для сортировки мб пригодится (застрял уже на считывание инфы из файла)

также изменил лог в файле вот пример
Кликните здесь для просмотра всего текста
<***************************LOG ANIMAL******************************
* Информация о живтоном for_reading_log:3/1\0|Кот_

* Возраст животного : 3 лет
* Имя животного : Кот
* Пол животного : мужской
* Есть ли у живтоного хозяин : нет
<***************************LOG ANIMAL******************************
* Информация о живтоном for_reading_log:6/1\1|Собака_

* Возраст животного : 6 лет
* Имя животного : Собака
* Пол животного : мужской
* Есть ли у живтоного хозяин : да


Не по теме:

ну и вот весь код мб кто поможет найти и исправить ошибку с записью инфы из файла


Кликните здесь для просмотра всего текста
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
#include <iostream>
#include <Windows.h>
#include <cstring>
#include <fstream>
using namespace std;
 
void Get_amount_floor();
void Get_Info_in_file();
 
struct Animal
{
 
public:
    void Set_Age(int Value);
    void Set_floor(bool f);
    void Set_Owner(bool O);
    void Set_Name();
    void Get_info(ofstream &out);
    friend void Get_Sort_Info();
    char _Age[3]; /* возраст для сортировки */
private:
    int Age;
    bool floor;      /* 1 - м , 0 - ж                     */
    bool Owner;      /* 1 - есть хозяин , 0 - нет хозяина */
    char Name[64];
    
};
 
//===========================================================================//
 
void main()
{
    system("chcp 1251->text");
    
    ofstream out_file_0("data_Animal.txt"  , ios::out | ios::app) ; /* хранится инфо о животных       */
    //ifstream in_file_0("data_Animal.txt");                            /* считывание инфо о животных     */              
 
MENU:;
    int Operation;
    cout << " 1 - Создать животного " << endl;
    cout << " 2 - Подсчитать количество животных с заданным полом " << endl;
    cout << " 3 - Сохранить информацию о созданном животном в файл " << endl;
    cout << " 4 - Считать информацию о животных из файла " << endl;
    cout << " 5 - Сортировать записи " << endl;
    cout << " 6  - Выход из программы " << endl << endl;
 
    cout << " Ваш выбор : "; cin >> Operation;
 
    switch(Operation)
    {
    case 1: goto CreateAnimal               ; break;
    case 2: goto AmountAnimal_floor         ; break;
    case 3: goto Write_Info_Animal_in_file  ; break;
    case 4: goto Read_Info_Animal_from_file ; break;
    case 5: goto Sort_Animal                ; break;
 
    case 6: exit(1); break;
    default: system("cls") ; goto MENU; break;
    }
 
//===========================================================================//
 
CreateAnimal:;
             
    system("cls");
    Animal New_animal;
    int Age;
    bool f , o ;
    cout << "Введите возраст животного : "                       ; cin >> Age ; New_animal.Set_Age(Age);
    cout << "Введите пол животного ( 1 - м || 0 - ж ) : "        ; cin >> f   ; New_animal.Set_floor(f);
    cout << "Есть ли у животного хозяин ( 1 - да || 0 - нет ) : "; cin >> o   ; New_animal.Set_Owner(o);
                                                                              ; New_animal.Set_Name()  ;
    MessageBox(0," Животное успешно создано " , "Success",MB_OK) ; 
    system("cls") ;
    goto MENU ;
 
//===========================================================================//
// Подсчет количества животных с заданным полом                              //
 
AmountAnimal_floor:;
    Get_amount_floor();
    system("cls");
    goto MENU;
//                                                                           //
//===========================================================================//
// Запись информации о созданом животном в файл                              //
 
Write_Info_Animal_in_file:;
    New_animal.Get_info(out_file_0);
    MessageBox(0,"Запись успешно сделана","Success",MB_OK);
    system("cls");
    goto MENU;
 
//                                                                           //
//===========================================================================//
// Считать информацию о животном из файла                                    //
 
Read_Info_Animal_from_file:;
    Get_Info_in_file();
    MessageBox(0,"Считывание информации прошло успешно ","Success",MB_OK);
    system("cls");
    goto MENU;
 
//                                                                           //
//===========================================================================//
// сортировать записи согласно заданному критерию                            //
 
Sort_Animal:;
    Get_Sort_Info();
 
//                                                                           //
//===========================================================================//
 
    
    MessageBox(0,"Завершение программы","Message",MB_OK);
    exit(0);
}
 
 
//===========================================================================//
// Методы                                                                    //
//===========================================================================//
 
void Animal::Set_Age(int Value)
{
    Age = Value;
}
 
void Animal::Set_floor(bool f)
{
    floor = f;
}
 
void Animal::Set_Owner(bool O)
{
    Owner = O;
}
 
void Animal::Set_Name()
{
    cout << " Введите имя животного : ";
    cin.getline(Name,63);
    cin >> Name;
}
 
void Animal::Get_info(ofstream &out)
{
    if(floor)
    {
        out << "<***************************LOG ANIMAL******************************" << endl;
    }
    else
    {
        out << ">***************************LOG ANIMAL******************************" << endl;
    }
 
    char buffer[1000];
    sprintf(buffer ," * Информация о живтоном for_reading_log:%d/%d\\%d|" , Age , floor , Owner);
    for(int i = 0 ; i <= strlen(buffer) - 1 ; i++) out << buffer[i];
    for(int i = 0 ; i <= strlen(Name) - 1 ; i++) out << Name[i]; out << '_'; out << endl << endl;
 
    out << "*\t\t Возраст животного : " << Age << " лет " << endl;
 
    out << "*\t\t Имя животного : ";
    for(int i = 0 ; i <= strlen(Name) - 1 ; i++)
    out << Name[i];
    out << endl;
 
    if(floor)
        out << "*\t\t Пол животного : мужской " << endl;
    else
        out << "*\t\t Пол животного : женский " << endl;
 
    if(Owner)
        out << "*\t\t Есть ли у живтоного хозяин : да " << endl;
    else
        out << "*\t\t Есть ли у живтоного хозяин : нет " << endl;
}
 
void Get_amount_floor()
{
ifstream read_floor("data_Animal.txt");
 
    char buffer;
    int man = 0 , woman = 0;
    for(int i = 0 ; !read_floor.eof() ; i++)
    {
        read_floor >> buffer;
        if(buffer == '<')
            man++;
        if(buffer== '>')
            woman++;
    }
    
    char str[100];
    sprintf(str," Количество животных мужского пола = %d \n Количество животных женского пола = %d "  , man , woman);
    MessageBox(0, str , "" , MB_OK  );
}
 
void Get_Info_in_file()
{
    ifstream file("data_Animal.txt");
    system("cls");
    char buff;
 
    for(int i = 0 ; !file.eof() ; i++)
    {
        buff = file.get();
        cout << buff;
    }
}
 
void Get_Sort_Info()
{
    ifstream read_file("data_Animal.txt");
    system("cls");
 
    _MENU:;
 
    int _Operation;
    cout << " 1 - Сортировать по возрасту " << endl;
    cout << " 2 - Сортировать по половому признаку " << endl;
    cout << " 3 - Сортировать по наличию хозяина " << endl;
    cout << " 4 - Сортировать по имени " << endl;
 
    cout << " Ваш выбор : "; cin >> _Operation;
 
//=============================//
 
    int _AmountAnimal = 0;
    char Buffer;
    for(int i = 0 ; !read_file.eof() ; i++) /* находим количество животных */
    {
        Buffer = read_file.get();
        if((Buffer == '>') || (Buffer == '<'))
            _AmountAnimal++;
        if(read_file.eof())
            read_file.close();
    }
 
    Animal *Arr_Animal = new Animal[_AmountAnimal]; /* создаем массив структур чтобы записать инфо о каждом животном */
    char _1Buffer;
    ifstream read_file_2("data_Animal.txt");
 
    for(int i = 0 ; i <= _AmountAnimal - 1 ; ) /* крутим животных */
    {
        _1Buffer = read_file_2.get();
        if((_1Buffer == '<') || (_1Buffer == '>'))
        {
        for(int j = 0 ; ; j++)
        {
        _1Buffer = read_file_2.get();
        cout << _1Buffer;
        
        if(_1Buffer == ':')
        {
            for(int q = 0; ;q++)
            {
                _1Buffer = read_file_2.get();
                if(_1Buffer == '/') break;
                Arr_Animal[i]._Age[q] = _1Buffer;
            }
        }
        
        if(_1Buffer == '/')
        {
            _1Buffer = read_file_2.get();
            switch(_1Buffer)
            {
            case '0': Arr_Animal[i].floor = false; break ;
            case '1': Arr_Animal[i].floor = true ; break ;
            }
            _1Buffer = read_file_2.get();
        }
 
        if(_1Buffer == '\\')
        {
            _1Buffer = read_file_2.get();
            switch(_1Buffer)
            {
            case '0': Arr_Animal[i].Owner = false; break ;
            case '1': Arr_Animal[i].Owner = true ; break ;
            }
            _1Buffer = read_file_2.get();
        }
 
        if(_1Buffer == '|')
            for(int z = 0 ; ; z++)
            {
                _1Buffer = read_file_2.get();
                if(_1Buffer == '_') break;
                Arr_Animal[i].Name[z] = _1Buffer;
            }
            break;
        }
        i++;
        }
        
    }
 
//=============================//
 
    switch(_Operation)
    {
    case 1:  system("cls")  ; goto Sort_Age   ; break ;
    case 2:  system("cls")  ; goto Sort_floor ; break ;
    case 3:  system("cls")  ; goto Sort_Owner ; break ; 
    case 4:  system("cls")  ; goto Sort_Name  ; break ;
    default: system("cls")  ; goto _MENU      ; break ;
    }
 
//===========================//
Sort_Age:;
 
//===========================//
Sort_floor:;
 
//===========================//
Sort_Owner:;
 
//===========================//
Sort_Name:;
 
//===========================//
 
    delete [] Arr_Animal;
}

Правда там черт ногу сломит )
У меня другое задание)) просто за основу взят твой код с Animal'а...)
Yandex
Объявления
22.01.2013, 00:34     Создание структуры Date
Ответ Создать тему
Опции темы

Текущее время: 13:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru