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

Cоздать класс Справочник

13.05.2020, 11:44. Показов 2882. Ответов 5

Author24 — интернет-сервис помощи студентам
Надо создать класс Справочник со след. полями:
а) Название фирмы;
б) Владелец;
в) Телефон;
г) Адрес;
д) Род деятельности.
2. Реализовать следующие возможности:
- Поиск по названию;
- Поиск по владельцу;
- Поиск по номеру телефона;
- Поиск по роду деятельности;
- Показ всех записей и добавление.
Вся информация, естественно, хранится в файле с возможностью дозаписи.

Запутался. Не могу сделать метод поиска. Укажите на мои ошибки пожалуйста!
Вот что я сделал:
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
class Directory
{
public:
    Directory(){}
    Directory(string company, string owner, string tel, string address, string job)
    {
        this->company = company;
        this->owner = owner;
        this->tel = tel;
        this->address = address;
        this->job = job;
    }
    friend ostream& operator<<(ostream& os, const Directory& str)
    {
        os << "Company: " << str.company;
        os << " Owner: " << str.owner;
        os << " Phone number: " << str.tel;
        os << " Address: " << str.address;
        os << " Job: " << str.job << endl;
        return os;
    }
    friend istream& operator>>(istream& in, Directory& str)
    {
        in >> str.company;
        in >> str.owner;
        in >> str.tel;
        in >> str.address;
        in >> str.job;
        return in;
    }
    void read(vector<Directory> vec, ofstream& ofs);
    void write(vector<Directory> vec, ifstream& ifs);
    void findData(vector<Directory> vec, const string &str);
    void show(vector<Directory>& vec);
private:
    string company;
    string owner;
    string tel;
    string address;
    string job;
};
 
void Directory::read(vector<Directory> vec, ofstream& ofs)//чтение
{
    ofs.open("text.txt");
    if (!ofs.bad())
    {
        for (auto i = vec.begin(); i != vec.end(); i++)
            ofs << *i;
 
        ofs.close();
    }
}
 
void Directory::write(vector<Directory> vec, ifstream& ifs)
{
    ifs.open("text.txt");
    if (!ifs.bad())
    {
        /*for (auto i = vec.begin(); i != vec.end(); i++)
            ifs >> *i;*/
        Directory buff;
        ifs >> buff;
        vec.push_back(buff);
        ifs.close();
    }
}
 
void Directory::findData(vector<Directory> vec, const string& str)
{
    auto it = find(vec.begin(), vec.end(), str);
    if (it != vec.end())
        cout << *it;
    else
        cout << "Not found!" << endl;
}
 
void Directory::show(vector<Directory>& vec)
{
    for (auto i = vec.begin(); i != vec.end(); i++)
    {
        cout << *i << " ";
    }
    cout << endl;
}
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2020, 11:44
Ответы с готовыми решениями:

Cоздать класс по ООП
Нужно создать класс по ООП (Объектно ориентированом програмировании) на вижуал

Cоздать какой-то необычный класс)
Всем привет. В общем получил от препода задание: построить класс(типа потокового) на базе класса...

Cоздать вектор указателей на базовый класс
Добрый день! Есть иерархия классов. Необходимо создать вектор указателей на базовый класс. Я не...

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

5
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
13.05.2020, 12:50 2
Цитата Сообщение от Krakenkro Посмотреть сообщение
Запутался. Не могу сделать метод поиска. Укажите на мои ошибки пожалуйста!
Цитата Сообщение от Krakenkro Посмотреть сообщение
void read(vector<Directory> vec, ofstream& ofs);
    void write(vector<Directory> vec, ifstream& ifs);
    void findData(vector<Directory> vec, const string &str);
    void show(vector<Directory>& vec);
C++
1
2
3
4
static void read(const vector<Directory> &vec, ofstream& ofs);
static void write(vector<Directory> &vec, ifstream& ifs);
static void findData(const vector<Directory> &vec, const string &str);
static void show(const vector<Directory> &vec);
Добавлено через 48 секунд
findData - это разве не метод поиска?
0
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 19
13.05.2020, 12:55  [ТС] 3
Мне кажется я его неправильно сделал.
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
13.05.2020, 12:59 4
Цитата Сообщение от Krakenkro Посмотреть сообщение
Мне кажется я его неправильно сделал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
void Directory::findData(const vector<Directory> &vec, const string& str)
{
    auto it = std::find_if(vec.begin(), vec.end(), [&str](const Directory &dir)
    {
        return dir.company == str;
    });
 
    if (it != vec.end())
        cout << *it;
    else
        cout << "Not found!" << endl;
}
1
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 19
13.05.2020, 13:09  [ТС] 5
Спасибо. Значит надо все названия отдельно искать? (dir.company(address,owner...)=str).
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
13.05.2020, 13:11 6
Лучший ответ Сообщение было отмечено Krakenkro как решение

Решение

Цитата Сообщение от Krakenkro Посмотреть сообщение
Спасибо. Значит надо все названия отдельно искать? (dir.company(address,owner...)=str).
А как надо?
1
13.05.2020, 13:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2020, 13:11
Помогаю со студенческими работами здесь

Cоздать класс который предусматривает создание и вывод массива
Помогите создать класс который предусматривает создание и вывод массива #include &lt;iostream&gt;...

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

Cоздать класс для вычисления количества выстрелов до первого попадания
Написать программу для решения статистическими методами следующей задачи.Из зенитного орудия...

Cоздать перегруженный класс max, который ищет минимальное значение из двух или трех чисел типа int
помогите пожалуйста написать программу. нужно создать перегруженный класс max, который ищет...

Cоздать класс "Товары интернет магазина"
В общем, в вузе дали задания создать класс товаров интернет магазина без каких либо объяснений, ни...

Cоздать класс "Завод"
Нужно создать класс программы.. Объект «завод». Поля: наименование, адрес, директор, количество...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru