Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

К зачету по Языкам

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> К зачету по Языкам
Имя
Сообщение << Старые топики   Новые топики >>
К зачету по Языкам - 2008-12-18 01:40:41.273333   
Dezmont_

Сообщений: 21
Оценки: 0
Присоединился: 2008-12-18 01:29:18.740000
№ 1. Пусть имеется издательская компания, которая продает и книги, и аудио версии печатной продукции (лабораторная работа № 7 упр.1). Создайте класс publication, хранящий название (строка) и цену (типа float) публикации. Создайте два порожденных класса: book, в котором происходит изменение счетчика страниц (типа int) и tape, в котором происходит изменение счетчика записанных на кассету страниц. Каждый из классов должен иметь метод getdata(), запрашивающий информацию у пользователя, и putdata(), для вывода данных на экран. Напишите main(), где должен быть создан массив указателей на класс publication. В цикле запрашивается у пользователя данные о конкретной книге или кассете, используйте new для создания нового объекта book или tape. Сопоставляйте указатель в массиве с объектом. Когда пользователь закончит ввод исходных данных , выведите результат для всех введенных книг и кассет, используя цикл for и единственное выражение p_arr[j]-> putdata( ) ; для вывода данных о каждом объекте из массива.

До main я сделал, а что писать в main, я вообще не догоняю. [sm=ak.gif]Что такое вообще "Сопоставляйте указатель в массиве с объектом. "?
Post #: 1
RE: К зачету по Языкам - 2008-12-18 01:51:58.790000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Dezmont_

Что такое вообще "Сопоставляйте указатель в массиве с объектом. "?


дык кто ж его знает. можем считать что присваивание, что-то вроде mas[0] = new book; можем считать что-нибудь ещё. сишный массив, кстати, в данном случае, мягко выражаясь, неуместен - тут нужен вектор или очередь

ты покажи что у тебя есть, а мы будем посмотреть чем тебе помочь
Post #: 2
RE: К зачету по Языкам - 2008-12-18 02:08:43.616666   
Dezmont_

Сообщений: 21
Оценки: 0
Присоединился: 2008-12-18 01:29:18.740000
quote:

ты покажи что у тебя есть, а мы будем посмотреть чем тебе помочь


#include &lt;iostream&gt; #include&lt;string&gt; using namespace std; class publication { string name; float money; public: publication(){name="unknow"; money=0;} publication( string n, float m){name=n; money=m;} void getdata() { cout&lt;&lt;"input name book= "; cin&gt;&gt;name; cout&lt;&lt;"input ceny= "; cin&gt;&gt;money; cout&lt;&lt;endl; }; void putdata() {cout&lt;&lt;"\nName= "&lt;&lt;name&lt;&lt;" \n Money= "&lt;&lt;money&lt;&lt;endl;} }; class book: public publication { int str; public: book(){str=0;} book(string naz, float cen, int paper):publication(naz,cen) {str= paper;} void getdata(){ publication::getdata(); cout&lt;&lt;endl&lt;&lt;"input kol-vo listov= "; cin&gt;&gt;str; } void putdata(){publication::putdata(); cout&lt;&lt;"Listov= "&lt;&lt;str&lt;&lt;endl; } }; class tape: public publication { float minut; public: tape(){minut=0;} tape(string naz, float cen, float t):publication(naz,cen) {minut=t;} void getdata(){ publication::getdata(); cout&lt;&lt;endl&lt;&lt;"input time record = "; cin&gt;&gt;minut; } void putdata(){ publication::putdata(); cout&lt;&lt;"Time= "&lt;&lt;minut&lt;&lt;endl; } }; int main() { publication ch[4]; for(int i=0; i&lt;4;i++) { book *x= new book[i]; ch[i].getdata(); x-&gt;publication; }; ch[2].putdata(); system("PAUSE"); };
Post #: 3
RE: К зачету по Языкам - 2008-12-18 02:23:00.990000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Dezmont_

int main() { publication ch[4]; for(int i=0; i&lt;4;i++) { book *x= new book[i]; ch[i].getdata(); x-&gt;publication; }; ch[2].putdata(); system("PAUSE"); };


int main() { publication * ch[4]; for(int i = 0; i &lt; 4; ++i) { bool newBook; // здесь у пользователя надо спросить - книгу или кассету он хочет добавить. как - на твоё усмотрение if(newBook) { ch[i] = new book; } else { ch[i] = new tape; } ch[i]-&gt;getdata(); } for(int i = 0; i &lt; 4; ++i) { ch[i]-&gt;putdata(); } system("PAUSE"); }
типа того. научить вас хотят динамическому полиморфизму, но делают это через задницу и автогеном
Post #: 4
RE: К зачету по Языкам - 2008-12-18 03:26:22.486666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
кстати то, что у тебя до main - неверно. почитай про виртуальные функции и для чего они нужны
Post #: 5
RE: К зачету по Языкам - 2008-12-18 11:02:43.160000   
Dezmont_

Сообщений: 21
Оценки: 0
Присоединился: 2008-12-18 01:29:18.740000
quote:

типа того. научить вас хотят динамическому полиморфизму, но делают это через задницу и автогеном

Может и хотят этому научить, правда на лекции вроде такого не было.

Я вот не вижу смысла в этих строках
if(newBook) { ch[i] = new book; } else { ch[i] = new tape; } ch[i]-&gt;getdata(); } Без разницы что я выбираю, но результат один и тот же, спрашиваетсяы только имя и цену книги. А должно, наверное, в зависимости от выбора пользователя, кол-во листов или число минут еще просить.

Post #: 6
RE: К зачету по Языкам - 2008-12-18 11:29:54.066666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Dezmont_

Может и хотят этому научить, правда на лекции вроде такого не было.


значит на лекциях ты ни хера не слушал

quote:

ORIGINAL: Dezmont_

Я вот не вижу смысла в этих строках
if(newBook) { ch[i] = new book; } else { ch[i] = new tape; } ch[i]-&gt;getdata(); } Без разницы что я выбираю, но результат один и тот же, спрашиваетсяы только имя и цену книги. А должно, наверное, в зависимости от выбора пользователя, кол-во листов или число минут еще просить.


не видишь? потому что двоечник

про виртуальные функции ты почитал? добавь в объявление класса publication слово virtual к фунциям getdata и putdata:

virtual void getdata() { … }
virtual void putdata() { … }

а также напиши деструкторы всем трём классам, и их тоже сделай виртуальными

а чтобы увидеть в этом смысл, тебе надо понимать разницу между статическим и динамическим типом переменной - и, собственно, иметь представление о том, как работает динамический полиморфизм. почитай же наконец хотя бы Страуструпа, ну
Post #: 7
RE: К зачету по Языкам - 2008-12-18 11:44:58.456666   
Dezmont_

Сообщений: 21
Оценки: 0
Присоединился: 2008-12-18 01:29:18.740000
Все спасибо все сошлось. Почитал Липпмана.
Post #: 8
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> К зачету по Языкам







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.