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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Указатель на класс http://www.cyberforum.ru/cpp-beginners/thread399826.html
сли первый класс определён и он должен использовать указатель на второй(который позже определён) как это сделать
C++ Вывести буквы латинского алфавита Помогите составить код используя строки, чтобы при введения произвольного текста (цифры, русские буквы) выводило все буквы латинского алфавита присутствующие в этой строке. И поясните пожалуйста код, спасибо. http://www.cyberforum.ru/cpp-beginners/thread399822.html
C++ Выделение памяти строке
Есть код в следующем роде:int length=80; char *line = new char; ifstream fin("txt.txt"); if(!fin) {cout<<"Error not opened file "<<endl; return 1;} while (fin.getline(line,length))//на этом месте наверное {...}как выделить неограниченную память для строки файла? то есть в исходном коде длина строки ограничена. как снять это ограничение и возможно ли такое? надеюсь возможно...
C++ Кольцевой односвязный список
Реализовал класс для работы со списком студентов( использовал кольцевой односвязный список). Для навигации по классу используется итератор. Со временем данный класс будет сделан шаблонным. Код рабочий, но хотелось бы услышать Ваши замечания, может что улучшить можно. Stud.h #define SUCCESS 1 #define NOT_SUCCESS -1 #include <iostream.h>
C++ подсчёт одинаковых символов в одномерном массиве. http://www.cyberforum.ru/cpp-beginners/thread399812.html
не работает программа.Вместо подсчёта количества символов выводит число 0.008 //--------------------------------------------------------------------------- #include<conio.h> #include<stdio.h> #include<math.h> #include <vcl.h> #pragma hdrstop //---------------------------------------------------------------------------
C++ дана матрица прямоугольная нужно ее транспонировать дана матрица прямоугольная нужно ее транспонировать(желательно на языке си) подробнее

Показать сообщение отдельно
Leska
Сообщений: n/a

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

05.12.2011, 23:06. Просмотров 578. Ответов 0
Метки (Все метки)

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

Заголовочный файл 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru