Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
1

Не получается реализовать программу тел. справочник

10.04.2019, 12:07. Просмотров 1156. Ответов 20
Метки нет (Все метки)

Я сделал через структуры. Определил класс Телефон. А дальше не могу понять.
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
#include <iostream>
using namespace std;
 
struct PhoneInfor{
    string name;
    string phone_number;
};
PhoneInfor Phone();
int MAX=1000;
 
class PhoneManagement
{
private:
    Phone phone[MAX];
public:
    void inputPhone();
    void printPhone();
    Phone search();
}
 
int main(int argc, const char * argv[]) {
    setlocale(LC_ALL, "RUS");
    
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2019, 12:07
Ответы с готовыми решениями:

тел справочник
плиииииииз народ у кого есть готовые коды на ТС с БД.плиз помогите

тел.Справочник
плииииз. помогите написать тел.Справочник

Тел.справочник на Builder C++
Есть программа Тел.справочник, но у меня проблема, она почему то не открывается на Builder C++ 6....

БД Тел.справочник. поиск
Приветствую всех. есть программа телефонный справочник, но поиск упорно не хочет работать. Помогите...

Не получается реализовать программу
Нужно написать программу, которая будет определять принадлежность заданной точки декартовой...

20
XLAT
462 / 368 / 150
Регистрация: 23.09.2014
Сообщений: 1,331
Записей в блоге: 3
10.04.2019, 15:21 2
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
А дальше не могу понять.
ну, а дальше, наверное, запись в файл? ))

Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Я сделал через структуры
чуть подправил, шоп скомпилилось
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
///----------------------------------------------------------------------------|
/// PhoneManagement.
///----------------------------------------------------------------------------|
#include <iostream>
#include <string>
 
using namespace std;
 
struct PhoneInfor
{
    string name;
    string phone_number;
};
 
class PhoneManagement
{   static const int MAX = 1000;
    PhoneInfor phone[MAX];
 
public:
    PhoneManagement()
    {
 
    }
 
    void gui()
    {
        ///TODO
    }
 
    void inputPhone()
    {
        ///TODO
    }
    void printPhone()
    {
        ///TODO
    }
    PhoneInfor search()
    {
        ///TODO
    }
 
    void to_file()
    {
        ///TODO
    }
    void from_file()
    {
        ///TODO
    }
};
 
int main()
{   setlocale(0, " ");
 
    PhoneManagement myPhoneManagement;
 
    return 0;
}

компилятор то у вас есть?
или сначала теория?))

Цитата Сообщение от Anonymous4722 Посмотреть сообщение
А дальше не могу понять.
теперь вам осталось заполнить методы в тех местах, где TODO.
0
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
10.04.2019, 15:35  [ТС] 3
Цитата Сообщение от XLAT Посмотреть сообщение
компилятор то у вас есть?
или сначала теория?))
Я умею выводить все списки, но не могу понять, как сделать это в форме книжки)
И чтобы можно было добавлять человека, потом удалять его.
0
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
10.04.2019, 15:38  [ТС] 4
Цитата Сообщение от XLAT Посмотреть сообщение
чуть подправил, шоп скомпилилось
И еще у меня ошибку выводит
0
Миниатюры
Не получается реализовать программу тел. справочник  
10.04.2019, 15:38
XLAT
462 / 368 / 150
Регистрация: 23.09.2014
Сообщений: 1,331
Записей в блоге: 3
10.04.2019, 15:43 5
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
И чтобы можно было добавлять человека, потом удалять его.
а что вы можете рассказать о std::vector'e?

разумеется, что есть куча разных вариантов, но для такой, я бы сказал стандартной(или школьной) задачи,
использования вектора вместо массива это самый тот айс.
0
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
10.04.2019, 15:45  [ТС] 6
Цитата Сообщение от XLAT Посмотреть сообщение
а что вы можете рассказать
Мне нельзя использовать векторы. Максимум это библиотека string, conio..
Можно использовать структуры, классы и тд. Без подключения каких либо других библиотек кроме этих двух.
0
XLAT
462 / 368 / 150
Регистрация: 23.09.2014
Сообщений: 1,331
Записей в блоге: 3
10.04.2019, 15:50 7
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
И еще у меня ошибку выводит
C++
1
2
3
4
5
    PhoneInfor search()
    {
        ///TODO
        return PhoneInfor ; ///<<<----тут добавить
    }
странно у мя VS2010 это ест:
1>Build succeeded.
а тоже не должен.

Добавлено через 3 минуты
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Мне нельзя использовать векторы.
Я бы тогда посоветовал вам начать с того, чтобы написать свой вектор.
Он поможет вам избежать кучу гемора в будущем и даст вам изящный код.
ну, в общем я то серъезно это вам советую.
0
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
10.04.2019, 15:53  [ТС] 8
Цитата Сообщение от XLAT Посмотреть сообщение
странно у мя VS2010 это ест:
1>Build succeeded.
а тоже не должен.
'PhoneInfor' does not refer to a value
все равно ошибка.
У меня XCode
0
XLAT
462 / 368 / 150
Регистрация: 23.09.2014
Сообщений: 1,331
Записей в блоге: 3
10.04.2019, 15:58 9
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
'PhoneInfor' does not refer to a value
все равно ошибка.
C++
1
2
3
4
5
6
7
    PhoneInfor search()
    {    PhoneInfor p;///<<<----тут
 
        ///TODO
 
        return p; ///<<<----и тут
    }
прошу прощения, но vs2010 молчит, но и я спокоен )
0
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
10.04.2019, 16:00  [ТС] 10
Цитата Сообщение от XLAT Посмотреть сообщение
PhoneInfor
Вместо этого добавил
C++
1
return search();
и ошибка исчезла.

Добавлено через 1 минуту
Цитата Сообщение от XLAT Посмотреть сообщение
прошу прощения, но vs2010 молчит, но и я не особо внимателен.
Да, и так тоже работает. Спасибо.
0
XLAT
462 / 368 / 150
Регистрация: 23.09.2014
Сообщений: 1,331
Записей в блоге: 3
10.04.2019, 17:20 11
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Вместо этого добавил
C++
Выделить код
1
return search();
вы запустили рекурсию!
возможно её тож можно заюзать при поиске)

Цитата Сообщение от XLAT Посмотреть сообщение
написать свой вектор.
вот простейший вариант псевдовектора(cmycontainer) на основе массива:
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
///----------------------------------------------------------------------------|
/// PhoneManagement.
///----------------------------------------------------------------------------|
#include <iostream>
#include <string>
#include <conio.h>
 
using namespace std;
 
///----------------------------------------------------------------------------|
/// Вектор на коленке
///----------------------------------------------------------------------------:
template<class T, size_t N>
class cmycontainer
{   
public:
    cmycontainer() : maxx(N), iterat(0)
    {}
 
    size_t maxx;
    size_t iterat;
 
    bool add(T e)
    {   if(iterat == N) 
        {   cout << "ERROR: cMyvec is completed!";
            return false;
        }
        arr[iterat++] = e;
        return true;
    }
    bool del(size_t i)
    {   if(iterat == 0) 
        {   cout << "ERROR: (iterat == 0) is true!";
            return false;
        }
        arr[i-1] = arr[iterat--];
        return true;
    }
 
    bool change(T e, size_t i)
    {   if(i >= iterat) 
        {   cout << "ERROR: going abroad!";
            return false;
        }
        arr[i] = e;
        return true;
    }
    
    T get(size_t i)
    {   error = 0;
        if(i >= iterat) 
        {   cout << "ERROR: going abroad!";
            error = ERR_GET;
        }
        return arr[i];
    }
 
    enum ERR
    {   ERR_GET = 1
    };
    int error;
private:
    T arr[N];
};
 
///----------------------------------------------------------------------------|
/// Образец записи в PhoneBook
///----------------------------------------------------------------------------:
struct PhoneInfor
{
    string name;
    string phone_number;
 
    void show()
    {   cout << "Input name: "         << name         << "\n";
        cout << "Input phone_number: " << phone_number << "\n";
    }
};
 
///----------------------------------------------------------------------------|
/// PhoneManagement
///----------------------------------------------------------------------------:
class PhoneManagement
{   
    ///------------------------------------------------------------------------|
    /// Здесь святая святых: наша телефонная книга!
    ///------------------------------------------------------------------------:
    cmycontainer<PhoneInfor, 1000> PhoneBook;
 
public:
    PhoneManagement()
    {   
 
    }
 
    void gui()
    {
        ///TODO
    }
 
    void inputPhone()
    {   PhoneInfor p;
        cout << "Input name: ";
        cin >> p.name;
        cout << "Input phone_number: ";
        cin >> p.phone_number;
 
        PhoneBook.add   (p);
    }
    void printPhone()
    {   cout << "\nPhoneBook--------------------------------------------->>>\n";
        for(size_t i = 0; i < PhoneBook.iterat; ++i)
        {   PhoneBook.get(i).show();
            cout << "|---------------------------------------|\n";
        }
    }
    PhoneInfor search()
    {   PhoneInfor p;
 
        return p;
        ///TODO
    }
 
    void to_file()
    {
        ///TODO
    }
    void from_file()
    {
        ///TODO
    }
};
 
int main()
{   //setlocale(0, "");
 
    PhoneManagement myPhoneManagement;
 
    myPhoneManagement.inputPhone();
    myPhoneManagement.printPhone();
 
    _getch   (); //#include <conio.h>
    return 0;
}
0
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
11.04.2019, 00:23  [ТС] 12
Цитата Сообщение от XLAT Посмотреть сообщение
вот простейший вариант псевдовектора(cmycontainer) на основе массива:
Вот мой вариант, не знаю на сколько верный
В ссылку добавил чтобы потом никто не спер код.
0
XLAT
462 / 368 / 150
Регистрация: 23.09.2014
Сообщений: 1,331
Записей в блоге: 3
11.04.2019, 06:17 13
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
//Создаю итератор list
list<Phone>::iterator it;

//Делаю итерацию точкой начала и увеличиваю ее по одному, пока она не достигнет конца списка.
for (it=list_phones.begin(); it!=list_phones.end(); it++) {
//Доступ к объекту через итератор
int number=it->number;
string name=it->name;

//вывод на экран
cout<<number<<"::"<<name<<endl;
}
можно и так:
C++
1
2
3
4
5
6
7
8
9
    //Создаю итератор list
    list<Phone>::iterator it;
    
    //Делаю итерацию точкой начала и увеличиваю ее по одному, пока она не достигнет конца списка.
    for (it=list_phones.begin(); it!=list_phones.end(); it++) {
        //Доступ к полям объекта через итератор:
        //вывод на экран
        cout << *it->number << "::" << *it->name << endl;
    }
но это не суть)

Добавлено через 3 минуты
а вот суть близко здесь:
В чем проблема моего кода?

если вам разрешают классы, то делайте всю тел.книгу как объект вашего класса.

про два массива для имен и номеров из задания я лучше промолчу)
0
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
11.04.2019, 10:33  [ТС] 14
Цитата Сообщение от XLAT Посмотреть сообщение
про два массива для имен и номеров из задания я лучше промолчу)
А что тут не так?)
0
XLAT
462 / 368 / 150
Регистрация: 23.09.2014
Сообщений: 1,331
Записей в блоге: 3
11.04.2019, 23:32 15
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
А что тут не так?)
Нарушение сути структурного программирования, которая заключается в том, что:
"Данные представляют собой, прежде всего, абстракции реальных объектов и формулируются предпочтительно как абстрактные структуры." (1977,Вирт Н.)

А вот как может выглядеть такой массив-подход в случае с преподавателем, который в классе смотрит на своих учеников: он видит, вот массив левых ушей, вот массив правых ушей, вот массив носов и т.д.. Чтобы соединить все это в кучу одного ученика ему потребуется некий несуществующий в реальности индекс. Хорошо бы было, чтобы ему повезло не напутать с этим индексом, а то вместо ученика можно собрать франкенштейна. Но главная беда этого препода в том, что у него напрочь отсутсвует понятие "УЧЕНИК", как бы он не старался.

В вашем случае с двумя массивами у вас отсутствует фундаментальная по Вирту такая структура, как запись.

И ещё: вот есть отряд людей считающих, что ООП это болезнь головного мозга. И вот так сформулировать задачу с двумя массивами мог ТОЛЬКО один из этих неосиляторов.
1
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
12.04.2019, 01:28  [ТС] 16
Цитата Сообщение от XLAT Посмотреть сообщение
И ещё: вот есть отряд людей считающих, что ООП это болезнь головного мозга. И вот так сформулировать задачу с двумя массивами мог ТОЛЬКО один из этих неосиляторов.
И к стати мой препод не принял мой вариант задачи(( может мне ваш код чутка переделать. Или с нуля, как он хочет написать.
0
XLAT
462 / 368 / 150
Регистрация: 23.09.2014
Сообщений: 1,331
Записей в блоге: 3
12.04.2019, 02:07 17
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
препод не принял мой вариант задачи
он не принял красноречиво молча? или что-то сказал?

Цитата Сообщение от Anonymous4722 Посмотреть сообщение
мой вариант задачи
постановки или решения?

очевидно что задачу ставил препод,
а значит он хочет два массива под имена и под номера)
и чтобы поменьше ооп'а))

если все же два массива, то мой код не поможет.
0
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
12.04.2019, 02:09  [ТС] 18
Цитата Сообщение от XLAT Посмотреть сообщение
он не принял красноречиво молча? или что-то сказал?
Он написал, что не соответствует заданию и удалил работу.
Цитата Сообщение от XLAT Посмотреть сообщение
постановки или решения
Наверное, он хотел два массива. Но я знаю, что можно использовать и структуры.
Как правильно для этой задачи сделать два массива под имена и номера?
0
XLAT
462 / 368 / 150
Регистрация: 23.09.2014
Сообщений: 1,331
Записей в блоге: 3
12.04.2019, 02:21 19
Лучший ответ Сообщение было отмечено Anonymous4722 как решение

Решение

Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Как правильно для этой задачи сделать два массива под имена и номера?
C++
1
2
3
4
struct sPhoneBook
{   std::string names  [10];
    std::string numbers[10];
}PhoneBook;
ну и осталось вам добавить методы которые там в задании по списку.
1
Anonymous4722
2 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 275
12.04.2019, 02:28  [ТС] 20
Цитата Сообщение от XLAT Посмотреть сообщение
ну и осталось вам добавить методы которые там в задании по списку.
Благодарствую.
0
12.04.2019, 02:28
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2019, 02:28

Не получается реализовать программу с генератором
Суть идеи в том чтобы числа из разных полей генирировались вместе и сохранись потом в файле txt

Даны объемы и массы двух тел из разных материалов. Материал какого из тел имеет большую плотность?
Даны объемы и массы двух тел из разных материалов. Материал какого из тел имеет большую плотность?

Как реализовать телефонный справочник?
Мне нужно написать программу &quot;Телефонный справочник&quot;. Идея что-то вроде получения информации из...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.