Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 23:14   #1
temask
Новичок
Джуниор
 
Регистрация: 30.09.2010
Сообщений: 1
По умолчанию программа с абстрактным базовым классом и множественным наследованием

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

Общая постановка. Создать программу с абстрактным базовым классом и множественным наследованием,(либо иерархией классов) реализовать в нем:
- конструктор,
- деструктор,
- виртуальную функцию просмотра текущего состояния объекта 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;
	}
temask вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с наследованием! Shepard90 Общие вопросы C/C++ 1 16.12.2010 18:46
Программа с классом и объектами!!! Sudeki Помощь студентам 0 13.12.2009 15:20
Программа с классом и объектами (Что в программе нужно изменить?) wepoTWR Помощь студентам 0 17.11.2009 19:26
Программа с классом и объектами. wepoTWR Помощь студентам 3 10.11.2009 22:34
[Delphi]: Создание нового класса с наследованием Kolhan Помощь студентам 6 17.04.2009 00:03