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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Очень простая программа с "IF" http://www.cyberforum.ru/cpp-beginners/thread768416.html
Как довести до ума программу на С++ ? #include <iostream> using namespace std; void lang(); main() { int a, kilo, funt;
C++ sizeof( char * ) & sizeof(char) Здравствуйте, не могу понять почему sizeof(char *) = 4 а sizeof(char) = 1. Ну с последним ясно , а вот с первым непойму... Может кто-то обьяснит((( http://www.cyberforum.ru/cpp-beginners/thread768413.html
C++ Найти количество слов, которые начинаются и заканчиваются одной и той же буквой
Проблема(
Перечисляемый тип. Структуры C++
Доброго вечера всем :) Посмотрите пожалуйста код. Правильно ли я написал. 1. ПЕРЕЧИСЛЯЕМЫЙ ТИП (ТЕКСТ ЗАДАНИЯ) Создать тип данных для обозначения года в 12-летнем цикле по старояпонскому календарю. Года носят названия крысы,коровы,тигра,зайца,дракона,змеи,лошади,овцы, обезьяны,курицы,собаки и свиньи. Написать функции для ввода и вывода месяца и года по старояпонскому календарю. //lab1...
C++ Необходимо вычислить yij = f (xi, zj). В этих задачах x (i = 1,2, ., n) и z (j = 1,2, ., m) http://www.cyberforum.ru/cpp-beginners/thread768400.html
Необходимо вычислить yij = f (xi, zj). В этих задачах x (i = 1,2, ..., n) и z (j = 1,2, ..., m) являются элементами одномерных массивов вещественных чисел, которые содержат соответственно n и m элементов. Перед составлением алгоритма следует определить количество значений функции, которые будут получены в результате решения задачи, т.е. количество значений функции от каждого аргумента. Общее...
C++ Дано действительное число а. Найти среди чисел 1, 1+1/2, 1, 1+1/2+1/3, . первое, большее заданного числа а Дано действительное число а. Найти среди чисел 1, 1+1/2, 1, 1+1/2+1/3, ... первое, большее заданного числа а. подробнее

Показать сообщение отдельно
Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
22.01.2013, 00:26
я в прошлой задаче (про животных) тоже застрял на сортировке , проблема была в считывание данных из файла в новый массив структур (те для каждого животного нужно вынуть информацию из файла в определенном месте а как сделать это незнаю ) + например переменная под хранения возраста была 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;
}

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