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

Абстрактный базовый класс и множественное наследование (либо иерархия классов) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужно мнение профессионалов http://www.cyberforum.ru/cpp-beginners/thread407120.html
Вот у меня такой вопрос реально сделать (вот есть два компа баз локальной сети! на обоих работает программа Apache и на ней стоит один и тот же сайт) допустим человек смотрит сайт на 1 компе как сделать так чтобы когда 1 комп выключиться человека автоматом перекинула на 2 комп и он продолжил смотреть то же сайт. вопрос: 1. реально сделать такое? 2. если да то как? приветствуеться:...
C++ Создать в динамической памяти одномерный массив Всем добрый день! Помогите с решением задачи. ---------------------------------------------------------------------------------------------- Условие: Создать в динамической памяти одномерный массив вещественных чисел. Определить значение минимального положительного элемента массива и вывести его адреса в динамической памяти.... http://www.cyberforum.ru/cpp-beginners/thread407115.html
Побитовое представление числа. C++
Всем привет, подскажите пожалуйста, нужно: Написать программу, которая принимает с клавиатуры число x, имеющее тип unsigned char и вывести значения его битов. Как перевести это число в побитовое, и как обращаться к отдельным битам этого числа, отдельные биты можно записовать в массив, с этим проблем нету... а как перевести я не знаю, точнее я перевожу для типа int работает, а для unsigned...
Найти ошибки C++
#include<iostream.h> #include<math.h> const double a=0.8,b=2.6,eps=0.3,n=20; void main() int i,mas t{-0.6,-0.1,0.3,1.9,7.8}; double n,d,sum,b,a,h,t,eps; sum=0; d=((2.7*(a+i*h))/(5.7-0.9*(a+i*h)+(a+i*h)*(a+i*h)))*cos((a+i*h)+(t/(1+(a+i*h)*(a+i*h)))*cos((a+i*h)+(t/(1+(a+i*h)*(a+i*h))))); sum=sum+d; {
C++ Задача с массивом http://www.cyberforum.ru/cpp-beginners/thread407093.html
Вводится массив из 10 элементов. Установить есть ли этот массив спадающей последовательностью.
C++ Написать программу, которая генерирует последовательность из 10 случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их Написать программу, которая генерирует последовательность из 10 случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их среднее арифметическое. подробнее

Показать сообщение отдельно
temask
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
15.12.2011, 11:49     Абстрактный базовый класс и множественное наследование (либо иерархия классов)
Помогите пожалуйста с задачей. Кое-что написал но еще далеко не все. Все ли пока правильно?


Мобильные телефоны (наименование, фирма, стандарт связи, заряд аккумулятора, потребление при ожидании, потребление при разговоре, время ожидания - функция Run (), время разговора –функция Run1 ()).

Общая постановка. Создать программу с абстрактным базовым классом и множественным наследованием,(либо иерархией классов) реализовать в нем:
- конструктор,
- деструктор,
- виртуальную функцию просмотра текущего состояния объекта print(),
- friend – функцию 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
#include <iostream>
#include <string.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
 
class cMobil{
    public:
        virtual ~cMobil();          
        virtual void print();       
        static void PrintAll();
        static void DeleteAll();
        cMobil (const char *NAME);
        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);
        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;
cout<<"|"<<setw(8)<<name<<"|"<<setw(8)<<firma<<"|"<<setw(19)<<standart<<"|"<<setw(14)<<akm<<"|"<<setw(26)<<po<<"|"<<setw(27)<<pr;
}
 
cTime::cTime(const char *NAME):cMobil(NAME)
    {
    //...
    }
 
void cTime::print(){
    cMobil::print();
    cout<<"|"<<setw(12)<<Run(akm,po)<<"|"<<setw(17)<<Run1(akm,pr)<<"|";
    cout<<endl;
    cout<<"--------------------------------------------------------------------------------------------------------------------------------------------";
}
 
void cMobil::PrintAll()
{
    cout<<"--------------------------------------------------------------------------------------------------------------------------------------------";
    cout<<endl;
    cout<<"|  Name  |  Firm  |Standard connection|Battery charge|Consumption at expectation|Consumption at conversation|Waiting time|Conversation time|";
    cout<<endl;
    cout<<"--------------------------------------------------------------------------------------------------------------------------------------------";
    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 - Printing on screen\n3 - Print to file\n4 - 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;
                case 3:
                    system("cls");
                    break;
            }
        }while(x!=4);
        return 0;
    }
Добавлено через 20 часов 51 минуту
Очень нужна помощь.

 Комментарий модератора 
Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят.
Запрещено создавать темы с бессмысленными названиями вроде "Помогите!", "Вопрос" и т.п.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru