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

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

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

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

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

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


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

2. Создать класс постоялец и классы обычный постоялец и постоялец «все включено».
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2011, 09:35     классы и наследование
Посмотрите здесь:

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

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

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

Классы и наследование - C++
Доброго времени суток. Помогите решить задание. Дан класс pegasus ,у которого родительский класс horse, надо переделать код, чтобы при...

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

Классы и наследование - C++
Реализовать класс−оболочку Number для числового типа double. Реализовать методы умножения и вычитания. Создать производный класс Real, в...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
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;
}
love.coffee
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 18
04.12.2011, 12:42  [ТС]     классы и наследование #3
я не знаю
наверное на усмотрение разработчика)

я уж извиняюсь сильно
совсем слаба в этом деле...
запускаю, а он ругается на #include <iostream.h>
говорит нет такой директории...
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
04.12.2011, 12:53     классы и наследование #4
У вас какой компилятор? Попробуйте #include <iostream> , то есть без h и остальное аналогично
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 почему-то...
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
04.12.2011, 13:27     классы и наследование #6
Попробуйте:
std::cout
std::endl
Просто юзаю старый borland, мне в нём удобнее.
Clrscr вообще уберите.
love.coffee
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 18
04.12.2011, 13:31  [ТС]     классы и наследование #7
все наладилось кроме одной строчки
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
вот эта осталась
ругается вот на это место

main ()
{

getch();

return 0;
}
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
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 - дополнительная цена.

!!!Так же я не знаю что вы имеете ввиду под постояльцем "всё включено" и обычный постоялец, точнее не знаю чем они должны отличаться от базового класса. Вы полностью задание выложили? Может что-нибудь пропустили? Выкладывайте ваши предложения на счет различий!!!
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");
}
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
04.12.2011, 18:06     классы и наследование #10
main ()
замените на
int _tmain(int argc, _TCHAR* argv[])
love_coffee
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 13
04.12.2011, 18:35     классы и наследование #11
работает))
спасибо огромное)
очень помогли)
а у меня тут по ходу дела вопросов куча образовалась...
можно у Вас будет проконсультироваться еще?))
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
04.12.2011, 18:39     классы и наследование #12
Конечно можно(на форум или в личку). Но по моему мы еще с наследованием не закончили:
Цитата Сообщение от love.coffee Посмотреть сообщение
2. Создать класс постоялец и классы обычный постоялец и постоялец «все включено».
Надо писать?
love_coffee
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 13
04.12.2011, 18:47     классы и наследование #13
я думаю как доп. услугу можно включить питание (есть/нет)
и тогда обычный постоялец - нет
а постоялец "все включено" - есть

скажите, я хотя бы в правильном направлении мыслю?
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2011, 21:17     классы и наследование
Еще ссылки по теме:

Классы, наследование - C++
Доброго времени суток! Объясните пожалуйста, как работает операция &quot;::&quot; на примере этой программы. И работу конструкции Time::Time() : ...

Классы, наследование - C++
Собственно, задача поставлена так, в файле N логинов и паролей, которые считываются и проверяются с теми что введены с клавиатуры. ...

Классы, наследование - C++
Есть родительский класс Base, у него дочерний класс Child1, у Child1 дочерний Child2; Задача в том что-бы у класса Child1, не было...

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

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


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

Или воспользуйтесь поиском по форуму:
love_coffee
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 13
04.12.2011, 21:17     классы и наследование #15
я очень благодарна за твою помощь
но, думаю ты уже понял, что дело имеешь с девушкой, которая в панике смотрит на задание и ничего не может толком сообразить
не мог бы ты написать, что мне нужно сейчас сделать
только на более понятном языке
до этого момента я еще хоть что-то понимала
а сейчас просто взрыв мозга(((

я наверное уже надоела тебе?)
Yandex
Объявления
04.12.2011, 21:17     классы и наследование
Ответ Создать тему
Опции темы

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