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

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

Восстановить пароль Регистрация
 
love.coffee
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 18
04.12.2011, 09:35     классы и наследование #1
товарищи!
в понедельник зачет
а я совсем в этом ничего не смыслю((((
кто-нибудь
помогите, пожалуйста
огромное спасибо заранее)


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

2. Создать класс постоялец и классы обычный постоялец и постоялец «все включено».
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,110
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
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,110
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
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,110
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
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,110
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
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,110
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
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,110
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
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,110
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++
C++ Классы и наследование
C++ Классы, наследование
C++ Классы и наследование
Классы и наследование c++ C++

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

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

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

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