Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 02.12.2015
Сообщений: 17

Класс ATC, реализовать сортировку и поиск по заданному ключу

07.12.2015, 11:18. Показов 1253. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Предусмотреть в программе с работающей со структурой, описанной ниже, сохранение вводимых данных в файл и возможность чтение из ранние сохранённого файла, результат выводить на экран и текстовый фаил реализовать ниже описанный алгоритмы сортировки и поиска по заданному ключу

На АТС информация о разговорах содержит номер телефона абонента, время разговора и тариф.
Ключи: Номер телефона абонента. алгоритм сортировки: слиянием и шейкерная сортировка.
Найти абонента с номерном 386103. Алгоритмы поиска полный перебор и интерполяционный.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2015, 11:18
Ответы с готовыми решениями:

Реализовать поиск и сортировку по заданному полю в списке объектов пользовательского типа
Доброго времени суток. Дали задачу "Запись о багаже пассажира содержит: фамилия, номер рейса, дата время вылета, пункт назначения, кол-во...

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

Реализовать поиск и сортировку по заданному полю в массиве объектов пользовательского типа (структура Train)
Описать структуру с именем TRAIN, содержащую следующие поля: NAZV - название пункта назначения, NUMR - номер поезда, DATE - дата отправки,...

1
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.12.2015, 17:17
Лучший ответ Сообщение было отмечено MrDaiman как решение

Решение

Наверное можно как то так. Реализуйте методы сортировки и поиска, и загрузки из файла.
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
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
 
namespace cf{
    
    class Abonent{
        private:
            std::string name;
            int phone;
            float tariff;
        public:
            Abonent(){
                name = std::string();
                phone = 0;
                tariff = .0f;
            }
            Abonent(std::string m_name, int m_phone, float m_tariff){
                name = m_name;
                phone = m_phone;
                tariff = m_tariff;
            }
            Abonent(const Abonent & abonent){
                name = abonent.getName();
                phone = abonent.getPhone();
                tariff = abonent.getTariff();
            }
            void setName(const std::string m_name){
                name = m_name;
            }
            void setPhone(const int m_phone){
                phone = m_phone;
            }
            void setTariff(const float m_tariff){
                tariff = m_tariff;
            }
            std::string getName() const{
                return name;
            }
            int getPhone() const{
                return phone;
            }
            float getTariff() const{
                return tariff;
            }
    };
    
    class Connect{
        private:
            Abonent a1;
            Abonent a2;
            float timeConnect;
        public:
            Connect(){}
            Connect(Abonent & m_a1, Abonent & m_a2){
                a1 = m_a1;
                a2 = m_a2;
            }
            void setConnect(Abonent & m_a1, Abonent & m_a2){
                if(m_a1.getPhone() == m_a2.getPhone()){
                    std::cout << "Incorrected connection." << std::endl;
                    return;
                }
                a1 = m_a1;
                a2 = m_a2;
            }
            Abonent getLeftAbonent() const{
                return a1;
            }
            Abonent getRightAbonent() const{
                return a2;
            }
            void print() const{
                if(a1.getPhone() && a2.getPhone()){
                        std::cout << "Name : " << a1.getName() << " phone : "
                                        << a1.getPhone() << " tariff : " << a1.getTariff() 
                                        << " --- " << "Name : " << a2.getName() << " phone : "
                                        << a2.getPhone() << " tariff : " << a2.getTariff() << std::endl;
                }
            }
            void setTimeConnect(float m_timeConnect){
                timeConnect = m_timeConnect;
            }
            float getTimeConnect() const{
                return timeConnect;
            }
            
    };
    
    typedef void (*SORT)(std::vector<Abonent> &);
    typedef void (*FIND)(std::vector<Abonent> &, size_t & idx);
    
    void margeSort(std::vector<Abonent> & abonents){
        std::cout << "Sorting an array of merger." << std::endl;
        // TO DO
    }
    
    void shakerSort(std::vector<Abonent> & abonents){
        std::cout << "Shake sorting an array." << std::endl;
        // TO DO
    }
    
    void fullSearch(std::vector<Abonent> & abonents, size_t & idx){
        std::cout << "Full searching  in array." << std::endl;
        // TO DO
    }
    
    void interpolationSearch(std::vector<Abonent> & abonents, size_t & idx){
        std::cout << "Interpolation searching  in array." << std::endl;
        // TO DO
    }
    
    class ATM{
        private:
            SORT _sort;
            std::vector<Abonent> abonents;
            std::vector<Connect> connects;
        public:
            void setSort(SORT m_sort){
                _sort = m_sort;
            }
            void find(FIND m_find, size_t & idx){
                m_find(abonents, idx);
            }
            void sort(){
                if(_sort)
                    _sort(abonents);
                else
                    std::cout << "Set the sorting method." << std::endl;    
            }
            void addAbonent(Abonent a){
                abonents.push_back(a);
            }
            void addConnect(Connect c){
                /* Need verification abonents
                    if(false){
                        std::cout << "Unknow abonent" << std::endl;
                        return;
                    }
                */
                
                connects.push_back(c);
            }
            void printConnects() const{
                for(size_t i = 0; i < connects.size(); ++i){
                    connects[i].print();
                }
            }
            void printAbonents() const{
                for(size_t i = 0; i < abonents.size(); ++i){
                    std::cout << "Name : " << abonents[i].getName() << " phone : "
                                        << abonents[i].getPhone() << " tariff : " << abonents[i].getTariff() 
                                        << std::endl; 
                }
            }
            
            void save(char * fileName){
                if(fileName == 0 || fileName == '\0'){
                    std::cout << "Invalid input file name.";
                    return ;
                }
 
                std::ofstream out(fileName);
                for(size_t i = 0; i < abonents.size(); ++i){
                    out << abonents[i].getName() << ' ' << abonents[i].getPhone()
                          << abonents[i].getPhone() << ' ' << abonents[i].getTariff() << std::endl;
                }
                
                out.close();
            }
            
            void load(){
                // TO DO
            }
    };
    
}
 
int main() {
 
    cf::ATM atm;
    cf::Abonent a1(std::string("Name1"), 111111, 1.48);
    cf::Abonent a2(std::string("Name2"), 222222, 2.48);
    cf::Abonent a3(std::string("Name3"), 333333, 3.48);
    
    atm.addAbonent(a1);
    atm.addAbonent(a2);
    atm.addAbonent(a3);
    
    cf::Connect c1(a1, a2); c1.setTimeConnect(0.28);
    cf::Connect c2(a1, a3); c2.setTimeConnect(5.39);
    cf::Connect c3(a2, a3); c3.setTimeConnect(10.01);
    
    atm.addConnect(c1);
    atm.addConnect(c2);
    atm.addConnect(c3);
    
    atm.printConnects();
    
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2015, 17:17
Помогаю со студенческими работами здесь

Описать класс «Домашняя библиотека»; реализовать поиск книги по заданному признаку
Помогите решить програму: Описать класс «домашняя библиотека». предусмотреть возможность работы с произвольным числом книг, поиска...

Бинарный поиск по заданному ключу
нужно организовать Бинарный поиск по заданному ключу . Реализовать рекурсивную версию алгоритма.

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

Контейнер map. Поиск по заданному ключу
Нужно осуществить поиск по заданному ключу. Программа учета в интернет-магазине К примеру вводится название цена ...

Реализовать сортировку массива структур по заданному полю
Помогите правильно отсортировать структуры по среднему балу и записать их в файл структура: struct student { char name; int...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru