Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
garikkk1
-51 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 44
#1

Создать класс адрес - C++

09.03.2011, 22:35. Просмотров 1183. Ответов 19
Метки нет (Все метки)

застрял на этой теме! спасите пожалуйста!
классы и объекты в с++

адрес
страна-char*
город-char*
улица-char*
номер дома-int

 Комментарий модератора 
В следующий раз кричащее выделение текста будет наказываться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2011, 22:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать класс адрес (C++):

Создать класс «Адрес» - C++
Создать класс «Адрес». Данные класса - город, улица, номер дома и номер квартиры. Создать конструктор произвольной адреса, конструктор по...

Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки машин ”: марка - C++
Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки...

Создать класс RIELTER, с полями в закрытой части: количество комнат, этаж; площадь; адрес - C++
Создать класс RIELTER, с полями в закрытой части: количество комнат, этаж; площадь; адрес. Класс имеет конструктор, методы установления,...

Создать класс "ведомость абитуриентов" (ФИО, адрес, оценки по трем предметам) - C++
Создать класс, в котором определены поля и методы класса: конструктор с параметрами, конструктор без параметров, ввод и вывод данных....

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

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями - C++
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким условием: Создать абстрактный базовый класс Тройка чисел с...

19
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
09.03.2011, 22:54 #2
garikkk1, Сотни раз ведь на форуме было...
Ну да ладно. Вспомню char*...

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
#include <iostream>
#include <cstring>
 
class Addr
{
public:
    Addr(char* country_="Russia", 
        char* town_="Moscow",
        char* street_="Arbat",
        int h_n=40)
    {
        country=new char[strlen(country_)+1];
        strcpy(country, country_);
        town=new char[strlen(town_)+1];
        strcpy(town, town_);
        street=new char[strlen(street_)+1];
        strcpy(street, street_);
        h_number=h_n;
    }
    ~Addr()
    {
        delete[] country;
        delete[] town;
        delete[] street;
    }
    void SetCountry(char* country_)
    {
        country=new char[strlen(country_)+1];
        strcpy(country, country_);
    }
    void SetTown(char* town_)
    {
        town=new char[strlen(town_)+1];
        strcpy(town, town_);
    }
    void SetStreet(char* street_)
    {
        street=new char[strlen(street_)+1];
        strcpy(street, street_);
    }
    void SetHNumber(int h_n)
    {
        h_number=h_n;
    }
    void SetAddr(char* country_, char* town_, char* street_, int h_n)
    {
        SetCountry(country_);
        SetTown(town_);
        SetStreet(street_);
        SetHNumber(h_n);
    }
    char* GetCountry() const
    {
        return country;
    }
    char* GetTown() const
    {
        return town;
    }
    char* GetStreet() const
    {
        return street;
    }
    int GetHNumber() const
    {
        return h_number;
    }
private:
    char* country;
    char* town;
    char* street;
    int h_number;
};
 
int main()
{
    Addr new_addr;
    std::cout<<new_addr.GetCountry()<<'\n'<<
        new_addr.GetTown()<<'\n'<<
        new_addr.GetStreet()<<'\n'<<
        new_addr.GetHNumber()<<'\n';
    return 0;
}
1
garikkk1
-51 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 44
09.03.2011, 23:00  [ТС] #3
ОГРОМНОЕ спасибо! сейчас ток проверю!

Добавлено через 3 минуты
пару недочетов но пустяки главное суть уловил!
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
09.03.2011, 23:03 #4
garikkk1, А недочеты можно сказать?) Даже интересно стало)
0
garikkk1
-51 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 44
09.03.2011, 23:07  [ТС] #5
1) не все библиотеки
2) вывод не останавливается
3) я сделал ввод с клавы улицы страны и т.д

говорю пустяки ))

можешь немного комментариев вставить пожалуйсто
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
09.03.2011, 23:11 #6
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
#include <iostream>
#include <cstring>
 
class Addr
{
public:
//Конструктор. Можно использовать и по умолчанию и с параметрами
        Addr(char* country_="Russia", 
                char* town_="Moscow",
                char* street_="Arbat",
                int h_n=40)
        {
//Выделяем память.
                country=new char[strlen(country_)+1];
//Копируем.
                strcpy(country, country_);
                town=new char[strlen(town_)+1];
                strcpy(town, town_);
                street=new char[strlen(street_)+1];
                strcpy(street, street_);
                h_number=h_n;
        }
//Деструктор. Очищаем память.
        ~Addr()
        {
                delete[] country;
                delete[] town;
                delete[] street;
        }
//Раздел сеттеров (установка значений в поля, принцип тот же что и в конструкторе, 
//выделяем память (копируем), тут еще можно везде удаление впринципе вставить, но этим 
//займись сам.
        void SetCountry(char* country_)
        {
                country=new char[strlen(country_)+1];
                strcpy(country, country_);
        }
        void SetTown(char* town_)
        {
                town=new char[strlen(town_)+1];
                strcpy(town, town_);
        }
        void SetStreet(char* street_)
        {
                street=new char[strlen(street_)+1];
                strcpy(street, street_);
        }
        void SetHNumber(int h_n)
        {
                h_number=h_n;
        }
        void SetAddr(char* country_, char* town_, char* street_, int h_n)
        {
                SetCountry(country_);
                SetTown(town_);
                SetStreet(street_);
                SetHNumber(h_n);
        }
//Раздел геттеров. Для получения значения поля.
        char* GetCountry() const
        {
                return country;
        }
        char* GetTown() const
        {
                return town;
        }
        char* GetStreet() const
        {
                return street;
        }
        int GetHNumber() const
        {
                return h_number;
        }
private:
        char* country;
        char* town;
        char* street;
        int h_number;
};
 
int main()
{
        Addr new_addr;
        std::cout<<new_addr.GetCountry()<<'\n'<<
                new_addr.GetTown()<<'\n'<<
                new_addr.GetStreet()<<'\n'<<
                new_addr.GetHNumber()<<'\n';
        return 0;
}
0
garikkk1
-51 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 44
09.03.2011, 23:16  [ТС] #7
напомни надо вроде вставить куда-то (стрелочку)
указатель_на_объект_класса -> имя элемента

и что значит:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
                country=new char[strlen(country_)+1];
                strcpy(country, country_);
        }
        void SetTown(char* town_)
        {
                town=new char[strlen(town_)+1];
                strcpy(town, town_);
        }
        void SetStreet(char* street_)
        {
                street=new char[strlen(street_)+1];
                strcpy(street, street_);
        }
        void SetHNumber(int h_n)
        {
                h_number=h_n;
        }
Добавлено через 1 минуту
C++
1
 country=new char[strlen(country_)+1]
вот +1 что значит сдесь
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
09.03.2011, 23:26 #8
garikkk1, strlen возвращает длину строки без завершающего ноль-символа. а новую строку хотелось бы получить с нулем в конце. Поэтому +1 символ)
1
garikkk1
-51 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 44
09.03.2011, 23:28  [ТС] #9
а что такое - геттеры и сеттеры?
и зачем вместо одной переменной писать- h_n?
0
ISergey
Maniac
Эксперт С++
1376 / 887 / 53
Регистрация: 02.01.2009
Сообщений: 2,663
Записей в блоге: 1
09.03.2011, 23:39 #10
ForEveR, Поро такой маленький совет слышал? : "Где только можно используйте const" (От греха подальше.. =) )
0
garikkk1
-51 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 44
09.03.2011, 23:45  [ТС] #11
Цитата Сообщение от ISergey Посмотреть сообщение
ForEveR, Поро такой маленький совет слышал? : "Где только можно используйте const" (От греха подальше.. =) )
я не понял вместо чего ты собрался подставлять const
0
ISergey
Maniac
Эксперт С++
1376 / 887 / 53
Регистрация: 02.01.2009
Сообщений: 2,663
Записей в блоге: 1
10.03.2011, 00:18 #12
Цитата Сообщение от garikkk1 Посмотреть сообщение
я не понял вместо чего ты собрался подставлять const
Не вместо, а где....
C++
1
2
3
4
5
....
Addr(const char* country_="Russia", const char* town_="Moscow", const char* street_="Arbat" ...
....
const char* GetCountry() const
....
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.03.2011, 00:26 #13
ISergey, Да протупил. В конструкторе. Да и в сетерах по сути)

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
#include <iostream>
#include <cstring>
 
class Addr
{
public:
//Конструктор. Можно использовать и по умолчанию и с параметрами
        Addr(const char* country_="Russia", 
                const char* town_="Moscow",
                const char* street_="Arbat",
                const int h_n=40)
        {
//Выделяем память.
                country=new char[strlen(country_)+1];
//Копируем.
                strcpy(country, country_);
                town=new char[strlen(town_)+1];
                strcpy(town, town_);
                street=new char[strlen(street_)+1];
                strcpy(street, street_);
                h_number=h_n;
        }
//Деструктор. Очищаем память.
        ~Addr()
        {
                delete[] country;
                delete[] town;
                delete[] street;
        }
//Раздел сеттеров (установка значений в поля, принцип тот же что и в конструкторе, 
//выделяем память (копируем), тут еще можно везде удаление впринципе вставить, но этим 
//займись сам.
        void SetCountry(const char* country_)
        {
                country=new char[strlen(country_)+1];
                strcpy(country, country_);
        }
        void SetTown(const char* town_)
        {
                town=new char[strlen(town_)+1];
                strcpy(town, town_);
        }
        void SetStreet(const char* street_)
        {
                street=new char[strlen(street_)+1];
                strcpy(street, street_);
        }
        void SetHNumber(const int h_n)
        {
                h_number=h_n;
        }
        void SetAddr(const char* country_, const char* town_, const char* street_, const int h_n)
        {
                SetCountry(country_);
                SetTown(town_);
                SetStreet(street_);
                SetHNumber(h_n);
        }
//Раздел геттеров. Для получения значения поля.
        const char* GetCountry() const
        {
                return country;
        }
        const char* GetTown() const
        {
                return town;
        }
        const char* GetStreet() const
        {
                return street;
        }
        const int GetHNumber() const
        {
                return h_number;
        }
private:
        char* country;
        char* town;
        char* street;
        int h_number;
};
 
int main()
{
        Addr new_addr;
        std::cout<<new_addr.GetCountry()<<'\n'<<
                new_addr.GetTown()<<'\n'<<
                new_addr.GetStreet()<<'\n'<<
                new_addr.GetHNumber()<<'\n';
        return 0;
}
0
ISergey
Maniac
Эксперт С++
1376 / 887 / 53
Регистрация: 02.01.2009
Сообщений: 2,663
Записей в блоге: 1
10.03.2011, 00:28 #14
Здесь не нужно.
C++
1
 const int h_n=40
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.03.2011, 00:30 #15
ISergey, Не критично) По сути не нужно, но пускай будет)
0
10.03.2011, 00:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2011, 00:30
Привет! Вот еще темы с ответами:

Создать класс - данные - абстрактный базовый класс. Создать производные классы - C++
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа...

Указателю на базовый класс присвоить адрес производного класса - C++
class Point { public: Point(float a=0, float b=0) { x=a; y=b; } protected: float x; float y; };

Создать класс Элемент списка (Node), а затем класс Список (List) - C++
Задание: Создать класс Элемент списка (Node), а затем класс Список (List). В зависимости от варианта список должен быть одно или...

Создать класс Pair(пара чисел) и класс-наследник Fraction - C++
Создать класс Pair (пара чисел); определить методы изменения полей и сравнения пар: пара p1 больше пары p2, если (first.p1&gt;first.p2) или...


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

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

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