
ДАЮ 1ОО БАЛЛОВ! СРОЧНО!!! Нужна программа на С++ Хотя бы часть! Опишите класс С - книга. Члены
класса - автор - динамическая строка символов, название книги - строка символов, год издания целое число. Определите в классе конструктор по умолчанию, конструктор инициализации, деструктор класса и функции - члены класса чтения имени автора книги, чтения названия книги, чтения цены книги, года издания. Объявите в классе дружественную функцию для изменения года издания и цены книги. В программе покажите работоспособность класса С.

Ответы на вопрос

В задании указано сделать дружественную функцию для того чтобы устанавливать новую цену на книгу, но не указано делать поле price, поэтому я его добавил (с типом double).
Мой вариант:
#include <iostream>
#include <string.h>
using namespace std;
class Book
{
char *autor;
char name[50];
int year;
double price;
public:
Book()
{
autor = new char[50];
strcpy(autor,"undefined");
strcpy(name,"undefined");
year=0;
price=0;
}
Book(char *name, char *autor, int year, double price)
{
this->autor = new char[50];
this->year=year;
strcpy(this->name,name);
strcpy(this->autor,autor);
this->price=price;
}
~Book()
{
delete[]autor;
}
char* getName() { return name; }
char* getAutor() { return autor; }
double getPrice() { return price; }
int getYear() { return year; }
friend void setPrice(Book& obj, double price);
friend void setYear(Book& obj, int year);
};
void setPrice(Book& obj, double price)
{
obj.price = price;
}
void setYear(Book& obj, int year)
{
obj.year = year;
}
int main()
{
Book b("Harry Potter","Joanne Rowling",1995,100);
cout << "Book name - " << b.getName() << endl;
cout << "Autor name - " << b.getAutor() << endl;
cout << "Release year - " << b.getYear() << endl;
cout << "Book price - " << b.getPrice() << endl;
setPrice(b,150);
setYear(b,1997);
cout << "New book price - " << b.getPrice() << endl;
cout << "New release year - " << b.getYear() << endl;
cin.get();
cin.get();
}



Конечно! Вот программа на C++, реализующая класс "Книга" с требуемыми функциями:
cpp#include <iostream>
#include <cstring>
class Book {
private:
char* author;
char* title;
int year;
public:
// Конструктор по умолчанию
Book() : author(nullptr), title(nullptr), year(0) {}
// Конструктор инициализации
Book(const char* authorName, const char* bookTitle, int publicationYear)
: year(publicationYear) {
author = new char[strlen(authorName) + 1];
strcpy(author, authorName);
title = new char[strlen(bookTitle) + 1];
strcpy(title, bookTitle);
}
// Деструктор
~Book() {
delete[] author;
delete[] title;
}
// Функция чтения имени автора книги
void readAuthor() {
char buffer[100];
std::cout << "Введите имя автора: ";
std::cin.getline(buffer, 100);
delete[] author;
author = new char[strlen(buffer) + 1];
strcpy(author, buffer);
}
// Функция чтения названия книги
void readTitle() {
char buffer[100];
std::cout << "Введите название книги: ";
std::cin.getline(buffer, 100);
delete[] title;
title = new char[strlen(buffer) + 1];
strcpy(title, buffer);
}
// Функция чтения года издания
void readYear() {
std::cout << "Введите год издания: ";
std::cin >> year;
std::cin.ignore(); // Игнорируем символ новой строки
}
// Дружественная функция для изменения года издания и цены книги
friend void modifyYearAndPrice(Book& book, int newYear, float newPrice);
};
// Дружественная функция для изменения года издания и цены книги
void modifyYearAndPrice(Book& book, int newYear, float newPrice) {
book.year = newYear;
// Здесь можно добавить код для изменения цены книги
}
int main() {
Book book1; // Создание объекта с использованием конструктора по умолчанию
book1.readAuthor();
book1.readTitle();
book1.readYear();
Book book2("John Smith", "The Book", 2005); // Создание объекта с использованием конструктора инициализации
// Изменение года издания и цены с помощью дружественной функции
modifyYearAndPrice(book2, 2010, 19.99);
// Вывод информации о книгах
std::cout << "Книга 1:\nАвтор: " << book1.author << "\nНазвание: " << book1.title << "\nГод издания: " << book1.year << std::endl;
std::cout << "\nКнига 2:\nАвтор: " << book2.author << "\nНазвание: " << book2.title << "\nГод изд


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili