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

БД (имя, фамилия, область, город, адрес, номер телефона). Выделить все упомянутые области и количество человек которое приходится на каждую из них. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не могу объявить шаблонный класс http://www.cyberforum.ru/cpp-beginners/thread880801.html
Здравствуйте, имеется шаблонный класс динамического массива: template<typename T> class DynamicArray { public: DynamicArray(int size); ~DynamicArray(); void Add(T element); T Get(int index); void Resize(int newSize);
C++ Очередь как кольцевой массив Очередь как кольцевой массив. Скопировать содержимое стека в очередь. Я в программирование не особо, а сдать надо. Буду очень благодарна. =* Если можно , то с комментариями. http://www.cyberforum.ru/cpp-beginners/thread880800.html
Вывести стек наоборот ! C++
Присоединить голову второго стека к хвосту первого. Помогите пожалуйста с последним циклом while(top2) , нужно вывести стек наоборот // STEK_3.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> using namespace std; struct node
C++ Преобразование string в float
подскажите как оптимальнее преобразовать число в формате CString -1E+008, которое я получаю из Excel-я. Может существуют стандартные решения в STL или Boost? Решение на регулярных выражениях с поиском E в строке у меня уже есть. чтение из Excel производится классом CExcelWorkbook, на VC++ 7. Добавлено через 3 минуты терь совсем дошло std::stringstream ss; ss << sMin; float k = 0.0;
C++ Написать библиотеку функций (шаблонов функций) для работы с динамическим двумерным массивом, реализующие следующие задачи http://www.cyberforum.ru/cpp-beginners/thread880783.html
помогите пожалуйста Написать библиотеку функций (шаблонов функций) для работы с динамическим двумерным массивом, реализующие следующие задачи 1. Создание динамического массива указанного размера и его заполнения случайными числами. Функция возвращает адрес созданного массива (или адрес матрицы передается по ссылке). 2. Вывод элементов матрицы 3. Дополнение матрицы новой строкой 4. Удаление...
C++ Как определить первый с конца четный элемент двумерного массива? двумерный массив. Как определить первый с конца четный элемент двумерного массива? Как написать цикл for с конца в начало. подробнее

Показать сообщение отдельно
kostya990
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
28.05.2013, 23:07  [ТС]     БД (имя, фамилия, область, город, адрес, номер телефона). Выделить все упомянутые области и количество человек которое приходится на каждую из них.
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
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
 
struct database{// оголошення структури
                string name;//ём'я
                string surname;//прёзвище
                string city;//мёсто
                string obl;//область
                string adres;//адреса
                int p_number;//номер телефону         
};
struct dop{//оголошення додатково  структури
           int g;//лёчильник
           string ob;//область
           };
int main()
{
database db;//оголошення змённо  структури
dop st;//оглошення змённо  додатково  структури
vector <database> v;//оголошення вектора типу database
vector <dop> reg;//оглошення вектора типу dop
bool t=true, b=false;
char o;
int chois, option, i=1, y, N=0,s,d`,X, Y, n;
string x,z,w, oblast;
    do{
       cout<<"***Меню***"<<endl;//виведе на екран меню програми
       cout<<"1. Добавить контакт."<<endl;   
       cout<<"2. Просмотр контактов."<<endl;
       cout<<"3. Поиск."<<endl;
       cout<<"4. Сортировать"<<endl;
       cout<<"5. Удалить контакт."<<endl;
       cout<<"6. Замена контакта."<<endl;
       cout<<"7. Очистить телефонный справочник."<<endl;
       cout<<"8. Выйти."<<endl;
    do{
       cout<<"Введите свой варинт: ";
       cin>>chois;
      }while(chois<1||chois>9);//цикл працю• до тих пір поки не буде вибраний один із варіантів(від 1 до 8)
      
switch(chois){//розгалудження на 8 напрямків
      case 1:{//додавання нового елемента 
           cout<<"Введите n(кол.контактов которых вы добавите):";
           cin>>n;
           if(cin.fail()){cout<<"Error!!!"<<endl;system("pause");return 0;} 
//перевірка на правильність введення
//(якщо введено будь-який символ крім чисел-вихід з програми)    
                ofstream output("Phone book.txt",ios::app);// відкриття файлу для запису
           if(!output.is_open()) cout<<"Error!"<<endl;//перевірка чи вёдкритий файл
           for(int i=0;i<n;i++){// полів структури даними
              cout<<"Фамилия: ";
              cin>>db.surname;
              cout<<"Имя: ";
              cin>>db.name;
              cout<<"Область: ";
              cin>>db.obl;
              cout<<"Город: ";
              cin>>db.city;
              cout<<"Адрес: ";
              cin>>db.adres;
              cout<<"Номре телефона: 0";
              cin>>db.p_number;
              if(cin.fail()){cout<<"Error!!!"<<endl;system("pause");return 0;}
              output<<db.surname<<" "<<db.name<<" "<<db.obl<<" "<<db.city<<" "<<db.adres<<" "<<db.p_number<<" ";//запис даних у файл
                                    }
              output.close();//закриття файлу для запису
              break;}
      case 2:{ ifstream input("Phone book.txt");//вёдкриття файлу для зчитування
              if(!input.is_open()){ cout<<"Error!"<<endl;system("pause");return 0;}
              v.clear();//очищення вектора
              while(!input.eof()){
                                 input>>db.surname>>db.name>>db.obl>>db.city>>db.adres>>db.p_number;//зчитування даних з файлу
                                 if(db.surname.size()==0)break;
//перевірка чи пусте поле структури, якщо так, то очевидно,
                                    //що вся структуру пуста також, а отже і файл
                                 v.push_back(db);//запис структури в кінець вектору
                                 }
              input.close();//закриття файлу для зчитування
              if(v.size()*sizeof(database)==0){cout<<"Справочник пуст."<<endl;break;}
//якщо попередня перевірка спрацьовує, то одразу ж виконується
// ця перевірка(на пустоту вектора) і відбувається вихід із case 2
              for(int i=0;i<v.size()-1;i++)
              cout<<v[i].surname<<" "<<v[i].name<<" "<<v[i].obl<<" "<<v[i].city<<" "<<v[i].adres<<" 0"<<v[i].p_number<<endl;//виведення на екран вектора з даними
              break;  }  
      case 3:{//пошук контакта
           cout<<"Выбирете тип поиска."<<endl;//меню пошуку
           cout<<"Искать по: "<<endl;
           cout<<"1 - фамили."<<endl;
           cout<<"2 - имени."<<endl;
           cout<<"3 - номеру телефона."<<endl;
           cout<<"4 - фамилии и имени."<<endl;
        do{
           cout<<"Ваш выбор ->";
           cin>>option;
           if(cin.fail()){cout<<"Error!!!"<<endl;system("pause"); return 0;}
           }while(option<1&&option>4);//цикл виконується поки не буде зроблений вибір (від 1 до 4)
           
           ifstream fin("Phone book.txt");//відкриття файлу для зчитування
           if(!fin.is_open()) cout<<"Error!"<<endl;//перевірка чи відкритий файл
           while(!fin.eof()){
                             fin>>db.surname>>db.name>>db.obl>>db.city>>db.adres>>db.p_number;//зчитування даних
                             if(db.surname.size()==0)break;//дивитись строку 81-82
                             v.push_back(db);//запис структури у кінець вектора
                             }
           if(v.size()*sizeof(database)==0){cout<<"Справочник пуст."<<endl;break;}//дивитись строку 86-87
           fin.close();
           switch(option){//розгалудження на 4 напрямки
                          case 1:// пошук за прізвищем
                               cout<<"Введите фамилию: ";
                               cin>>x;
                               for(int i=0;i<v.size()-1;i++){//цикл виконується до поки не будуть  
                                                                             //опрацьвані всі елементи вектора
 
                                if(v[i].surname==x){
//якщо поле елемента вектора surname дорівнюватиме (відповёдатиме) введеному значенню
//змінної  х - контакт знайдений, виведе на екран всю  інформацію  про контакт
                                                                     cout<<v[i].surname<<endl;
                                                                     cout<<v[i].name<<endl;
                                                                     cout<<v[i].obl<<endl;
                                                                     cout<<v[i].city<<endl;
                                                                     cout<<v[i].adres<<endl;
                                                                     cout<<"0"<<v[i].p_number<<endl<<endl;
                                                                     b=true;
//якщо умова if поверта• 1, то b присвоюэться значення true
                                                                     }
                                                   }
                                      if(!b) cout<<"Контатк не найден.Попробуйте дргой вид поиска."<<endl;
  //якщо попередня умова if повернула 0, b набуває значення
                          //false, в результатё на екран виводиться дане повёдомлення
                               fin.close();
                               break;
                          
                          case 2://пошук за іменем
                               cout<<"Введите имя: ";
                               cin>>x;
                                for(int i=0;i<v.size()-1;i++){
//цикл виконується до поки не будуть опрацьвані всі елементи вектора
                                                   if(v[i].name==x){
//якщо поле елемента вектора name дорівнюватиме (відповідатиме) введеному значенню
 //змінної  х - контакт знайдений, вивід на екран всіє  інформації  про контакт
                                                                    cout<<v[i].surname<<endl;
                                                                    cout<<v[i].name<<endl;
                                                                    cout<<v[i].obl<<endl;
                                                                    cout<<v[i].city<<endl;
                                                                    cout<<v[i].adres<<endl;
                                                                    cout<<"0"<<v[i].p_number<<endl<<endl;
                                                                    b=true;
                      //якщо умова if поверта• 1, то b присвоюэться  значення true
                                                                  }
                                                   }
                               if(!b) cout<<"Контатк не найден.Попробуйте дргой вид поиска."<<endl;
//якщо попередня умова if повернула 0, b набува• значення
                                    //false, в результатё на екран виводиться дане повёдомлення
                               fin.close();
                               break;
                          case 3://пошук за номером телефону
                               cout<<"Введите номер телефона: 0";
                               cin>>y;
                               if(cin.fail()){cout<<"Error!!!"<<endl;system("pause");return 0;}
                               for(int i=0;i<v.size()-1;i++){
//цикл виконується до поки не будуть опрацьвані всі елементи вектора
                                                   if(v[i].p_number==y){
//якщо поле елемента вектора p_number дорівнюватиме (відповідатиме) введеному знаенню
//змінної  y - контакт знайдений, вивід на екран всієї інформації  про контакт
                                                                        cout<<v[i].surname<<endl;
                                                                        cout<<v[i].name<<endl;
                                                                        cout<<v[i].obl<<endl;
                                                                        cout<<v[i].city<<endl;
                                                                        cout<<v[i].adres<<endl;
                                                                        cout<<"0"<<v[i].p_number<<endl<<endl;
                                                                        b=true;
                    //якщо умова if поверта• 1, то b присвоюэться значення true
                                                                        }
                                                             }
                               if(!b) cout<<"Контатк не найден.Попробуйте дргой вид поиска."<<endl;
//якщо попередня умова if повернула 0, b набуває значення
                                               //false, в результаті на екрані виводиться дане повідомлення
                               fin.close();
                               break;
                          case 4://пошук за прізвищем та іменем
                               cout<<"Введите фамилию: ";
                               cin>>x;
                               cout<<"Введите имя: ";
                               cin>>z;
                               for(int i=0;i<v.size()-1;i++){
//цикл виконується до поки не будуть опрацьвані всіелементи вектора
                                                 if(x==v[i].surname&&z==v[i].name){
//якщо поля елемента вектора surname name дорівнюватимуть (відповідатимуть) введеним //знаенням змінних х, y - контакт знайдений, вивід на екран всіє  інформації  про контакт
                                                                                   cout<<v[i].surname<<endl;
                                                                                   cout<<v[i].name<<endl;
                                                                                   cout<<v[i].obl<<endl;
                                                                                   cout<<v[i].city<<endl;
                                                                                   cout<<v[i].adres<<endl;
                                                                                   cout<<"0"<<v[i].p_number<<endl<<endl;
                                                                                   b=true;
//якщо умова if повертає 1, то b присвоюється значення true
                                                                                   }
                                                             }
                               if(!b) cout<<"Контатк не найден.Попробуйте дргой вид поиска."<<endl;
//якщо попередня умова if повернула 0, b набуває значення
//false, в результаті на екран виводиться дане повідомлення
                               break;
                          }
           break;}
      case 4:{//сортування файлу
           option=0;//обнулення значення змінної  option
           cout<<"Выберете как сортировать телефонную книгу: "<<endl;//меню сортування
           cout<<"1 - за фамилией"<<endl;
           cout<<"2 - за именем"<<endl;
           cout<<"3 - за городом"<<endl;
           do{
              cout<<"Ваш выбор ->";
              cin>>option;
              if(cin.fail()){cout<<"Error!!!"<<endl;system("pause"); return 0;}
              }while(option<1&&option>3);//цикл працює до поки не буде зроблений вибір(від 1 до 3)
              ifstream fin("Phone book.txt");//відкриття файлу для зчитування
              if(!fin.is_open()) cout<<"Error!"<<endl;//пеевірка чи відкритий файл
              v.clear();//очищення вектору
              while(!fin.eof()){
                                fin>>db.surname>>db.name>>db.obl>>db.city>>db.adres>>db.p_number;//зчитування даних
                                if(db.surname.size()==0)break;//дивитись строку 81-82
                                v.push_back(db);//запис струтури у вектор
                                }
              if(v.size()*sizeof(database)==0){cout<<"Справочник пуст."<<endl;break;}
//дивитись строку 86-87
              fin.close();//закриття файлу для зчитування
           switch(option){//розгалудження на 3 напрямки
                          //всі сортування виконані методом бульбашки
                          case 1:{//сортування за прізвищем
                                for(int j=0;j<v.size()-1;j++)
                                        {
                                        for(int i=j+1; i<v.size();i++){
                                                                       if ( v[i].surname<v[j].surname){
                                                                                                   swap(v[i],v[j]);
                                                                                                   }
                                                                       }
                                        }
                               break;}
                          case 2:{//сортування за іменем
                                for(int j=0;j<v.size()-1;j++)
                                        {
                                        for(int i=j+1; i<v.size();i++){
                                                                       if ( v[i].name<v[j].name){
                                                                                                   swap(v[i],v[j]);
                                                                                                   }
                                                                       }
                                        }
                               break;}
                          case 3:{//сортування за містом
                                for(int j=0;j<v.size()-1;j++)
                                        {
                                        for(int i=j+1; i<v.size();i++){
                                                                       if ( v[i].city<v[j].city){
                                                                                                   swap(v[i],v[j]);
                                                                                                   }
                                                                       }
                                        }
                               break;}
                          }
           ofstream fout("Phone book.txt");//відкриття файлу для запису
           if(!fout.is_open()) cout<<"Error!"<<endl;
           for(int j=0; j<v.size();j++){
                                          fout<<v[j].surname<<" "<<v[j].name<<" "<<v[j].obl<<" "<<v[j].city<<" "<<v[j].adres<<" "<<v[j].p_number;//запис даних у файл
                                          }
           fout.close();//закриття файлу для запису
           cout<<"Отсортированая телефонная книга: "<<endl;
           for(int j=0; j<v.size()-1;j++){//вивід на екран відсортованого файлу
                                          cout<<v[j].surname<<" "<<v[j].name<<" "<<v[j].obl<<" "<<v[j].city<<" "<<v[j].adres<<" 0"<<v[j].p_number<<endl;
                                          }                         
           break;}
     case 5:{//видалення заданого контакта
           cout<<"Для удаления контакта введите..."<<endl;
           cout<<"фамилия: ";
           cin>>x;
           cout<<"имя: ";
           cin>>z;
           ifstream fin("Phone book.txt");//відкриття файлу для зчитування
           if(!fin.is_open()) cout<<"Error!"<<endl;//перевірка чи відкритий файл(без помилок)
           v.clear();//очищення вектора
           while(!fin.eof()){//цикл виконується поки не досягне символу кінця файлу
                             fin>>db.surname>>db.name>>db.obl>>db.city>>db.adres>>db.p_number;//зчитування даних
                             if(db.surname.size()==0)break;//дивитись строку 86-87
                             v.push_back(db);//запис структури у кінець вектора
                             if(x=v.surname&&z=v.name){
//якщо поля елемента вектора surname name дорівнюватимуть (відповідатимуть) введеному //знаенням змінних х, z - контакт знайдений, вивід на екран всієї  інформації  про контакт
                                                                      b=true;
//якщо умова if виконується, змінна  набуває значення true
                                                                             v.erase(v.begin()+N);
         //видалення елемента який знаходиться на N-ній позиції  у векторі
                                         }                                                              
                             N++;
//якщо умова if yе викону’ться (контакт для видалення не знайдений) лsчильник збsльшує //своє значення на 1
                             }
           fin.close();//закриття файлу для зчитування
           if(v.size()*sizeof(database)==0){cout<<"Справочник пуст."<<endl;break;}//дивитись строку 86-87
           if(!b){cout<<"Контакт который вы хотите удалить не был найден."<<endl; break;}//якщо попередня  умова if не виконується значення зміённої  b
            // залишаэться false - як наслёдок викону•ться дана умова
           ofstream fout("Phone book.txt");//відкрива•ться файлу для запису
           if(!fout.is_open()) cout<<"Error!"<<endl;//перевірка чи відкритий файл
           for(int j=0;j<v.size()-1;j++){
                                       fout<<v[j].surname<<" "<<v[j].name<<" "<<v[j].obl<<" "<<v[j].city<<" "<<v[j].adres<<" "<<v[j].p_number<<endl;//запису• у файл елементи вектора
                                       }
           fout.close();//закриває файл для запису
           cout<<"Удаление произведено успешно."<<endl;
           break;}
      case 6:{//заміна контакту
           cout<<"Дя замены контакта введите..."<<endl;
           cout<<"фамилия: ";
           cin>>x;
           cout<<"имя: ";
           cin>>z;
           ifstream fin("Phone book.txt");//відриття файлу для зчитування
           if(!fin.is_open()) cout<<"Error!"<<endl;//перевірка чи відкритий файл
           v.clear();//очищає файл
           while(!fin.eof()){//цикл виконується до поки не досягне сиволу закінчення файлу
                             fin>>db.surname>>db.name>>db.obl>>db.city>>db.adres>>db.p_number;
     //зчитування даних з файлу
                             if(db.surname.size()==0)break;//дивитись строку 81-82
                             v.push_back(db);//записує структуру в кінець вектора
                             if(x=v.surname&&z=v.name){
//якщо поля елемента вектора surname, name дорівнюватимуть (відповёдатимуть) введеним //знаенням змінних х, z - контакт знайдений для заміни
                                                                             b=true;
                                                                             v.erase(v.begin()+N);
      //видалення знайденого елемента контакта
                                                cout<<"Произвидите замену даных контакта..."<<endl;
//введення даних якими буде замінений видалений контакт
                                                           cout<<"фамилия: ";
                                                           cin>>db.surname;
                                                           cout<<"имя: ";
                                                           cin>>db.name;
                                                           cout<<"бласть: ";
                                                           cin>>db.obl;
                                                           cout<<"город: ";
                                                           cin>>db.city;
                                                           cout<<"адрес: ";
                                                           cin>>db.adres;
                                                           cout<<"номер телефона: 0";
                                                           cin>>db.p_number;
                                                           v.push_back(db);//запис структури у кінець вектора
                                                           }
                             N++;
//якщо попередня умова не виконується лёчильник збільшує своє значення на 1
                             }
           fin.close();//закриття файлу для считування
           if(v.size()*sizeof(database)==0){cout<<"Справочник пуст."<<endl;break;}
//дивитись строку 86-87
           if(!b){cout<<"Контакт который вы хотите заменить не был найден."<<endl; break;}
           ofstream fout("Phone book.txt");//відкриття файлу для запису
           if(!fout.is_open()) cout<<"Error!"<<endl;//перевірка чи відкритий файл
           for(int j=0;j<v.size()-1;j++){
                                       fout<<v[j].surname<<" "<<v[j].name<<" "<<v[j].obl<<" "<<v[j].city<<" "<<v[j].adres<<" "<<v[j].p_number<<" ";//запис даних про контакт у вектор
                                       }
           fout.close();//закриття файлудля запису
           cout<<"Замена произведена успешно."<<endl;
           break;}
           
      case 7:{//очищення всього файлу (телефонної  книги)
              ofstream fout("Phone book.txt");
//відкриття файлу для запису (так як по умовчанню при вёдкриваннё файлу для запису
//працю флаг ios::out при запису нових даних попередні стираються)
              if(!fout.is_open()) cout<<"Error!"<<endl;//перевірка чи відкритий файл
              //так як ми нічого не записуємо у файл він залишається пустим
              fout.close();//закриття файлу для зчитування
              cout<<"Телефонная книга пуста."<<endl;
              break;}
      case 8:{
           cout<<"До свидание!"<<endl;
           break;}
             }
      }while(chois!=8);//цикл працює до поки не буде зроблений вибір 8
 system("pause");//затримка вікна консолі до поки не буде натиснута будь-яка клавіша
 return 0;
}
 
Текущее время: 12:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru