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

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

Войти
Регистрация
Восстановить пароль
 
Аматор
0 / 0 / 0
Регистрация: 15.12.2012
Сообщений: 18
#1

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

21.01.2013, 22:57. Просмотров 419. Ответов 4
Метки нет (Все метки)

Всем привет!
Задание такое:
//Объявите структуру 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;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2013, 22:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание структуры Date (C++):

Создание класса Date.Помогите сделать! - C++
Создать класс Date для работы с датой в формате &quot;год.месяц.день&quot;. Дата представляется структурой с тремя полями типа unsigned int: для...

Создание структуры. - C++
Помогите разобраться с задачей.. Создайте структуру – vector. Структура должна содержать поинтер к типу long double и число координат...

Создание структуры - C++
Здравствуйте!!!Помогите написать практическую работу на тему &quot;Создание структуры. Поиск информации из файла. Запись в файл. Чтение из...

Создание структуры))) - C++
Нужна помощь и советы людей которые знают))) Помогите решить задачи! и дайте советы по быстрому изучению структур, указателей, сортировки...

Создание структуры - C++
Обьявить структуру &quot;студент&quot;. Структура должна содержать фамилию, имя студента и его средний балл. Создать массив из 10 студентов (элементы...

Создание структуры программы - C++
Приветствую всех! Подскажите такой вопрос: имеется граф из 5 вершин, где вершина представляет собой некий город. Между городами...

4
Starscream
21.01.2013, 23:01
  #2

Не по теме:

Знакомый код

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

Не по теме:

Знакомый код

Ага, спасибо! Я немного подкорректировал под себя)
Кстати, 1 сообщение изменять нельзя... Б и Д, конечно. Сортировка по полной дате, то есть наверно сначала проверка на год, при совпадении на месяц, день ...
0
Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
22.01.2013, 00:26 #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 / 0
Регистрация: 15.12.2012
Сообщений: 18
22.01.2013, 00:34  [ТС] #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'а...)
0
22.01.2013, 00:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2013, 00:34
Привет! Вот еще темы с ответами:

Динамическое создание структуры - C++
У меня есть h файл в котором описаны структуры. Можно ли его подключить к проекту динамически? То есть сейчас я подключаю этот файл,...

Создание структуры в заголовочном файле - C++
Доброго времени суток! Решил заняться разработкой приложений, сейчас делаю небольшую программу, библиотека SFML. Вопрос: Я создал...

Создание структуры Список студентов - C++
Нужна помощь. Есть в методичке пример создания Ведомости студентов. Код: #include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

Создание функции для структуры. - C++
Дана структура и массив структур. struct vedomost { char surname; //фамилия char otdel; //наименование отдела float zarplata;...


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

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

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