К зачету по Языкам
Пользователи, просматривающие топик: 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]Что такое вообще "Сопоставляйте указатель в массиве с объектом. "?
|
|
|
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; можем считать что-нибудь ещё. сишный массив, кстати, в данном случае, мягко выражаясь, неуместен - тут нужен вектор или очередь ты покажи что у тебя есть, а мы будем посмотреть чем тебе помочь
|
|
|
RE: К зачету по Языкам - 2008-12-18 02:08:43.616666
|
|
|
Dezmont_
Сообщений: 21
Оценки: 0
Присоединился: 2008-12-18 01:29:18.740000
|
quote:
ты покажи что у тебя есть, а мы будем посмотреть чем тебе помочь #include <iostream>
#include<string>
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<<"input name book= ";
cin>>name;
cout<<"input ceny= ";
cin>>money;
cout<<endl;
};
void putdata() {cout<<"\nName= "<<name<<" \n Money= "<<money<<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<<endl<<"input kol-vo listov= ";
cin>>str;
}
void putdata(){publication::putdata(); cout<<"Listov= "<<str<<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<<endl<<"input time record = ";
cin>>minut;
}
void putdata(){ publication::putdata();
cout<<"Time= "<<minut<<endl;
}
};
int main()
{ publication ch[4];
for(int i=0; i<4;i++)
{
book *x= new book[i];
ch[i].getdata();
x->publication;
};
ch[2].putdata();
system("PAUSE");
};
|
|
|
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<4;i++)
{
book *x= new book[i];
ch[i].getdata();
x->publication;
};
ch[2].putdata();
system("PAUSE");
};
int main()
{
publication * ch[4];
for(int i = 0; i < 4; ++i)
{
bool newBook;
// здесь у пользователя надо спросить - книгу или кассету он хочет добавить. как - на твоё усмотрение
if(newBook)
{
ch[i] = new book;
}
else
{
ch[i] = new tape;
}
ch[i]->getdata();
}
for(int i = 0; i < 4; ++i)
{
ch[i]->putdata();
}
system("PAUSE");
}
типа того. научить вас хотят динамическому полиморфизму, но делают это через задницу и автогеном
|
|
|
RE: К зачету по Языкам - 2008-12-18 03:26:22.486666
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
кстати то, что у тебя до main - неверно. почитай про виртуальные функции и для чего они нужны
|
|
|
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]->getdata();
} Без разницы что я выбираю, но результат один и тот же, спрашиваетсяы только имя и цену книги. А должно, наверное, в зависимости от выбора пользователя, кол-во листов или число минут еще просить.
|
|
|
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]->getdata();
} Без разницы что я выбираю, но результат один и тот же, спрашиваетсяы только имя и цену книги. А должно, наверное, в зависимости от выбора пользователя, кол-во листов или число минут еще просить. не видишь? потому что двоечник про виртуальные функции ты почитал? добавь в объявление класса publication слово virtual к фунциям getdata и putdata: virtual void getdata() { … } virtual void putdata() { … } а также напиши деструкторы всем трём классам, и их тоже сделай виртуальными а чтобы увидеть в этом смысл, тебе надо понимать разницу между статическим и динамическим типом переменной - и, собственно, иметь представление о том, как работает динамический полиморфизм. почитай же наконец хотя бы Страуструпа, ну
|
|
|
RE: К зачету по Языкам - 2008-12-18 11:44:58.456666
|
|
|
Dezmont_
Сообщений: 21
Оценки: 0
Присоединился: 2008-12-18 01:29:18.740000
|
Все спасибо все сошлось. Почитал Липпмана.
|
|
|
|
|