Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программа с абстрактным базовым классом и множеств, помощь в написании программы 
:(
    Опции темы
temask
Дата 21.12.2011, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.12.2011

Репутация: нет
Всего: нет



Помогите пожалуйста в решении задачи:

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

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


Вот то что я написал:
Код

#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;
    }



PM MAIL   Вверх
bsa
Дата 22.12.2011, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



temask, а в чем собственно проблема?
PM   Вверх
temask
Дата 22.12.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.12.2011

Репутация: нет
Всего: нет



Цитата(bsa @ 22.12.2011,  12:37)
temask, а в чем собственно проблема?

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


И вообще правильно ли я сделал то что у меня уже есть?
PM MAIL   Вверх
bsa
Дата 22.12.2011, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



понятия не имею. ты запускать и проверять не пробовал?
PM   Вверх
xvr
Дата 22.12.2011, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Непонятна общая постановка задачи:

Цитата(temask @  21.12.2011,  22:08 Найти цитируемый пост)
- виртуальную функцию просмотра текущего состояния объекта print(), 

Понятие 'текущее состояние' подразумевает, что оно может меняться, но совершенно непонятно как и под действием чего.

Далее -
Цитата(temask @  21.12.2011,  22:08 Найти цитируемый пост)
Создать программу с абстрактным базовым классом и множественным наследованием,
подразумевает, что в программе будут какие то сущности, в чем то общие (базовый класс), и в чем то разные (наследники). Ясно, что типов этих сущностей должно быть несколько. Но далее в задании упоминается только 1 такая сущность - 'Мобильные телефоны'

Модель чего, собственно, вам надо построить?


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0458 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.