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

Помогите,пожалуйста,разобрать код готовой программы. - C++

Восстановить пароль Регистрация
 
Leska
Сообщений: n/a
05.12.2011, 23:06     Помогите,пожалуйста,разобрать код готовой программы. #1
Помогите,пожалуйста,разобрать код готовой и работающей программы.
необходимо узнать что выполняет каждая функция и почему мы используем именно ее....

Заголовочный файл header.h
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
#ifndef AVIA_H
#define AVIAH
#include <iostream>
struct controller // авиадиспетчер
{
    struct watching_area* wa; // зона за окторой наблюдает диспетчер
    int skill; // умение от 0 до 100
    char* name; //имя диспетчера
};
struct watching_area // авиазона
{
    struct plane* pl; // инфо о грузе
    int count_plane;
    int area; //площадь зоны
    char* area_name;  // название зоны
    char* location_name; // анзвание местности
};
struct plane// самолет
{
    char* name; // марка самолета
    int speed;//скорость самолета
    int people_count; // кол-во челвоек, на которое рассчитан самолет
};
void Controller(struct controller* controller_, char* name_,int skill_); // инициализация структуры диспетчера
void Watching_area(struct watching_area* wa,  int count_plane_, int area_, char* area_name_, char* location_name_);// инициализация структуры авиа зона
void Plane(struct plane* plane_, char* name_, int people_count_, int speed_  ); // инициализации структуры "самолет"
void Print(struct controller* ctrl); //Печать 
 
void set_component(struct controller* ctrl, char* name_, int speed_, int people_count_ , int count_controller); // Ставим инфу о самоелете ,по его названию.
void write_file(struct controller* ctrl, int count, char** arg); // Пишем в файл изменения
bool equivalent(char* name1, char* name2); // Если равны возвращает 1, если нет - 0.
 
#endif
 
Файл avia.cpp
 
#include "header.h"
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
bool equivalent(char* name1, char* name2)
{
    if(strlen(name1)!=strlen(name2))
        return 0;
    else
    {
        for(int i=0; i<strlen(name1)+1;i++)
        {
            if(name1[i]!=name2[i])
                return 0;
        }
    }
    return 1;
}
void Controller(struct controller* controller_, char* name_,int skill_)
{
    if(skill_<0 || skill_>100)
    {
        cout<<"Bad skill. Set to zero"<<endl;
        controller_->skill=0;
    }
    else
        controller_->skill=skill_;
    controller_->name=new char [strlen(name_)+1];
    strcpy(controller_->name, name_);
    controller_->wa=new struct watching_area;
    controller_->wa->area=0;
    controller_->wa->area_name=0;
    controller_->wa->count_plane=0;
    controller_->wa->location_name=0;
    controller_->wa->pl=0;
}
void Watching_area(struct watching_area* wa,  int count_plane_, int area_, char* area_name_, char* location_name_)
{
    wa->area=area_;
    wa->area_name= new char [strlen(area_name_)+1];
    strcpy(wa->area_name, area_name_);
    wa->location_name= new char [strlen(location_name_)+1];
    strcpy(wa->location_name, location_name_);
    wa->count_plane=count_plane_;
    wa->pl= new plane [wa->count_plane];
    for(int i=0; i<wa->count_plane; i++) 
    {
        wa->pl[i].name=0;
        wa->pl[i].people_count=0;
        wa->pl[i].speed=0;
    }
}
void Plane(struct plane* plane_, char* name_, int people_count_, int speed_  )
{
    plane_->name=new char [strlen(name_)+1];
    strcpy(plane_->name, name_);
    plane_->people_count=people_count_;
    plane_->speed=speed_;
}
void set_component(struct controller* ctrl, char* name_, int speed_, int people_count_ , int count_controller )
{
    for(int i=0; i<count_controller; i++)
    {
        if(equivalent(ctrl->wa->pl[i].name, name_)==1)//поиск
        {
            ctrl->wa->pl[i].people_count=people_count_;
            ctrl->wa->pl[i].speed=speed_;
        }
    }
}
void Print(struct controller* ctrl)
{
    cout<<"Имя авиадиспетчера:         "<<ctrl->name<<endl;
    cout<<"Скилл авиадиспетчера (0-100):         "<<ctrl->skill<<endl;
    cout<<"Наименвоание наблюдаемой зоны:         "<<ctrl->wa->area_name<<endl;
    cout<<"Наименвоание наблюдаемой локации(местности):         "<<ctrl->wa->location_name<<"м"<<endl;
    cout<<"Площадь наблюдаемой зоны:         "<<ctrl->wa->area<<"м2"<<endl;
    cout<<"Количество самолетов в зоне наблюдения:         "<<ctrl->wa->count_plane<<endl;
    for(int i=0; i<ctrl->wa->count_plane; i++)
    {
        cout<<"Самолет: "<<i+1<<endl;
        cout<<" Модель самолета:  "<<ctrl->wa->pl[i].name<<"кг"<<endl;
        cout<<" Колличество пассажиров на борту самолета:  "<<ctrl->wa->pl[i].people_count<<endl;
        cout<<" Скорость самолета:  "<<ctrl->wa->pl[i].speed<<"км/ч"<<endl;
        cout<<endl;
    }
}
void write_file(struct controller* ctrl, int count,char** arg)
{
    ofstream out(arg[1]);
    for(int i=0; i<2; i++)
    {
        out<<ctrl[i].name<<endl;
        out<<ctrl[i].skill<<endl<<endl;
        out<<ctrl[i].wa->location_name<<endl;
        out<<ctrl[i].wa->area_name<<endl;
        out<<ctrl[i].wa->area<<endl;
        out<<ctrl[i].wa->count_plane<<endl<<endl;
        for(int k=0; k<ctrl[i].wa->count_plane; k++)
        {
            out<<ctrl[i].wa->pl[k].name<<endl;
            out<<ctrl[i].wa->pl[k].speed<<endl;
            out<<ctrl[i].wa->pl[k].people_count<<endl<<endl;
        }
    }
    out.close();
}
 
Файл main.cpp
#include "header.h"
#include <iostream>
#include <fstream>
using namespace std;
#define N 100
int main(int argc, char** argv)
{ 
    /*
    Henry       -----> Имя диспетчера
    80          -----> Его умение)
 
    Arizona     -----> Местность где находится
    Distric_center_controller   ----->  Специфика авиадиспетчера, см [url]http://ru.wikipedia.org/wiki/%D0%90%D0%B2%D0%B8%D0%B0%D0%B4%D0%B8%D1%81%D0%BF%D0%B5%D1%82%D1%87%D0%B5%D1%80[/url]
    20          -----> площадь зоны
    5           -----> кол-во самолетов
 
    il-52       -----> Название самолета
    2500        -----> Скорость самолета
    25          -----> Кол-во пассажиров на борту
    */
    if(argc<2)
        return 1;          
    ifstream in(argv[1]);
    setlocale (LC_ALL, "Rus");
    char name[N];
    char loc_name[N];
    char area_name[N];
    int area;
    int skill;
    int plane_count;
 
 
    char plane_name[N];
    int speed;
    int people_count;
 
    struct controller ctrl[2];
    for(int i=0; i<2; i++)
    {
        in>>name;
        in>>skill;
        in>>loc_name;
        in>>area_name;
        in>>area;
        in>>plane_count;
        Controller(&ctrl[i], name, skill);
        Watching_area(ctrl[i].wa, plane_count, area, area_name, loc_name);
        for(int k=0; k<ctrl[i].wa->count_plane; k++)
        {
            in>>plane_name;
            in>>speed;
            in>>people_count;
            Plane(&ctrl[i].wa->pl[k], plane_name, people_count, speed);
        }
        Print(&ctrl[i]);
    }
    in.close();
    //Изменение поля стурктуры, и запись в файл
    set_component(&ctrl[0], "il-52", 3000, 30,2);
    write_file( ctrl, 2, argv);
    Print(&ctrl[0]);
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2011, 23:06     Помогите,пожалуйста,разобрать код готовой программы.
Посмотрите здесь:

помогите переделать код из С++ в С, пожалуйста... C++
помогите пожалуйста подправить код C++
C++ c++ пожалуйста помогите подправить код
Не могу до конца разобрать код программы C++
ПОЖАЛУЙСТА, ПОМОГИТЕ НАПИСАТЬ ПРОГРАММЫ ... C++
Помогите закончить код, пожалуйста! C++
Помогите пожалуйста написать программы на С++ C++
Как приведенный код выводит ближайшую степень двойки? Разобрать работу программы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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