Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/64: Рейтинг темы: голосов - 64, средняя оценка - 4.53
0 / 0 / 1
Регистрация: 03.11.2014
Сообщений: 32

Создать класс "Книга"

25.01.2016, 18:25. Показов 12029. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать класс типа — книга. Поля — название, автор, год выпуска, вид литературы (худож., методич., справочн., ...). Класс имеет конструктор, деструктор. Методы: установки и возвращения значения полей, вычисления «возраста» книги, метод печати. Методы установки полей класса должны проверять корректность задаваемых параметров. Проверить работу этого класса.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2016, 18:25
Ответы с готовыми решениями:

создать класс- книга
Помогите создать класс книга : автор , название , издательство , год, количество страниц ))Очень нужно

Создать класс Книга: название, количество страниц, цена
Создать класс Книга: название, количество страниц, цена Реализовать в классе методы: · конструктор по умолчанию; · конструктор...

Создать класс КНИГА с такими полями в защищенной части: значення_УДК, автор, название, издательство, год издания.
Здраствуйте) Нужна помощь, а то незнаю как сделать даное задание! Создать класс КНИГА с такими полями в защищенной части: значення_УДК,...

2
0 / 0 / 1
Регистрация: 03.11.2014
Сообщений: 32
27.01.2016, 23:15  [ТС]
помогите хотя-бы поправить данный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <iostream>  
#include <cstring> 
#include <cassert> 
#include <stdio.h> 
#include "conio.h" 
using namespace std;               
 
class Book{ 
public: 
  Book(char au, char nb, char *jr, int yr); // Конструктор 
//  void UserFromKeyboard(); 
  //void setBook(char au, char nb, char *jr, int yr); 
  // Функции "set", установки значений полей книги 
  void setAuthorBook(char *au); // Установка имени автора книги 
  void setNameBook(char *nb);   // Установка названия книги 
  void setJanreBook(char *jr);  // Установка жанра книги 
  void setYearBook(int yr);   // Установка года выпуска книги 
 
  // Функции "get", возвращение значений полей книги 
  char *getAuthorBook() { return author; } ;// Возвращение имени автора книги 
  char *getNameBook()  { return nameBook; };   // Возвращение названия книги 
  char *getJanreBook()  { return janr; };  // Возвращение жанра книги 
  int getYearBook()   { return year; };// Возвращение года выпуска книги 
 
  void printBook();  // Печать значений книги 
  void CalculateYearBook(); 
  ~Book(); // Деструктор 
private: 
    char *author; 
    char *nameBook; 
    char *janr; 
    int year; 
}; 
// Конструктор---------------------------------------------------------------- 
Book::Book(char au, char nb, char* jr, int yr) 
{ 
   setAuthorBook(au); 
   setNameBook(nb); 
   setJanreBook(jr); 
   setYearBook(yr); 
} 
// Функция установки Автора Книги  //Значит вот с этого места препод хочет все это добро перенести в констурктор см. выше, но тогда придется менять всё или нет? Помогите кто знает(Говорит, что это лишний код, а проверка вообще не нужна) 
void Book::setAuthorBook(char *au) 
{ 
  // Проверка и выделение памяти для поля - Автор 
  int len = strlen(au); 
  if( 0 <= len && len < 256){ // Проверка диапазона, должен быть меньше 255 
    author = new char[strlen(au) + 1]; // Выделение памяти в 255 байт плюс завершающий символ 
    assert(author != 0);  // Проверка выделения памяти 
    strcpy(author, au);  // Копирование... 
   } 
  else   // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт... 
    cout<<" Error! Lenght > 256 bytes!"; 
} 
// Функция установки Названия книги 
void Book::setNameBook(char *nb) 
{ 
  // Проверка и выделение памяти для поля - Имя Книги 
  int len = strlen(nb); 
  if(len >= 0 && len < 256){ // Проверка диапазона, должен быть меньше 255 
    nameBook = new char[strlen(nb) + 1]; // Выделение памяти в 255 байт плюс завершающий символ 
    assert(nameBook != 0);  // Проверка выделения памяти 
    strcpy(nameBook, nb);  // Копирование... 
   } 
  else   // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт... 
    cout<<" Error! Lenght > 256 bytes!"; 
} 
// Функция установки Жанра Книги 
void Book::setJanreBook(char *jr) 
{ 
  // Проверка и выделение памяти для поля - Жанр 
  int len = strlen(jr); 
  if(len >= 0 && len < 256){ // Проверка диапазона, должен быть меньше 255 
    janr = new char[strlen(jr) + 1]; // Выделение памяти в 255 байт плюс завершающий символ 
    assert(janr != 0);  // Проверка выделения памяти 
    strcpy(janr, jr);  // Копирование... 
   } 
  else   // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт... 
    cout<<" Error! Lenght > 256 bytes!"; 
} 
// Функция установки Года Книги 
void Book::setYearBook(int yr) 
{ 
  // Проверка значений поля - Год Книги 
  if(yr < 2016) // Проверка диапазона, должен быть меньше 255 
    year = yr; 
  else   // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт... 
    cout<<" Error! Year > 2016 !"; 
} 
// Расчёт возраста Книги 
void Book::CalculateYearBook() 
{ 
   int MyYear = 2016,  // Текущий год 
       resultYear;  // Результат расчёта возраста книги 
 
   resultYear = MyYear - year; 
 
   cout<<"\n This Book "<<resultYear<<" Years! \n"<<endl; 
} 
// Печать объекта------------------------------------------------------------- 
void Book::printBook() 
{ 
   cout<<" Author Book: "<<author<<endl; 
   cout<<" Name Book: "<<nameBook<<endl; 
   cout<<" Janre Book: "<<janr<<endl; 
   cout<<" Year Book: "<<year<<endl; 
} 
// Деструктор----------------------------------------------------------------- 
Book::~Book() 
{ 
} 
//--------------------------------------------------------------------------- 
int main() 
{
   int z; 
   Book b("Servantes", "Don Kixot", "Romantic", 1550); 
 
   b.printBook(); 
   b.CalculateYearBook(); 
 
   b.setAuthorBook("Pushkin"); 
   b.setNameBook("Eugeny Onegin"); 
   b.setJanreBook("Roman"); 
   b.setYearBook(1834); 
   b.printBook(); 
   b.CalculateYearBook(); 
 
   cin>>z; 
}  
//-------------------------------------------------------------------
0
24 / 24 / 9
Регистрация: 18.12.2012
Сообщений: 194
28.01.2016, 00:15
Лучший ответ Сообщение было отмечено izilol как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "stdafx.h"
#include <iostream>  
#include <cstring> 
#include <cassert> 
#include <stdio.h> 
#include "conio.h" 
 
using namespace std;               
 
class Book{ 
public: 
  Book(char *au, char *nb, char *jr, int yr); // Конструктор 
//  void UserFromKeyboard(); 
  //void setBook(char au, char nb, char *jr, int yr); 
  // Функции "set", установки значений полей книги 
  void setAuthorBook(char *au); // Установка имени автора книги 
  void setNameBook(char *nb);   // Установка названия книги 
  void setJanreBook(char *jr);  // Установка жанра книги 
  void setYearBook(int yr);   // Установка года выпуска книги 
 
  // Функции "get", возвращение значений полей книги 
  char *getAuthorBook() { return author; } // Возвращение имени автора книги 
  char *getNameBook()  { return nameBook; }   // Возвращение названия книги 
  char *getJanreBook()  { return janr; }  // Возвращение жанра книги 
  int getYearBook()   { return year; }// Возвращение года выпуска книги 
 
  void printBook();  // Печать значений книги 
  void CalculateYearBook(); 
  ~Book(); // Деструктор 
private: 
    char *author; 
    char *nameBook; 
    char *janr; 
    int year; 
}; 
// Конструктор---------------------------------------------------------------- 
Book::Book(char *au, char *nb, char* jr, int yr) 
{ 
   setAuthorBook(au); 
   setNameBook(nb); 
   setJanreBook(jr); 
   setYearBook(yr); 
} 
// Функция установки Автора Книги  //Значит вот с этого места препод хочет все это добро перенести в констурктор см. выше, но тогда придется менять всё или нет? Помогите кто знает(Говорит, что это лишний код, а проверка вообще не нужна) 
void Book::setAuthorBook(char *au) 
{ 
  // Проверка и выделение памяти для поля - Автор 
  int len = strlen(au); 
  if( 0 <= len && len < 256){ // Проверка диапазона, должен быть меньше 255 
    author = new char[strlen(au) + 1]; // Выделение памяти в 255 байт плюс завершающий символ 
    assert(author != 0);  // Проверка выделения памяти 
    strcpy(author, au);  // Копирование... 
   } 
  else   // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт... 
    cout<<" Error! Lenght > 256 bytes!"; 
} 
// Функция установки Названия книги 
void Book::setNameBook(char *nb) 
{ 
  // Проверка и выделение памяти для поля - Имя Книги 
  int len = strlen(nb); 
  if(len >= 0 && len < 256){ // Проверка диапазона, должен быть меньше 255 
    nameBook = new char[strlen(nb) + 1]; // Выделение памяти в 255 байт плюс завершающий символ 
    assert(nameBook != 0);  // Проверка выделения памяти 
    strcpy(nameBook, nb);  // Копирование... 
   } 
  else   // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт... 
    cout<<" Error! Lenght > 256 bytes!"; 
} 
// Функция установки Жанра Книги 
void Book::setJanreBook(char *jr) 
{ 
  // Проверка и выделение памяти для поля - Жанр 
  int len = strlen(jr); 
  if(len >= 0 && len < 256){ // Проверка диапазона, должен быть меньше 255 
    janr = new char[strlen(jr) + 1]; // Выделение памяти в 255 байт плюс завершающий символ 
    assert(janr != 0);  // Проверка выделения памяти 
    strcpy(janr, jr);  // Копирование... 
   } 
  else   // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт... 
    cout<<" Error! Lenght > 256 bytes!"; 
} 
// Функция установки Года Книги 
void Book::setYearBook(int yr) 
{ 
  // Проверка значений поля - Год Книги 
  if(yr < 2016) // Проверка диапазона, должен быть меньше 255 
    year = yr; 
  else   // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт... 
    cout<<" Error! Year > 2016 !"; 
} 
// Расчёт возраста Книги 
void Book::CalculateYearBook() 
{ 
   int MyYear = 2016,  // Текущий год 
       resultYear;  // Результат расчёта возраста книги 
 
   resultYear = MyYear - year; 
 
   cout<<"\n This Book "<<resultYear<<" Years! \n"<<endl; 
} 
// Печать объекта------------------------------------------------------------- 
void Book::printBook() 
{ 
   cout<<" Author Book: "<<author<<endl; 
   cout<<" Name Book: "<<nameBook<<endl; 
   cout<<" Janre Book: "<<janr<<endl; 
   cout<<" Year Book: "<<year<<endl; 
} 
// Деструктор----------------------------------------------------------------- 
Book::~Book() 
{ 
} 
//--------------------------------------------------------------------------- 
int main() 
{
   int z; 
   Book b("Servantes", "Don Kixot", "Romantic", 1550); 
 
   b.printBook(); 
   b.CalculateYearBook(); 
 
   b.setAuthorBook("Pushkin"); 
   b.setNameBook("Eugeny Onegin"); 
   b.setJanreBook("Roman"); 
   b.setYearBook(1834); 
   b.printBook(); 
   b.CalculateYearBook(); 
 
   cin>>z; 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.01.2016, 00:15
Помогаю со студенческими работами здесь

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс"
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать класс Man (человек), с полями: имя, возраст, пол и вес. Создать производный класс Student ...
Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить методы задания имени, возраста и веса. Создать производный класс...

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким условием: Создать абстрактный базовый класс Тройка чисел с...

Создать базовый класс Человек. Создать производный класс Сотрудник, содержащий следующие данные
Создать базовый класс Человек. Каждый объект класса должен содержать следующие данные: ФИО, год рождения, пол. Класс должен выполнять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru