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

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

Войти
Регистрация
Восстановить пароль
 
love.coffee
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 18
#1

классы и наследование - C++

04.12.2011, 09:35. Просмотров 795. Ответов 14
Метки нет (Все метки)

товарищи!
в понедельник зачет
а я совсем в этом ничего не смыслю((((
кто-нибудь
помогите, пожалуйста
огромное спасибо заранее)


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

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

Наследование, базовые классы и производные классы - C++
Добрый вечер.Задание: необходимо разработать поля и методы наследуемые из базового класса и собственные компоненты производных...

Классы и наследование (Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию вычисления объёма.) - C++
Уважаевые, помогите написать прожку на экзамене: Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию...

Классы и наследование - C++
Помогите , пожалуйста! Нужно с помощью наследования записать количество проданного товара и функцию нахождения остатка товара. !Не...

Классы и их наследование - C++
Начал изучать С++ и ООП после того как понял немного осоновы. И вот столкнулся с чем. Есть базовый класс, есть класс-наслденик, базовый...

Классы. Наследование - C++
Народ, помогите пожалуйста, я в ступоре, понимаю, что дико торможу сейчас... но все же вопрос допустим есть класс class CWindow { ...

Наследование/классы - C++
class BaseClass { public: void print() { std::cout << "123\r\n"; } }; class DirivedClass: public BaseClass { public: ...

14
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
04.12.2011, 12:00 #2
А что значит поле доп.услуги в первом задании?

И чем должные отличаться
Цитата Сообщение от love.coffee Посмотреть сообщение
обычный постоялец и постоялец «все включено».
от простого постояльца?

Вот пока набросал:

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
#include <iostream.h>
#include <conio.h>
 
class Guest
{
   public:
 
   Guest(const char *, const char *, int, int = 1, int = 1);
   //Family, WhereFrom, CostPerDay, Day of coming, Month of coming
 
   void setFamily(const char *);
   void setFrom(const char *);
   void setCost(int);
   void setDay(int);
   void setMonth(int);
   void setAddCost(int); //Oplata za dop uslugi
 
 
 
   const char * getFamily()
   {
      return family;
   }
 
   const char * getFrom()
   {
      return from;
   }
 
   int getCost () {return cost;}
 
   int getDay () {return day;}
   int getMonth () {return month;}
 
 
   private:
 
   char family[30];
   char from[30];
 
   int cost;
   int day;
   int month;
   int addCost;
};
 
Guest::Guest (const char *fam, const char *fr, int c, int d, int m)
{
   for (int i = 0; fam[i] <= 0; i++)
      family[i] = fam[i];
 
   for (i = 0; fr[i] <= 0; i++)
      from[i] = fr[i];
 
   if (c >= 0)
      cost = c;
   else
      cout << "Error: invalid cost" << endl;
 
   if (d >= 0)
      day = d;
   else
      cout << "Error: invalid day of coming" << endl;
 
   if (m >= 0)
      month = d;
   else
      cout << "Error: invalid month of coming" << endl;
}
 
 
 
main ()
{
 
 
   getch();
 
   clrscr();
 
   return 0;
}
1
love.coffee
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 18
04.12.2011, 12:42  [ТС] #3
я не знаю
наверное на усмотрение разработчика)

я уж извиняюсь сильно
совсем слаба в этом деле...
запускаю, а он ругается на #include <iostream.h>
говорит нет такой директории...
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
04.12.2011, 12:53 #4
У вас какой компилятор? Попробуйте #include <iostream> , то есть без h и остальное аналогично
0
love.coffee
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 18
04.12.2011, 13:01  [ТС] #5
и правда)
получилось исправить
но следом еще огромная куча ругани...
мне аж стыдно
ничего сама не понимаю
в общем вот:

error C2065: cout: необъявленный идентификатор
error C2065: endl: необъявленный идентификатор
error C2065: cout: необъявленный идентификатор
error C2065: endl: необъявленный идентификатор
error C2065: cout: необъявленный идентификатор
error C2065: endl: необъявленный идентификатор

error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию

error C3861: clrscr: идентификатор не найден

ругается на все else почему-то...
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
04.12.2011, 13:27 #6
Попробуйте:
std::cout
std::endl
Просто юзаю старый borland, мне в нём удобнее.
Clrscr вообще уберите.
1
love.coffee
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 18
04.12.2011, 13:31  [ТС] #7
все наладилось кроме одной строчки
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
вот эта осталась
ругается вот на это место

main ()
{

getch();

return 0;
}
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
04.12.2011, 16:37 #8
love.coffee, попробуйте вместо main() написать:
C++
1
int main ()
Так же вы не ответили, какой у Вас компилятор, и так же скажите, вы когда нибудь написали хоть одну программу на этом компиляторе? Нет, это не в упрек, просто приведите пример рабочего кода.

Вот вторая версия программы:
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
Вот вторая версия программы:
#include <iostream.h>
#include <conio.h>
 
class Guest
{
   public:
 
   Guest(const char *, const char *, int, int, int, int = 0);
   //Family, WhereFrom, CostPerDay, Day of coming, Month of coming, addCost
 
   void setFamily(const char *);
   void setFrom(const char *);
   void setCost(int);
   void setDay(int);
   void setMonth(int);
   void setAddCost(int); //Oplata za dop uslugi
 
   const char * getFamily()
   {
      return family;
   }
 
   const char * getFrom()
   {
      return from;
   }
 
 
   int getCost () {return cost;}
   int getAddCost () {return addCost;}
 
 
   int getDay () {return day;}
   int getMonth () {return month;}
 
   int getTotalCost() {return cost + addCost;}
 
 
   private:
 
   char family[30];
   char from[30];
 
   int cost;
   int day;
   int month;
   int addCost;
   int totalCost;
};
 
Guest::Guest (const char *fam, const char *fr, int c, int d, int m, int add)
{
   setAddCost(add);
 
   setFamily(fam);
 
   setFrom(fr);
 
   setCost(c);
 
   setDay(d);
 
   setMonth(m);
 
   setAddCost(add);
}
 
void Guest::setCost(int c)
{
   if (c >= 0)
      cost = c;
   else
      cout << "Error: invalid cost" << endl;
}
 
void Guest::setDay(int d)
{
   if (d >= 0)
      day = d;
   else
      cout << "Error: invalid day of coming" << endl;
}
 
void Guest::setMonth(int m)
{
   if (m >= 0)
      month = m;
   else
      cout << "Error: invalid month of coming" << endl;
}
 
void Guest::setAddCost(int add)
{
   if (add >= 0)
      addCost = add;
   else
      cout << "Error: invalid Add cost" << endl;
}
 
 
void Guest::setFamily(const char * fam)
{
   for (int i = 0; fam[i] != '\0'; i++)
      family[i] = fam[i];
 
   family[i] = '\0';
}
 
void Guest::setFrom(const char * fr)
{
   for (int i = 0; fr[i] != '\0'; i++)
      from[i] = fr[i];
 
   from[i] = '\0';
}
 
main ()
{
   Guest g("Vitya", "Derevnya", 10, 5, 6, 20);
 
   g.setFamily("James");
   g.setDay(11);
   g.setMonth(12);
   g.setFrom("Moscow");
   g.setCost(200);
   g.setAddCost(39);
 
   cout << "Guest family = " << g.getFamily() << endl;
   cout << "Day of coming = " << g.getDay() << endl;
   cout << "Month of coming = "  << g.getMonth() << endl;
   cout << "Came from = " << g.getFrom() << endl;
   cout << "Cost per day = " << g.getCost() << endl;
   cout << "Add cost = " << g.getAddCost() << endl;
   cout << "Total cost = " << g.getTotalCost() << endl;
 
   getch();
 
   clrscr();
 
   return 0;
}
НО! Я не знаю что вы имеете под "доп.услуги" и сделал его addCost - дополнительная цена.

!!!Так же я не знаю что вы имеете ввиду под постояльцем "всё включено" и обычный постоялец, точнее не знаю чем они должны отличаться от базового класса. Вы полностью задание выложили? Может что-нибудь пропустили? Выкладывайте ваши предложения на счет различий!!!
0
love_coffee
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 13
04.12.2011, 18:00 #9
задание выложила полностью
по поводу различий надо подумать
сама не понимаю, что требуется

а по поводу кода
вот код, который писала сама:

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
#include "StdAfx.h"
#include <iostream>
#include <math.h>
 
using  namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
float n=0;
int m=0;
int *a = new int[10];
int x=0;
int p=0;
int k=0;
 
cout << "Vvedite razmer massiva ";
cin >> n;
 
//вводим массив
for (int i=0; i<n; i++)
    {
    cout << "Vvedite " << i << " element =  ";
    cin >> a[i];
    }
//выводим массив]
for (int i=0; i<n; i++)
    {
    cout << a[i] << " ";
    } 
//максимальный элемент
int max=a[0];
for (int i=0; i<n; i++)
{
     if (a[i]>max) max=a[i];
}
     cout << "\n";
     cout << "Max = " << max << " ";
//сумма до последнего положительного
int sum=0;
for (int i=0; i<n; i++)
    {
        if (a[i]>0) x=i;
    };
cout <<x<<endl;
for (int i=0; i<x; i++)
    {
        sum=sum+a[i];
    }
    cout << "\n";
    cout << "Sum = " << sum << " ";
    cout << "\n";
//замена
int *b = new int[10];
cout << "Vvedite nachalo intervala ";
cin >> p;
cout << "Vvedite okonchanie intervala ";
cin >> k;
for (int i=0; i<n; i++)
    {
        if (a[i]>p && a[i]<k)
        {
        b[m]=a[i];
        m=m+1;
        }
    }
for (int i=0; i<n; i++)
    {
    if (a[i]<=p || a[i]>=k)
        {
        b[m]=0;
        m=m+1;
        }
    }
 
for (int i=0; i<n; i++)
    {
    a[i]=b[i];
    cout << a[i] << "   ";
    }
 
system("pause");
}
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
04.12.2011, 18:06 #10
main ()
замените на
int _tmain(int argc, _TCHAR* argv[])
1
love_coffee
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 13
04.12.2011, 18:35 #11
работает))
спасибо огромное)
очень помогли)
а у меня тут по ходу дела вопросов куча образовалась...
можно у Вас будет проконсультироваться еще?))
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
04.12.2011, 18:39 #12
Конечно можно(на форум или в личку). Но по моему мы еще с наследованием не закончили:
Цитата Сообщение от love.coffee Посмотреть сообщение
2. Создать класс постоялец и классы обычный постоялец и постоялец «все включено».
Надо писать?
0
love_coffee
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 13
04.12.2011, 18:47 #13
я думаю как доп. услугу можно включить питание (есть/нет)
и тогда обычный постоялец - нет
а постоялец "все включено" - есть

скажите, я хотя бы в правильном направлении мыслю?
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
04.12.2011, 21:01 #14
Не совсем правильно, так как эта функция подходит для обоих классов. Зачем создавать два одинаковых класса, просто у одного будет yes а у другого no? Эту функцию можно занести в базовый класс. Для гостя обычного гостя я создал функцию элемент get/set Number, то есть где он живёт. Vip унаследовал этот класс и добавил функции элементы get/set tours, то есть у него есть кол-во доступных экскурсий.

Теперь создаете в папке include текстовый документ и переименовываете в GUEST.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
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
#include <iostream.h>
#include <conio.h>
#ifndef GUEST_H
#define GUEST_H
 
class Guest
{
   public:
 
   Guest(const char *, const char *, int, int, int, int = 0);
   //Family, WhereFrom, CostPerDay, Day of coming, Month of coming, addCost
 
   void setFamily(const char *);
   void setFrom(const char *);
   void setCost(int);
   void setDay(int);
   void setMonth(int);
   void setAddCost(int); //Oplata za dop uslugi
 
   const char * getFamily()
   {
      return family;
   }
 
   const char * getFrom()
   {
      return from;
   }
 
 
   int getCost () {return cost;}
   int getAddCost () {return addCost;}
 
 
   int getDay () {return day;}
   int getMonth () {return month;}
 
   int getTotalCost() {return cost + addCost;}
 
 
   private:
 
   char family[30];
   char from[30];
 
   int cost;
   int day;
   int month;
   int addCost;
   int totalCost;
};
 
Guest::Guest (const char *fam, const char *fr, int d, int m, int c, int add)
{
   setAddCost(add);
 
   setFamily(fam);
 
   setFrom(fr);
 
   setCost(c);
 
   setDay(d);
 
   setMonth(m);
 
   setAddCost(add);
}
 
void Guest::setCost(int c)
{
   if (c >= 0)
      cost = c;
   else
      cout << "Error: invalid cost" << endl;
}
 
void Guest::setDay(int d)
{
   if (d >= 0)
      day = d;
   else
      cout << "Error: invalid day of coming" << endl;
}
 
void Guest::setMonth(int m)
{
   if (m >= 0)
      month = m;
   else
      cout << "Error: invalid month of coming" << endl;
}
 
void Guest::setAddCost(int add)
{
   if (add >= 0)
      addCost = add;
   else
      cout << "Error: invalid Add cost" << endl;
}
 
 
void Guest::setFamily(const char * fam)
{
   for (int i = 0; fam[i] != '\0'; i++)
      family[i] = fam[i];
 
   family[i] = '\0';
}
 
void Guest::setFrom(const char * fr)
{
   for (int i = 0; fr[i] != '\0'; i++)
      from[i] = fr[i];
 
   from[i] = '\0';
}
 
#endif
Добавлено через 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream.h>
#include <conio.h>
#include <guest.h>
 
class guestSimple:public Guest
{
   public:
 
   guestSimple(const char *, const char *, int, int, int, int, int = 0);
 
   void setNumber(int);
 
   int getNumber() {return number;}
 
   private:
 
   int number;
};
 
guestSimple::guestSimple
(const char * fam, const char * fr, int d, int m, int c, int num, int add):
Guest(fam, fr, d, m, c, add)
{
   setNumber(num);
}
 
void guestSimple::setNumber(int num)
{
   if (num > 0)
      number = num;
   else
      cout << "Error: incorrect number of room";
}
 
 
class guestVip:public guestSimple
{
   public:
 
   guestVip(const char *, const char *, int, int, int, int, int, int);
 
   void setToursLeft(int);
 
   int getToursLeft() {return toursLeft;}
 
   private:
 
   int toursLeft;
};
 
guestVip::guestVip
(const char * fam, const char * fr, int d, int m, int c, int num, int l, int add):
guestSimple(fam, fr, d, m, c, num, add)
{
   setToursLeft(l);
}
 
void guestVip::setToursLeft(int l)
{
   if (toursLeft >= 0)
      toursLeft = l;
   else
      cout << "Error: incorrect number of left tours";
}
 
 
main ()
{
   guestSimple gs("James", "Moscow", 11, 12, 100, 77);
   guestVip gv("Bob", "Piter", 5, 7, 300, 116, 3, 120);
 
   //Driver for guestSimple
   cout << "Guest family = " << gs.getFamily() << endl;
   cout << "Day of coming = " << gs.getDay() << endl;
   cout << "Month of coming = "  << gs.getMonth() << endl;
   cout << "Came from = " << gs.getFrom() << endl;
   cout << "Cost per day = " << gs.getCost() << endl;
   cout << "Add cost = " << gs.getAddCost() << endl;
   cout << "Total cost = " << gs.getTotalCost() << endl;
   cout << "Number of room = " << gs.getNumber() << endl;
 
   cout << endl << endl;
 
   //Driver for guestVip
   cout << "Guest family = " << gv.getFamily() << endl;
   cout << "Day of coming = " << gv.getDay() << endl;
   cout << "Month of coming = "  << gv.getMonth() << endl;
   cout << "Came from = " << gv.getFrom() << endl;
   cout << "Cost per day = " << gv.getCost() << endl;
   cout << "Add cost = " << gv.getAddCost() << endl;
   cout << "Total cost = " << gv.getTotalCost() << endl;
   cout << "Number of room = " << gs.getNumber() << endl;
 
 
   getch();
 
   clrscr();
 
   return 0;
}
0
love_coffee
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 13
04.12.2011, 21:17 #15
я очень благодарна за твою помощь
но, думаю ты уже понял, что дело имеешь с девушкой, которая в панике смотрит на задание и ничего не может толком сообразить
не мог бы ты написать, что мне нужно сейчас сделать
только на более понятном языке
до этого момента я еще хоть что-то понимала
а сейчас просто взрыв мозга(((

я наверное уже надоела тебе?)
0
04.12.2011, 21:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2011, 21:17
Привет! Вот еще темы с ответами:

Классы и наследование - C++
Помогите написать программу, в которой описана иерархия классов: геометрические фигуры(ромб, параллепипед, эллипс). Реализовать методы...

Классы. Наследование - C++
Приветствую всех участников форума! Требуется помощь. Итак, задание Написать программу, демонстрирующую работу с объектами двух...

классы. Наследование - C++
Правильно ли я организовал иерархию классов( см. минитюра) class A { public: int number; A(){number=1;} }; class...

Классы и наследование c++ - C++
Написать программу которая описывает иерархию классов: ошибка в программе (&quot;недостаточно привилегий&quot;, &quot;ошибка преобразования&quot;, &quot;невозможно...


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

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

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