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

Создать программу с абстрактным базовым классом и множественным наследованием (немного переделать программный код) - C++

Восстановить пароль Регистрация
 
Shank
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 14
17.05.2013, 22:59     Создать программу с абстрактным базовым классом и множественным наследованием (немного переделать программный код) #1
Помогите пожалуйста переделать код под вот это задание :

Общая постановка. Создать программу с абстрактным базовым классом и множественным наследованием,(либо иерархией классов) реализовать в нем:
- конструктор,
- деструктор,
- виртуальную функцию просмотра текущего состояния объекта print(),
- friend – функцию Run ().
Производные классы должны содержать переопределенную функцию просмотра состояния объектов, а также при вводе – выводе данных использовать функции обработки исключительных ситуаций. Используя стандартные файловые потоки, информацию об объектах вывести в файл.Для корректной работы с файлом использовать обработку исключительных ситуаций.

5. Объекты недвижимости
(Адрес, тип, этажность, квартир на этаж, подъездов, всего квартир - функция Run ())

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>
#include <string.h>
#include <conio.h>
#include <iomanip>
#include <fstream>
 
 
using namespace std;
 
class cMobil{
    public:
        virtual ~cMobil();          
        virtual void print();       
        static void PrintAll();
        static void DeleteAll();
        cMobil (const char *NAME);
        cMobil (){}
        char* name;     //Наименование
        char firma[30]; //Фирма
        char standart[30];  //Стандарт связи
        int akm;        //Заряд аккумулятора
        int po;         //Потребление при ожидании
        int pr;         //Потребление при разговоре
    private:
        cMobil* next;
        static cMobil* first;   
};
 
class cTime: public cMobil{
    public:
        cTime (const char *NAME);
        cTime (){}
        void print();   
        friend float Run(int AKM,int PO);
        friend float Run1(int AKM,int PR);
        
};
 
cMobil* cMobil::first=NULL;
 
cMobil::cMobil(const char *NAME){
    name = new char [strlen(NAME)+1];
    strcpy (name,NAME);
    cout<<"Firm: ";
    cin>>firma;
    cout<<"Standard connection: ";
    cin>>standart;
    cout<<"Battery charge: ";
    cin>>akm;
    cout<<"Consumption at expectation: ";
    cin>>po;
    cout<<"Consumption at conversation: ";
    cin>>pr;
    next=first;
    first=this;
    cout<<"\nData is accepted. Press any key to continue";
    getch();
    system("cls");
}
 
cMobil::~cMobil(){
    delete [] name;
}
 
float Run(int AKM, int PO){
    float rez = AKM / PO;
    return rez;
}
 
float Run1(int AKM,int PR){
    float rez = AKM / PR;
    return rez;
}
 
void cMobil::print(){
cout<<endl<<"|"<<setw(8)<<name<<"|"<<setw(8)<<firma<<"|"<<setw(19)<<standart<<"|"<<setw(14)<<akm<<"|"<<setw(26)<<po<<"|"<<setw(27)<<pr;
ofstream os("text.txt",ios::app);
os << endl<<"|"<<setw(8)<<name<<"|"<<setw(8)<<firma<<"|"<<setw(19)<<standart<<"|"<<setw(14)<<akm<<"|"<<setw(26)<<po<<"|"<<setw(27)<<pr;
os.close();
}
 
cTime::cTime(const char *NAME):cMobil(NAME)
    {
    //...
    }
 
void cTime::print(){
    cMobil::print();
    cout<<"|"<<setw(12)<<Run(akm,po)<<"|"<<setw(17)<<Run1(akm,pr)<<"|"<<endl;
    cout<<"--------------------------------------------------------------------------------------------------------------------------------------------";
    ofstream os("text.txt",ios::app);
    os << "|"<<setw(12)<<Run(akm,po)<<"|"<<setw(17)<<Run1(akm,pr)<<"|"<<endl;
    os << "--------------------------------------------------------------------------------------------------------------------------------------------";
    os.close();
}
 
void cMobil::PrintAll()
{
    cout<<"--------------------------------------------------------------------------------------------------------------------------------------------"<<endl;
    cout<<"|  Name  |  Firm  |Standard connection|Battery charge|Consumption at expectation|Consumption at conversation|Waiting time|Conversation time|"<<endl;
    cout<<"--------------------------------------------------------------------------------------------------------------------------------------------";
    ofstream os("text.txt",ios::out );
    os << "--------------------------------------------------------------------------------------------------------------------------------------------"<<endl;
    os << "|  Name  |  Firm  |Standard connection|Battery charge|Consumption at expectation|Consumption at conversation|Waiting time|Conversation time|"<<endl;; 
    os << "--------------------------------------------------------------------------------------------------------------------------------------------";
    os.close();
    cMobil* pMobil=first;
    while(pMobil)
    {
        pMobil->print();
        pMobil=pMobil->next;
    }
    cout<<"\nPress any key to continue";
    getch();
    system("cls");
}
 
int main()
    {
        int x;
        do{
            cout<<"\nSelect the menu item:"<<endl;
            cout<<"\n1 - Data input\n2 - Saving in a file and print on the screen\n3 - Exit\n"<<endl;
            cout<<"You have chosen: ";
            cin>>x;
            switch (x)
            {
                case 1:
                    system("cls");
                    char name[100];
                    cout<<"Name: ";
                    cin>>name;
                    new cTime(name);    
                    break;
                case 2:
                    system("cls");
                    cMobil::PrintAll();
                    break;
            }
        }while(x!=3);
        return 0;
    }
Добавлено через 25 секунд
И исправить ошибки по возможности
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2013, 22:59     Создать программу с абстрактным базовым классом и множественным наследованием (немного переделать программный код)
Посмотрите здесь:

Переделать программу немного... C++
C++ Переделать программу под класс. Т.е. чтобы она работала так же, но с классом
C++ Немного подправить код с наследованием (С++)
Надо переделать немного программу C++
C++ Непонятки с абстрактным классом
Немного переделать код C++
Полиморфизм с абстрактным классом C++
C++ Класс со множественным наследованием

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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