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

Создать класс "Справочник" со следующими полями

21.01.2021, 18:32. Показов 3884. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать класс СПРАВОЧНИК со следующими полями:

Название фирмы
Владелец
Телефон
Адрес
Род деятельности
Реализовать следующие возможности:

Поиск по названию
Поиск по владельцу
Поиск по номеру телефона
Поиск по роду деятельности
Показ всех записей и добавление

Нашел такой способ выполнения, но проблема в том что FindBy... возвращает Handbook но в консоли ничего не отображается :

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
#include <vector>
#include <string>
#include <iostream>
 
class Item
{
public:
    Item(const std::string &name, const std::string &own, const std::string &nphone, const std::string &bus) :
        firm_name(name), owner(own), phone(nphone), busines(bus) {
    }
 
    std::string GetFirmName() const {
        return firm_name.c_str();
    }
    
    std::string GetOwnerName() const {
        return owner.c_str();
    }
    
    std::string GetPhone() const {
        return phone.c_str();
    }
    
    std::string GetBusines() const {
        return busines.c_str();
    }
    
private:
    std::string firm_name;
    std::string owner;
    std::string phone;
    std::string busines;
};
 
class Handbook
{
public:
    void AddItem(const Item &i) {
        items.push_back(i);
    }
    
    void PrintAll(std::ostream &os) {
        for(std::vector<Item>::iterator it = items.begin(); it != items.end(); ++it) {
            os << it->GetFirmName() << "\n"
               << it->GetOwnerName() << "\n"
               << it->GetPhone() << "\n"
               << it->GetBusines() << "\n"
               << std::endl;
        }
    }
       
    Handbook FindByFirmName(const std::string &name) {
        Handbook h;
        for(std::vector<Item>::iterator it = items.begin(); it != items.end(); ++it)
            if(it->GetFirmName() == name)
                h.AddItem(*it);
                
        return h;
    }
    
    Handbook FindByOwner(const std::string &owner) {
        Handbook h;
        for(std::vector<Item>::iterator it = items.begin(); it != items.end(); ++it)
            if(it->GetOwnerName() == owner)
                h.AddItem(*it);
                
        return h;
    }
    
    Handbook FindByPhone(const std::string &phone) {
        Handbook h;
        for(std::vector<Item>::iterator it = items.begin(); it != items.end(); ++it)
            if(it->GetPhone() == phone)
                h.AddItem(*it);
                
        return h;
    }
    
    Handbook FindByBusines(const std::string &busines) {
        Handbook h;
        for(std::vector<Item>::iterator it = items.begin(); it != items.end(); ++it)
            if(it->GetBusines() == busines)
                h.AddItem(*it);
                
        return h;
    }
    
private:
    std::vector<Item> items;
};
Сделал иначе и все работает. Вообще, стоит так делать или нет? :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void FindBy...(const string& ...) {
        for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
            if (it->GetFirm...() == ...) {
                cout << "Success!\n" << endl;
                cout << it->GetFirmName() << "\n";
                cout << it->GetOwnerName() << "\n";
                cout << it->GetPhone() << "\n";
                cout << it->GetAdress() << "\n";
                cout << it->GetOccupation() << "\n";
                return;
            }
            else {
                cout << "Unknown!" << endl;
                return;
            }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.01.2021, 18:32
Ответы с готовыми решениями:

Создать класс "Справочник" со следующими полями
Создать класс СПРАВОЧНИК со следующими полями: 1. Название фирмы; 2. Владелец; 3. Телефон; 4. Адрес; 5. Род деятельности. ...

Создать класс "Справочник" со следующими полями
Создать класс СПРАВОЧНИК со следующими полями: Название фирмы Владелец Телефон Адрес Род деятельности Реализовать...

Класс с++. Создать класс ЭКЗАМЕН со следующими полями: название предмета, фамилия студента, оценка
Был бы очень рад если помогли б ) Создать класс ЭКЗАМЕН со следующими полями: название предмета, фамилия студента, оценка. Включить в...

7
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
21.01.2021, 19:08
Цитата Сообщение от Kingq Посмотреть сообщение
Нашел такой способ выполнения, но проблема в том что FindBy... возвращает Handbook но в консоли ничего не отображается :
Покажите полный текст программы. Непонятно как вы реализовали ту часть, которая отвечает за вывод на консоль информации. Да и запустить на выполнение ваш фрагмент не представляется возможным без дописывания main() и проч.

Оформляйте текст программы тэгами CPP! Иначе в этой каше сложно разбираться.

Здесь не нужен вызов метода c_str():
C++
1
2
3
std::string GetBusines() const {
return busines;
}
Поля класса у вас типа std::string и возвращаете вы std::string. Лишние преобразования делать не нужно. Не ошибка, но выглядит неаккуратно.

Цитата Сообщение от Kingq Посмотреть сообщение
Сделал иначе и все работает. Вообще, стоит так делать или нет?
В зависимости от того, что вы собираетесь делать с полученным набором Item'ов.
Вообще-то, во втором варианте у вас другая логика: вы находите только первое вхождение. В первом варианте вы пытаетесь найти все вхождения.
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
21.01.2021, 19:09
del
0
0 / 0 / 0
Регистрация: 22.11.2020
Сообщений: 46
21.01.2021, 19:44  [ТС]
Такой вопрос, как оформлять текст программы тэгами CPP?

Добавлено через 12 минут
Нужно реализовать чтение из файла при этом что бы писалось в вектор. И может что то подправить. И что такое c_str, знаю что нужно использовать, но зачем? Какую роль играет?

----------------------------------
Handnook.h
----------------------------------
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#include "Firma.h"
class Handbook
{
private:
    vector<Firma> items;
public:
    void AddItem(const Firma& i);
    void DeleteItem(const Firma& i);
    void PrintAll(ostream& os);  
    void FindByFirmName(const string& name);     
    void FindByOwner(const string& owner);            
    void FindByPhone(const string& phone);   
    void FindByAdress(const string& adress);       
    void FindByOccupation(const string& occupation);
    void saveFirms(fstream& fs);
    void readFromFirms(fstream& fs);
        
};
----------------------------------
Handnook.cpp
----------------------------------
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
#include "Handbook.h"
 
void Handbook::AddItem(const Firma& i) {
    items.push_back(i);
}
void Handbook::DeleteItem(const Firma& i)
{
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetFirmName() == i.GetFirmName()) {
            if (it->GetOwnerName() == i.GetOwnerName()) {
                if (it->GetAdress() == i.GetAdress()) {
                    if (it->GetPhone() == i.GetPhone()) {
                        if (it->GetOccupation() == i.GetOccupation()) {
                            items.erase(it);
                            return;
                        }
                    }
                }
            }
        }
        else {
            cout << "Unknown!" << endl;
            return;
        }
}
void Handbook::PrintAll(ostream& os) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it) {
        os << it->GetFirmName() << "\n"
            << it->GetOwnerName() << "\n"
            << it->GetPhone() << "\n"
            << it->GetAdress() << "\n"
            << it->GetOccupation() << "\n"
            << endl;
    }
}
void Handbook::FindByFirmName(const string& name) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetFirmName() == name) {
            cout << "Success!\n" << endl;
            cout << it->GetFirmName() << "\n";
            cout << it->GetOwnerName() << "\n";
            cout << it->GetPhone() << "\n";
            cout << it->GetAdress() << "\n";
            cout << it->GetOccupation() << "\n";
            return;
        }
        else {
            cout << "Unknown!" << endl;
            return;
        }
}
void Handbook::FindByOwner(const string& owner) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetFirmName() == owner) {
            cout << "Success!\n" << endl;
            cout << it->GetFirmName() << "\n";
            cout << it->GetOwnerName() << "\n";
            cout << it->GetPhone() << "\n";
            cout << it->GetAdress() << "\n";
            cout << it->GetOccupation() << "\n";
            return;
        }
        else {
            cout << "Unknown!" << endl;
            return;
        }
}
void Handbook::FindByPhone(const string& phone) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetFirmName() == phone) {
            cout << "Success!\n" << endl;
            cout << it->GetFirmName() << "\n";
            cout << it->GetOwnerName() << "\n";
            cout << it->GetPhone() << "\n";
            cout << it->GetAdress() << "\n";
            cout << it->GetOccupation() << "\n";
            return;
        }
        else {
            cout << "Unknown!" << endl;
            return;
        }
}
void Handbook::FindByAdress(const string& adress) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetFirmName() == adress) {
            cout << "Success!\n" << endl;
            cout << it->GetFirmName() << "\n";
            cout << it->GetOwnerName() << "\n";
            cout << it->GetPhone() << "\n";
            cout << it->GetAdress() << "\n";
            cout << it->GetOccupation() << "\n";
            return;
        }
        else {
            cout << "Unknown!" << endl;
            return;
        }
}
void Handbook::FindByOccupation(const string& occupation) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetFirmName() == occupation) {
            cout << "Success!\n" << endl;
            cout << it->GetFirmName() << "\n";
            cout << it->GetOwnerName() << "\n";
            cout << it->GetPhone() << "\n";
            cout << it->GetAdress() << "\n";
            cout << it->GetOccupation() << "\n";
            return;
        }
        else {
            cout << "Unknown!" << endl;
            return;
        }
}
 
void Handbook::saveFirms(fstream& fs)
{
    fs.open("Firms.txt", fstream::out);
    if (fs.is_open()) {
        for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it) {
            fs << "FirmName: " << it->GetFirmName() << endl;
            fs << "OwnerName: " << it->GetOwnerName() << endl;
            fs << "Phone: " << it->GetPhone() << endl;
            fs << "Adress: " << it->GetAdress() << endl;
            fs << "Occupation: " << it->GetOccupation() << endl;
            fs << "---------------------------" << endl;
        }
    }
    fs.close();
}
 
void Handbook::readFromFirms(fstream& fs)
{
    string buf;
    int j = 0;
    fs.open("Firms.txt", ios::in);
    if (fs.is_open())
    {
        while (!fs.eof())
        {
            getline(fs, buf);
            cout << buf << endl;
        }
    }
    fs.close();
}
----------------------------------
Firma.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
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
 
class Firma
{
private:
  
    string company_name;
    string owner;
    string phone;
    string adress;
    string occupation;
 
public:
    Firma() = default;
    Firma(const string& name, const string& own,
        const string& nphone, const string& adr, const string& occup);
    void SetFirmName(const string& n);
    void SetOwnerName(const string& on);
    void SetPhone(const string& p);
    void SetAdress(const string& a);
    void SetOccupation(const string& o);
 
    string GetFirmName() const;
    string GetOwnerName() const;
    string GetPhone() const;
    string GetAdress() const;
    string GetOccupation() const;
  
 
 
 
};
----------------------------------
Firma.cpp
----------------------------------
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
#include "Firma.h"
 
Firma::Firma(const string& name, const string& own, const string& nphone, const string& adr, const string& occup)
{
    company_name = name;
    owner = own;
    phone = nphone;
    adress = adr;
    occupation = occup;
}
 
 
void Firma::SetFirmName(const string& n) {
    company_name = n;
}
void Firma::SetOwnerName(const string& on) {
    owner = on;
}
void Firma::SetPhone(const string& p) {
    phone = p;
}
void Firma::SetAdress(const string& a) {
    adress = a;
}
void Firma::SetOccupation(const string& o) {
    occupation = o;
}
 
string Firma::GetFirmName() const {
    return company_name.c_str();
}
string Firma::GetOwnerName() const {
    return owner.c_str();
}
string Firma::GetPhone() const {
    return phone.c_str();
}
string Firma::GetAdress() const {
    return adress.c_str();
}
string Firma::GetOccupation() const {
    return occupation.c_str();
}
----------------------------------
main.cpp
----------------------------------
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "Handbook.h"
 
int main() {
    fstream fst;
    Firma f("Name", "Owner", "Phone", "Adress", "Occupation");
    Firma f1("Name2", "Owner2", "Phone2", "Adress2", "Occupation2");
    Handbook h;
    h.AddItem(f);
    h.AddItem(f1);
    h.PrintAll(cout);
    h.saveFirms(fst);
    h.readFromFirms(fst);
    
    return 0;
}
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
22.01.2021, 00:21
Лучший ответ Сообщение было отмечено Kingq как решение

Решение

Цитата Сообщение от Kingq Посмотреть сообщение
Такой вопрос, как оформлять текст программы тэгами CPP?
Ну вот, другое дело. С правильным оформлением кода вы уже справились...

Добавлено через 3 минуты
Цитата Сообщение от Kingq Посмотреть сообщение
И что такое c_str, знаю что нужно использовать, но зачем? Какую роль играет?
Документацию читайте. Очень способствует.

Добавлено через 2 часа 9 минут
Kingq, я немножко поковырялся с вашим кодом: дописал чтение из файла, исправил ошибки и отрефакторил.

Если коротко:

1. Поиск у вас ни один не работал. На первой итерации сработает return либо там, либо там, и на этом дело закончится.
2. Написал один метод (по владельцу) для поиска всех вхождений. В качестве бонуса.
3. Дописал чтение из файла в том формате, в котором вы его записываете. В данном варианте поля Фирмы должны быть одним словом (без пробельных символов). Если нужно считывать произвольную строку, там будет немного посложнее.
4. Добавил в main() некоторые тестовые случаи.
5. Постарался оставить ваш код в первоначальном состоянии на сколько возможно.

И, да, я ваш код слил в один файл, чисто для своего удобства. Вы его сами тогда разнесите по файлам с учётом необходимых #include.
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
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
 
class Firma
{
private:
 
    string company_name;
    string owner;
    string phone;
    string adress;
    string occupation;
 
public:
    Firma() = default;
    Firma(const string &name, const string &own,
          const string &nphone, const string &adr, const string &occup);
    void Set(const string &name, const string &own,
             const string &nphone, const string &adr, const string &occup);
    void SetFirmName(const string &n);
    void SetOwnerName(const string &on);
    void SetPhone(const string &p);
    void SetAdress(const string &a);
    void SetOccupation(const string &o);
 
    string GetFirmName() const;
    string GetOwnerName() const;
    string GetPhone() const;
    string GetAdress() const;
    string GetOccupation() const;
    friend bool operator == (const Firma &lh, const Firma &rh);
    friend ostream &operator << (ostream &os, const Firma &f);
};
 
 
// Firma.cpp
 
Firma::Firma(const string &name, const string &own, const string &nphone, const string &adr, const string &occup)
{
    Set(name, own, nphone, adr, occup);
}
 
void Firma::Set(const string &name, const string &own, const string &nphone, const string &adr, const string &occup)
{
    company_name = name;
    owner = own;
    phone = nphone;
    adress = adr;
    occupation = occup;
}
 
 
void Firma::SetFirmName(const string &n) {
    company_name = n;
}
void Firma::SetOwnerName(const string &on) {
    owner = on;
}
void Firma::SetPhone(const string &p) {
    phone = p;
}
void Firma::SetAdress(const string &a) {
    adress = a;
}
void Firma::SetOccupation(const string &o) {
    occupation = o;
}
 
string Firma::GetFirmName() const {
    return company_name;
}
string Firma::GetOwnerName() const {
    return owner;
}
string Firma::GetPhone() const {
    return phone;
}
string Firma::GetAdress() const {
    return adress;
}
string Firma::GetOccupation() const {
    return occupation;
}
 
bool operator == (const Firma &lh, const Firma &rh)
{
    return lh.company_name == rh.company_name
        && lh.owner == rh.owner
        && lh.phone == rh.phone
        && lh.adress == rh.adress
        && lh.occupation == rh.occupation;
}
 
ostream &operator << (ostream &os, const Firma &f)
{
    return os
        << f.company_name << '\n'
        << f.owner << '\n'
        << f.phone << '\n'
        << f.adress << '\n'
        << f.occupation << '\n'
        << endl;
}
 
 
// Handbook.h
 
class Handbook
{
private:
    vector<Firma> items;
public:
    void AddItem(const Firma &i);
    bool DeleteItem(const Firma &i);
    void PrintAll(ostream &os);
 
    bool FindByFirmName(const string &name, Firma &f);
    bool FindByOwner(const string &owner, Firma &f);
    bool FindByPhone(const string &phone, Firma &f);
    bool FindByAdress(const string &adress, Firma &f);
    bool FindByOccupation(const string &occupation, Firma &f);
 
    Handbook FindByOwner(const string &owner);
 
    void saveFirms(const string &filename);
    void readFromFirms(const string &filename);
};
 
// Handbook.cpp
 
void Handbook::AddItem(const Firma &i) {
    items.push_back(i);
}
 
bool Handbook::DeleteItem(const Firma &i)
{
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (*it == i) {
            items.erase(it);
            return true;
        }
    return false;
}
 
void Handbook::PrintAll(ostream &os) {
    if (items.empty()) {
        os << "Handbook is empty";
        return;
    }
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it) {
        os << *it;
    }
}
 
bool Handbook::FindByFirmName(const string &name, Firma &f) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetFirmName() == name) {
            f = *it;
            return true;
        }
    return false;
}
 
bool Handbook::FindByOwner(const string &owner, Firma &f) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetOwnerName() == owner) {
            f = *it;
            return true;
        }
    return false;
}
 
bool Handbook::FindByPhone(const string &phone, Firma &f) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetPhone() == phone) {
            f = *it;
            return true;
        }
    return false;
}
 
bool Handbook::FindByAdress(const string &adress, Firma &f) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetAdress() == adress) {
            f = *it;
            return true;
        }
    return false;
}
 
bool Handbook::FindByOccupation(const string &occupation, Firma &f) {
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetOccupation() == occupation) {
            f = *it;
            return true;
        }
    return false;
}
 
Handbook Handbook::FindByOwner(const string &owner) {
    Handbook t;
    for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it)
        if (it->GetOwnerName() == owner) {
            t.AddItem(*it);
        }
    return t;
}
 
 
 
void Handbook::saveFirms(const string &filename)
{
    ofstream fs;
    fs.open(filename, fstream::out);
    if (fs.is_open()) {
        for (vector<Firma>::iterator it = items.begin(); it != items.end(); ++it) {
            fs << "FirmName: " << it->GetFirmName() << endl
                << "OwnerName: " << it->GetOwnerName() << endl
                << "Phone: " << it->GetPhone() << endl
                << "Adress: " << it->GetAdress() << endl
                << "Occupation: " << it->GetOccupation() << endl
                << "---------------------------" << endl;
        }
    }
    fs.close();
}
 
void Handbook::readFromFirms(const string &filename)
{
    ifstream fs;
    Firma firma;
    string buf;
    int j = 0;
    items.clear();
    fs.open(filename, ios::in);
    if (fs.is_open())
    {
        do
        {
            fs >> buf >> buf;
            firma.SetFirmName(buf);
            fs >> buf >> buf;
            firma.SetOwnerName(buf);
            fs >> buf >> buf;
            firma.SetPhone(buf);
            fs >> buf >> buf;
            firma.SetAdress(buf);
            fs >> buf >> buf;
            firma.SetOccupation(buf);
            fs >> buf;
            if (!fs.eof())
                items.push_back(firma);
        } while (!fs.eof());
    }
    fs.close();
}
 
// main.cpp
 
const char *indata[][5] = {
    { "Peter-I",    "Peter",    "Phone0", "Adress0", "Occupation0" },
    { "Boanerges",  "John",     "Phone1", "Adress1", "Occupation1" },
    { "Thomas&Co",  "Thomas",   "Phone2", "Adress2", "Occupation2" },
    { "J&J",        "John",     "Phone3", "Adress3", "Occupation3" },
    { "Peter-II",   "Peter",    "Phone4", "Adress4", "Occupation4" },
    { "Peter-III",  "Peter",    "Phone5", "Adress5", "Occupation5" }
};
 
const char *succ = "Success!\n";
const char *fail = "Fail ((\n";
 
int main() {
    string filename = "Firms.txt";
    Handbook h;
    Firma f;
    for (size_t i = 0; i < sizeof(indata) / sizeof(indata[0]); ++i) {
        f.Set(indata[i][0], indata[i][1], indata[i][2], indata[i][3], indata[i][4]);
        h.AddItem(f);
    }
 
    cout << "--- Initial data:\n";
    h.PrintAll(cout);
 
    h.saveFirms(filename);
    h.readFromFirms(filename);
    cout << "--- Data from file:\n";
    h.PrintAll(cout);
 
    cout << "--- Find by FirmName:\n";
    if (h.FindByFirmName(indata[1][0], f))
        cout << succ << "\"" << indata[1][0] << "\" found\n" << f << endl;
    else
        cout << fail << "\"" << indata[1][0] << "\" not found" << endl;
 
    if (h.FindByFirmName(indata[1][1], f))
        cout << succ << "\"" << indata[1][1] << "\" found\n" << f << endl;
    else
        cout << fail << "\"" << indata[1][1] << "\" not found" << endl;
 
    cout << "--- Find by Owner:\n";
    if (h.FindByOwner(indata[4][1], f))
        cout << succ << "\"" << indata[4][1] << "\" found\n" << f << endl;
    else
        cout << fail << "\"" << indata[4][1] << "\" not found" << endl;
 
    if (h.FindByOwner(indata[4][2], f))
        cout << succ << "\"" << indata[4][2] << "\" found\n" << f << endl;
    else
        cout << fail << "\"" << indata[4][2] << "\" not found" << endl;
 
    // ... etc.
 
    // find all occurrences!
    cout << "--- Find by Owner all occurrences of \"" << indata[4][1] << "\":\n";
    Handbook found = h.FindByOwner(indata[4][1]);
    found.PrintAll(cout);
 
    cout << "--- Find by Owner all occurrences of \"" << indata[4][2] << "\":\n";
    found = h.FindByOwner(indata[4][2]);
    found.PrintAll(cout);
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 22.11.2020
Сообщений: 46
22.01.2021, 12:02  [ТС]
У нас в этой строчке
C++
1
Handbook found = h.FindByOwner(indata[4][1]);
Возвращаемый объект присваивается?
C++
1
Handbook found
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
22.01.2021, 15:51
Цитата Сообщение от Kingq Посмотреть сообщение
Возвращаемый объект присваивается?
Да.
0
0 / 0 / 0
Регистрация: 22.11.2020
Сообщений: 46
22.01.2021, 16:06  [ТС]
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.01.2021, 16:06
Помогаю со студенческими работами здесь

Создать класс с указанными полями и следующими методами
Здравствуйте, на сегодня такая проблема, делал код для лабы, сделал с интовыми переменными, а потом понял что надо переделывать для string,...

Создать класс Цех со следующими полями: название, фамилия начальника, количество работающих
Создать класс Цех со следующими полями: название, фамилия начальника, количество работающих. Включить в него необходимые конструкторы и...

Создать класс Point с полями X, Y и его потомка Rectangle (треугольник) с дополнительными полями Width и Height. Установ
Создать класс Point с полями X, Y и его потомка Rectangle (треугольник) с дополнительными полями Width и Height. Установить все виды...

Создать класс Man (человек), с полями: имя, возраст, пол и вес. Создать производный класс Student ...
Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить методы задания имени, возраста и веса. Создать производный класс...

Создать класс регион со следующими данными
Создать класс регион со следующими данными: название обл., Кол-во жителей, площадь, кол-во учебных заведений, кол-во промышленных...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru