Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - производный класс

Ответить
Настройки темы
C/C++ - производный класс

Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 25-01-2009
Описание: Для читабельности кода используем тег [code]...[/code], на панели инструментов выглядит как значок "#"
Здравствуйте помогите разобраться имеется класс книга:
читать дальше »
Код: Выделить весь код
#include "stdafx.h"
#include <iostream> 
using namespace std;
                  
class Book{
	char *author; 
	char *name; 
	char *janr;
	int year;
public:
	Book(char *au, char *nb, char *jr, int yr);

	void set_author(char *au){author=au;} // Установка имени автора книги
	void set_name(char *nb){name=nb;}  // Установка названия книги
	void set_janr(char *jr){janr=jr;}  // Установка жанра книги
	void set_year(int yr){year=yr;}  // Установка года выпуска книги

// Функции "get", возвращение значений полей книги
  char *get_author() {return author;} 
  char *get_name()  {return name;}   
  char *get_janre()  {return janr;} 
  int  get_year()   {return year;}

  void printBook();  // Печать значений книги
  void CalculateYearBook(); //Вычисление возраста книги
};

Book::Book(char *au, char *nb, char *jr, int yr)
// Выделение памяти
{
   author = new char[strlen(au) + 1];   
    strcpy(author, au); 
 name = new char[strlen(nb) + 1]; 
    strcpy(name, nb); 
	janr = new char[strlen(jr) + 1];   
    strcpy(janr, jr);
	year=yr;
} 


void Book::CalculateYearBook()
{
   int MyYear = 2008,  
       resultYear;  

   resultYear = MyYear - year;
 cout<<"\n This Book "<<resultYear<<" Years! \n"<<endl;
}
// Печать объекта-------------------------------------------------------------
void Book::printBook()
{
   cout<<" Author Book: "<<author<<endl;
   cout<<" Name Book: "<<name<<endl;
   cout<<" Janre Book: "<<janr<<endl;
   cout<<" Year Book: "<<year<<endl;
   
}
void main()
{
   Book b("Servantes", "Don Kixot", "Romantic", 1950);
   b.printBook();
   b.CalculateYearBook();
   b.set_author("Pushkin");
   b.set_name("Lukomorie");
   b.set_janr("skazki");
   b.set_year(1968);
   b.printBook();
   b.CalculateYearBook();
}


Создать производный класс типа – учетная карточка наименования в библиотеке. Доопределить в нем поля: шифр, количество экземпляров, количество выдач наименования по запросу; методы: установки полей и получения значений полей, определения коэффициента востребованности наименования (относительно общего количества экземпляров наименования). Переопределить метод печати.

Я думаю, что должно выглядеть вот так
читать дальше »
Код: Выделить весь код
#include "stdafx.h"
#include <iostream> 
using namespace std;
                  
class Book{
protected:
	char *author; 
	char *name; 
	char *janr;
	int year;
public:
	Book(char *au, char *nb, char *jr, int yr);

	void set_author(char *au){author=au;}
	void set_name(char *nb){name=nb;}
	void set_janr(char *jr){janr=jr;}
	void set_year(int yr){year=yr;}

  char *get_author() {return author;} 
  char *get_name()  {return name;}   
  char *get_janre()  {return janr;} 
  int  get_year()   {return year;}

  void printBook();  
  void CalculateYearBook();
};

Book::Book(char *au, char *nb, char *jr, int yr)
{
   author = new char[strlen(au) + 1];   
    strcpy(author, au); 
 name = new char[strlen(nb) + 1]; 
    strcpy(name, nb); 
	janr = new char[strlen(jr) + 1];   
    strcpy(janr, jr);
	year=yr;
} 


void Book::CalculateYearBook()
{
   int MyYear = 2008,  
       resultYear;  

   resultYear = MyYear - year;
 cout<<"\n This Book "<<resultYear<<" Years! \n"<<endl;
}

void Book::printBook()
{
   cout<<" Author Book: "<<author<<endl;
   cout<<" Name Book: "<<name<<endl;
   cout<<" Janre Book: "<<janr<<endl;
   cout<<" Year Book: "<<year<<endl;
}

class library_card:public Book
{
int shifr;
int exeplyars;
int vydachi;
public:
library_card(int sh, int kol_ex, int kol_vyd);

 void set_shifr(int sh){shifr=sh;}
 void set_exeplyars(int kol_ex){exeplyars=kol_ex;}
 void set_vydachi(int kol_vyd){vydachi=kol_vyd;}

 int  get_shifr()  {return shifr;}   
 int  get_exeplyars()  {return exeplyars;} 
 int  get_vydachi()   {return vydachi;}

void printlibrary_card();
void vostrebovannost();
};
library_card::library_card(char *au, char *nb, char *jr, int yr, int sh , int kol_ex, int kol_vyd):
Book(author, name, janr, year)// сдесь ругается  ??
{
shifr=sh;
exeplyars=kol_ex;
vydachi=kol_vyd;
}

void library_card::vostrebovannost()
{
}
void library_card::printlibrary_card()
{
printBook();
cout<<" shifr: "<<shifr<<endl;
cout<<" exeplyars: "<<exeplyars<<endl;
cout<<" vydachi: "<<vydachi<<endl;
}

void main()
{
   Book b("Servantes", "Don Kixot", "Romantic", 1950);
   b.printBook();
   b.CalculateYearBook();
   b.set_author("Pushkin");
   b.set_name("Lukomorie");
   b.set_janr("Skazki");
   b.set_year(1968);
   b.printBook();
   b.CalculateYearBook();	
card.printlibrary_card();
}


И дальше то, что я совсем непонимаю как сделать
Написать программу «Электронный каталог библиотеки», создающую картотеку библиотеки, позволяющую делать запрос на определенную книгу, выводить на экран список востребованных наименований с указанием коэффициента, изменять данные наименования (по частям и полностью), искать книгу по заданному параметру (шифр, название, автор, вид литературы) и печатать на экран содержимое каталога.

Отправлено: 04:31, 21-01-2009

 

Ветеран


Сообщения: 2996
Благодарности: 632

Профиль | Отправить PM | Цитировать


Так в чём же дело? - Чисто механическая работа, которая делается после прочтения одной-двух коротких глав учебника специально глянул объём необходимого материала у Страуструпа.

А не смущает, что конструктор и методы присвоения для полей реализованы совсем неодинаково? ;-)

Отправлено: 11:49, 21-01-2009 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Drongo

Будем жить, Маэстро...


Moderator


Сообщения: 6695
Благодарности: 1391

Профиль | Сайт | Отправить PM | Цитировать


Цитата Busla:
А не смущает, что конструктор и методы присвоения для полей реализованы совсем неодинаково? ;-) »
А если так?
Код: Выделить весь код
...
// Реализация
Book::Book(char *au, char *nb, char *jr, int yr)
{
   set_author(au);
   set_name(nb);
   //Дальше, остальные функции
   //...
}
// Реализация функций присваивания
// Функция присваивания автора
void Book::set_author(char *au)
{
   author = au;
}   
// Функция присваивания имени
void Book::set_name(char *nb)
{
   name = nb;
}
//...

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]


Отправлено: 13:32, 25-01-2009 | #3


Ветеран


Сообщения: 2996
Благодарности: 632

Профиль | Отправить PM | Цитировать


Sky-er, не надо редактировать свои сообщения без лишней необходимости.

Цитата Sky-er:
И дальше то, что я совсем непонимаю как сделать »
Это потому, что задание с производным классом мало относится к созданию программы учёта. Например, сущность "книга" там вообще не нужна, по крайней мере в такой реализации.

Drongo, в первоначальной реализации конструктор создавал новые строки в объекте. В твоём варианте конструктор хранит адрес какой-то внешней строки, вот что получается:
Код: Выделить весь код
:цикл
  вывод:  введите название новой книги
  ввод: name
  новый объект со ссылкой на name
повторяем?
в итоге все объекты будут ссылаться на переменную name, где находится название последней книги
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:54, 25-01-2009 | #4


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Busla:
Это потому, что задание с производным классом мало относится к созданию программы учёта. Например, сущность "книга" там вообще не нужна, по крайней мере в такой реализации. »
Это просто первое задание было создать класс книга, потом сделать производный класс от него ну а дальше как написанно каталог библиотеки просто они связанны наверно должны быть я так думаю, а не менять полностью весь код для написания каталога библиотеки

Отправлено: 00:08, 26-01-2009 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - производный класс

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Класс стек и очередь на с++ aina Программирование и базы данных 8 30-12-2009 07:54
Обработать класс TStringGrid Frost_Imp AutoIt 6 06-10-2009 22:47
C/C++ - класс вектор root_777 Программирование и базы данных 8 12-12-2007 00:40
класс в dll lehha Программирование и базы данных 1 29-05-2006 21:20
Класс string в MS Visual C++ 6.0 studentrsu Программирование и базы данных 1 22-03-2004 10:20




 
Переход