С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 15.12.2012
Сообщений: 18
1

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

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

Author24 — интернет-сервис помощи студентам
Всем привет!
Задание такое:
//Объявите структуру 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.01.2013, 22:57
Ответы с готовыми решениями:

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

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

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

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

4
Starscream
21.01.2013, 23:01
  #2

Не по теме:

Знакомый код :D

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

Не по теме:

Знакомый код :D

Ага, спасибо! Я немного подкорректировал под себя)
Кстати, 1 сообщение изменять нельзя... Б и Д, конечно. Сортировка по полной дате, то есть наверно сначала проверка на год, при совпадении на месяц, день ...
0
57 / 45 / 14
Регистрация: 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
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2013, 00:34
Помогаю со студенческими работами здесь

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

Создание структуры Город
Создать структуру Город, имеющую поля типа int, double, char, bool, статический строковый массив...

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru