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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создать программу с абстрактным базовым классом и 
:(
    Опции темы
Shank
Дата 18.5.2013, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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

Код

#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   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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