0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 13
|
|
1 | |
Классы, наследование19.12.2011, 14:38. Показов 1069. Ответов 0
Метки нет (Все метки)
Создать программу с абстрактным базовым классом и множественным наследованием,реализовать в нем:
- конструктор,деструктор, виртуальную функцию просмотра текущего состояния объекта print(), friend – функцию Run (). Используя стандартные файловые потоки, информацию об объектах вывести в файл.Для корректной работы с файлом использовать обработку исключительных ситуаций. 17. Отдел кадров (ФИО, отдел, должность, дата приема на работу, внутренний стаж –функция Run (), ставка). Вот мой код программы...в main выдает ошибку..не могу понять почему...может я что-то неправильно делаю..помогите, плиз, доделать лабу.. #include "stdafx.h" #include <iostream> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <istream> #include <fstream> #include <conio.h> using namespace std; #define SIZE 255 class base { public: virtual void print()=0; virtual void fileprint()=0; }; //--------------------------------------------------------- class name: public base { protected: char *familiya, *imya, *ot4estvo; public: name(); name(char *,char *,char *); ~name() { cout<<" FIO uni4togeno"<<endl;} void print() { cout<<"Familiya="<<familiya<<endl; cout<<"Imya="<<imya<<endl; cout<<"Ot4estvo="<<ot4estvo<<endl;} }; name::name() { familiya=new char[SIZE]; familiya[0]='\0'; imya =new char[SIZE]; imya[0]='\0'; ot4estvo=new char[SIZE]; ot4estvo[0]='\0'; } //------------------------------------------------------- class sved: public base { protected: char *otdel, *dolgnost, *data; double stavka; public: sved(); sved(char *,char *,char *,double); ~sved() { cout<<"Svedeniya uni4togeny"<<endl;} void print() { cout<<"Otdel="<<otdel<<endl; cout<<"Dolgnost'="<<dolgnost<<endl; cout<<"Data'="<<data<<endl; cout<<"Stavka="<<stavka<<endl; } }; sved::sved() { otdel=new char[SIZE]; otdel[0]='\0'; dolgnost=new char[SIZE]; dolgnost[0]='\0'; data=new char[SIZE]; data[0]='\0'; } //------------------------------------------------------- class anketa: public name, public sved { public: char *a_fam, *a_imya, *a_ot4, *a_otdel, *a_dol, *a_data; double a_stavka,a_stag; anketa(char *familiya, char *imya, char *ot4estvo, char *otdel, char *dolgnost, char *data, double stavka) { a_fam=new char[SIZE]; a_fam=familiya; a_imya=new char[SIZE]; a_imya=imya; a_ot4=new char[SIZE]; a_ot4=ot4estvo; a_otdel=new char[SIZE]; a_otdel=otdel; a_dol=new char[SIZE]; a_dol=dolgnost; a_data=new char[SIZE]; a_data=data; a_stavka=stavka; cout<<"Anketa gotova"<<endl<<"------------------------"<<endl; } ~anketa() { cout<<" Anketa sterlas' "<<endl; } void print() { cout<<"Familiya="<<a_fam<<endl; cout<<"Imya="<<a_imya<<endl; cout<<"Ot4estvo="<<a_ot4<<endl; cout<<"Otdel="<<a_otdel<<endl; cout<<"Dolgnost'="<<a_dol<<endl; cout<<"Data priema na rabotu="<<a_data<<endl; cout<<"Stavka="<<a_stavka<<endl; cout<<"Vnutrennij stag="<<a_stag<<endl; } void fileprint() { try { ofstream of; of.open("anketa.txt", ios:ut | ios::app); if(of==0) throw "Error open file"; of<<"---------------------------------------"<<endl; of<<"Familiya="<<a_fam<<endl; of<<"Imya="<<a_imya<<endl; of<<"Ot4estvo="<<a_ot4<<endl; of<<"Otdel="<<a_otdel<<endl; of<<"Dolgnost'="<<a_dol<<endl; of<<"Data priema na rabotu="<<a_data<<endl; of<<"Stavka="<<a_stavka<<endl; of<<"Vnutrennij stag="<<a_stag<<endl; of<<"---------------------------------------"<<endl; of.close(); } catch(const char *report) { cout<<report<<endl; } } friend void Run(anketa *); }; void run (anketa *a) { a->a_stag=((a->a_stavka)*1.5); } //------------------------------------------------------------- void main { char *familiya, *imya, *ot4estvo, *otdel, *dolgnost,*data, str[SIZE]; double stavka; familiya=new char[SIZE]; imya =new char[SIZE]; ot4estvo=new char[SIZE]; otdel=new char[SIZE]; dolgnost=new char[SIZE]; data=new char[SIZE]; cout<<"Vvedite familiyu: "; cin>>familiya; cout<<"Vvedite imya: "; cin>>imya; cout<<"Vvedite ot4estvo: "; cin>>ot4estvo; cout<<"Otdel: "; cin>>otdel; cout<<"Dolgnost': "; cin>>dolgnost; cout<<"Data: "; cin>>data; try { cout<<"Stavka: "; void *b = cin>>stavka; if (b && stavka==0 && stavka<0) { throw 1; } else { cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); } } catch (...) { cout<<"parameter will be corrected to 0"<<endl; } anketa class1; class1.print(); class1.fileprint(); cout<<"soderzhimoe faila:"<<endl; fstream stream; stream.open("anketa.txt", ios::in); while(stream.eof()==0) { stream.getline(str,256); cout<<str<<endl; } stream.close(); cout<<endl; }
0
|
19.12.2011, 14:38 | |
Ответы с готовыми решениями:
0
Наследование, базовые классы и производные классы Классы и наследование (Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию вычисления объёма.) Классы, наследование Clojure Классы и наследование |
19.12.2011, 14:38 | |
19.12.2011, 14:38 | |
Помогаю со студенческими работами здесь
1
Классы(наследование) Наследование. Классы. C++ Классы и наследование Классы, наследование Классы и наследование Классы.Наследование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |