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

создание структуру СТРАНА. добавление и удаление элементов из структуры - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ динамический массив объектов http://www.cyberforum.ru/cpp-beginners/thread328894.html
помогите с функцией PrintGarage, чтоб она выводила массив объектов Garage int main(){ char model; int number = 0; int run = 10000; int numberOfCars; numberOfCars = 3; const int numberOfCars1 = 3; cout << "Number of cars: " << numberOfCars << endl << endl;
C++ Копирование значений из функции в объект Подскажите пожалуйста как скопировать значения из функции void fc(a& z1, a& z2, a& z3) так чтоб он был доступен в объекте a4 ?? И как сделать так чтоб значения http://www.cyberforum.ru/cpp-beginners/thread328893.html
Массив произвольного значения C++
Здравствуйте, как построить массив заранее неизвестного значения, ну например int n; cin >> n; int arr;
Управление кнопками C++
Здраствуйте, решил разобраться в этой теме. Как сделать так, чтобы при нажатии кнопки "Вниз" на клавиатуре, изменился ключ реестра? Как изменить ключ я знаю, но как обработать нажатие кнопки - нет. В документации к сожалению не нашел :(
C++ Работа со строковыми переменными без использования string.h http://www.cyberforum.ru/cpp-beginners/thread328880.html
Нужно заменить в строке s множественные последовательности вхождений символа t на один. То есть "aaabcde" заменяется на "abcde". Существует ли аналог такой функции в string.h?
C++ утечка памяти при сложении разноразмерных матриц #include <iostream> using namespace std; class Matrix { private: int **arr; int cols; int rows; public: подробнее

Показать сообщение отдельно
insolent
 Аватар для insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
03.07.2011, 02:44     создание структуру СТРАНА. добавление и удаление элементов из структуры
vden23, Примерно так:
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
#include <iostream>
#include <string>
#include <list>
#include <fstream>
 
using namespace std;
 
struct State
{
    string Name;
    string Capital;
    int Pops;
    double Area;
};
 
const int STR_SIZE = 80;
 
void addState(list<State> &a);
void addStateToNum(list<State> &a, int n);
void delOfPop(list<State> &a, int pops);
void delAll(list<State> &a);
void Display(list<State> &a);
void ReadFile(fstream &file, list<State> &a);
void WriteFile(fstream &file, list<State> &a);
 
bool badValue(State &tmp, int pops)
{
    return tmp.Pops < pops;
}
 
int main(int argc, char* argv[])
{
    setlocale( LC_ALL, ".1251");
 
    list<State> theState;
    int tmpPops = 0;
 
    addState(theState);
    addState(theState);
    addState(theState);
 
    Display(theState);
 
    cout << "Вставка элементов." << endl;
    addStateToNum(theState, 2);
    addStateToNum(theState, 4);
 
    Display(theState);
 
    cout << "Удаление элементов, население которых меньше заданного." << endl;
    cout << "Введите кол-во населения: ";
    cin >> tmpPops;
    cin.ignore();
    delOfPop(theState, tmpPops);
    Display(theState);
 
    cout << "Удаление всех элементов." << endl;
    delAll(theState);
    Display(theState);
 
    fstream file("test.dat", ios_base::out | ios_base::binary);
    WriteFile(file, theState);
    file.close();
 
    delAll(theState);
 
    file.open("test.dat", ios_base::in | ios_base::binary);
    ReadFile(file, theState);
    file.close();
 
    Display(theState);
 
    cin.get();
    return 0;
}
 
void addState(list<State> &a)
{
    State *tmp = new State;
 
    cout << "Введите название страны: ";
    getline(cin ,tmp->Name);
    cout << "Введите столицу страны: ";
    getline(cin, tmp->Capital);
    cout << "Введите кол-во населения страны: ";
    cin >> tmp->Pops;
    cout << "Введите площадь страны: ";
    cin >> tmp->Area;
 
    cout << "\n";
    cin.ignore();
 
    a.push_back( *tmp );
 
    delete tmp;
}
 
void addStateToNum(list<State> &a, int n)
{
    if ( n < 0 || n > (int)a.size()-1 )
        return;
    State *tmp = new State;
 
    cout << "Введите название страны: ";
    getline(cin ,tmp->Name);
    cout << "Введите столицу страны: ";
    getline(cin, tmp->Capital);
    cout << "Введите кол-во населения страны: ";
    cin >> tmp->Pops;
    cout << "Введите площадь страны: ";
    cin >> tmp->Area;
 
    cout << "\n";
    cin.ignore();
 
    list<State>::iterator iter = a.begin();
    advance( iter, ++n);
    a.insert( iter, *tmp);
 
    delete tmp;
}
 
void Display(list<State> &a)
{
    if (a.empty())
    {
        cout << "Элементов не обноружено!!!" << endl;
        return;
    }
    list<State>::iterator iter;
 
    for ( iter = a.begin(); iter != a.end(); iter++)
    {
        cout << "Название страны: ";
        cout << (*iter).Name << endl;
        cout << "Столицу страны: ";
        cout << (*iter).Capital << endl;
        cout << "Кол-во населения страны: ";
        cout << (*iter).Pops << endl;
        cout << "Площадь страны: ";
        cout << (*iter).Area << endl;
        cout << "\n";
    }
}
 
void delOfPop(list<State> &a, int pops)
{
    if (a.empty())
    {
        cout << "Элементов не обноружено!!!" << endl;
        return;
    }
    list<State>::iterator iter;
 
    for (iter = a.begin(); iter != a.end();)
    {
        if (badValue(*iter, pops)) a.erase(iter++);
        else ++iter;
    }
}
 
void delAll(list<State> &a)
{
    if (a.empty())
    {
        cout << "Элементов не обноружено!!!" << endl;
        return;
    }
    list<State>::iterator iter;
 
    for (iter = a.begin(); iter != a.end();)
        a.erase(iter++);
}
 
void WriteFile(fstream &file, list<State> &a)
{
    if (!file || a.empty())
        return;
 
    list<State>::iterator iter;
    for (iter = a.begin(); iter != a.end(); iter++)
    {
        file.write((*iter).Name.c_str(), STR_SIZE);
        file.write((*iter).Capital.c_str(), STR_SIZE);
        file.write((char*)&(*iter).Pops, sizeof((*iter).Pops));
        file.write((char*)&(*iter).Area, sizeof((*iter).Area));
    }
}
 
void ReadFile(fstream &file, list<State> &a)
{
    if ( !file )
        return;
 
    State *tmp = new State;
    char buf[STR_SIZE];
 
    while ( !file.eof() )
    {
        file.read(buf, STR_SIZE);
        (*tmp).Name = buf;
        file.read(buf, STR_SIZE);
        (*tmp).Capital = buf;
        file.read((char*)&(*tmp).Pops, sizeof((*tmp).Pops));
        file.read((char*)&(*tmp).Area, sizeof((*tmp).Area));
 
        a.push_back(*tmp);
    }
 
    delete tmp;
}
 
Текущее время: 06:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru