0 / 0 / 5
Регистрация: 20.12.2016
Сообщений: 149
1

Класс "телефонный справочник"

09.05.2017, 17:18. Показов 3238. Ответов 5
Метки нет (Все метки)

первый раз пытаюсь сделать программу по классам
задача вот такая
Напиши программу - телефонный справочник, в котором будет возможность вывести все находящиеся в памяти номера, добавить новый, удалить старый (по номеру и по имени), и поиск.
пытаюсь сделать вот так
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 <iostream>
#include <string> 
#include <algorithm>
#include <vector>
 
using namespace std;
 
class PhoneBock
{
     string name;
     int phone;
     int age;
     
     PhoneBock()
     {
          name = "name";
          phone = 0;
          age = 0;
     }
};
 
vector<PhoneBock> s;
 
int main()
{
     PhoneBock b;
     
     b.name = "asdf";
     b.age = 10;
     s.push_back(name);
     for(int f=0; f < s.size();f++)
     {
         cout<< s[f] <<" ";
         
     }
}
выдает кучу ошибок самая основная
'PhoneBock::name,PhoneBock и.тд()' is private
error: within this context
подскажите в чем ошибки
повтарюсь делаю первый раз.если можно с кратким пояснением
для начала хотя бы понять как вывести name phone и age
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2017, 17:18
Ответы с готовыми решениями:

Класс "Телефонный справочник"
Здравствуйте, нужно написать курсовую работу на тему &quot;телефонный справочник&quot; используя классы....

Реализовать связь классов "телефонная книга" и родительский класс "телефонный номер"
Суть проблемы:есть дочерний класс &quot;телефонная книга&quot; и родительский класс &quot;телефонный номер&quot;. В...

Структура "Телефонный справочник", вывести отсортированный список
выводить ошибку в 20 строке объявление несовместимо с &quot;void vvod(&lt;error-type&gt; a)&quot; идентификатор...

Информационно-справочная система "Телефонный справочник".
написать программу, предоставляющую информацию о номерах частных лиц и организации. Данные об...

5
279 / 251 / 209
Регистрация: 14.11.2016
Сообщений: 948
09.05.2017, 17:46 2
Цитата Сообщение от swswsss Посмотреть сообщение
для начала хотя бы понять как вывести name phone и age
Вот пример...
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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
class YourClass{
private:
    int num_one;
    int num_two;
    int num_three;
public:
    YourClass() : num_one(1), num_two(2), num_three (3) {};
    YourClass(int _num_one, int _num_two, int _num_three) : num_one(_num_one), num_two(_num_two), num_three (_num_three) {};
 
    /* Перегрузка оператора вывода */
    friend ostream& operator << (ostream &os, const YourClass &obj) {
        os << "\tNum_one: " << obj.num_one << endl;
        os << "\tNum_two: " << obj.num_two << endl;
        os << "\tNum_three: " << obj.num_three << endl;
        return os;
    }
}
 
int main(void)
{
    YourClass Obj_one, Obj_two(3, 2, 1);
    cout << "Object One:" << endl; cout << Obj_one << endl;
    cout << "Object Two:" << endl; cout << Obj_two << endl;
    system("pause");
    return 0;
}
0
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
09.05.2017, 17:53 3
swswsss, найди отличия
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
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
class PhoneBock
{
public:
  string name;
  int phone;
  int age;
  PhoneBock()
  {
    name = "name";
    phone = 0;
    age = 0;
  }
};
vector<PhoneBock> s;
 
int main()
{
  PhoneBock b;
  b.name = "asdf";
  b.age = 10;
  s.push_back (b); // Вектор берёт Фон-Боки целиком, а не кусочки
  for (int f = 0; f < s.size(); f++)
  { // Для Фон-Бока не определён operator<<()
    cout << s[f].name << " " << s[f].phone << " " << s[f].age << '\n';
  }
}
1
78 / 40 / 24
Регистрация: 03.02.2017
Сообщений: 106
09.05.2017, 18:06 4
Мой вариант:

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
#include <iostream>
#include <string> 
#include <algorithm>
#include <vector>
 
using namespace std;
 
class PhoneBook
{
public: // публичные функции для работы с защищенными переменными
 
    PhoneBook(char newName[], long long int newPhone) // по английски книга book, а не bock
    {
        name = newName;
        phone = newPhone;
    }
    string get_name() // публичные гет-функции возвращают данные из защищенных переменных
    {
        return name;
    }
    long long int get_phone()
    {
        return phone;
    }
    void set_age(int newAge) // публичные сет-функции сохраняют данные в защищенные переменные
    {
        age = newAge;
    }
 
private:        // переменные защищены от несанкционированных изменений
    string name;
    long long int phone;
    int age;
};
 
vector<PhoneBook> s;
 
int main()
{
    PhoneBook b("asdf", 89231231212); // создаем объект, передавая сразу значения в конструктор
    b.set_age(10); // присваиваем значения защищенным переменным через set-функции
 
    s.push_back(b);
 
    for (int f = 0; f < s.size(); f++)
    {
        cout << s[f].get_name() << " " << s[f].get_phone() << endl; // получаем данные через get-функции
    }
    system("pause");
}
Добавлено через 1 минуту
swswsss, причина основной ошибки в том, что все данные в классе по умолчанию private - защищены от изменений.
0
0 / 0 / 5
Регистрация: 20.12.2016
Сообщений: 149
09.05.2017, 18:14  [ТС] 5
Цитата Сообщение от Kudryashov_R_D Посмотреть сообщение
swswsss, найди отличия
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
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
class PhoneBock
{
public:
  string name;
  int phone;
  int age;
  PhoneBock()
  {
    name = "name";
    phone = 0;
    age = 0;
  }
};
vector<PhoneBock> s;
 
int main()
{
  PhoneBock b;
  b.name = "asdf";
  b.age = 10;
  s.push_back (b); // Вектор берёт Фон-Боки целиком, а не кусочки
  for (int f = 0; f < s.size(); f++)
  { // Для Фон-Бока не определён operator<<()
    cout << s[f].name << " " << s[f].phone << " " << s[f].age << '\n';
  }
}
спасибо теперь понятно.как и говорил делаю первый раз.по этому видимо и ошибься,ну или просто туплю)

Добавлено через 2 минуты
Mohan Если не путаю не чего то в ООП это инкапсуляцией называется. просто раньше писал на питоне.там все гораздо проще.
0
78 / 40 / 24
Регистрация: 03.02.2017
Сообщений: 106
09.05.2017, 18:20 6
Цитата Сообщение от swswsss Посмотреть сообщение
в ООП это инкапсуляцией называется
Совершенно верно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2017, 18:20
Помогаю со студенческими работами здесь

Телефонный справочник в виде структуры "лист"
Есть следующий код. Возникает косяк в процессе чтения базы. в Чем причина? //База будет...

База данных "телефонный справочник"
Получил задание на курсовую написать телефонный справочник на чистой с++, используя консоль. С...

Составить программу "Телефонный справочник"
Составить программу &quot;Телефонный справочник&quot;, которая имеет меню: 1 Добавление 2 Поиск 3...

Работа с файлом "Телефонный справочник"
Файл содержит телефонный справочник некоторого города по следующей структуре : каждая строка...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru