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

Реализовать класс "Книга"

06.09.2016, 13:41. Показов 6949. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть : Книга(жанр,автор,название,год издания,цена).
Нужно написать программу :
1.Все данные должны быть закрытыми.Доступ к полям класса должны обеспечить методы класса.
2.Класс должен содержать открытые методы-аксессоры:
-для инициализации полей Set
-для получения из полей Get
-для вывода на экран Show
3.для возврата значения из полей необходимо исп. ссылки.

Помогите доделать/переделать программу.Вот что смог ...
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
#include <iostream>
using namespace std;
 
class kniga {
public:
    char janr[20];
    char avtor[30];
    char nazvanie[40];
    int god_izdania;
    int cena;
 
void set()
{
    cout<<"Vvedite janr:";
    cin>>janr;
    cout<<"Vvedite avtora:";
    cin>>avtor;
    cout<<"Vvedite nazvanie:";
    cin>>nazvanie;
    cout<<"Vvedite god vipyska:";
    cin>>god_izdania;
    cout<<"Vvedite ceny:";
    cin>>cena;
}
void show()
{
    cout<<"Janr:"<<janr<<endl;
    cout<<"Avtor:"<<avtor<<endl;
    cout<<"Nazvanie:"<<nazvanie<<endl;
    cout<<"GOd vipyska:"<<god_izdania<<endl;
    cout<<"Cena:"<<cena<<endl;
}
 
 
};
 
 
int main()
{
    kniga n1;
 
    n1.set();
    n1.show();
 
 
    system("pause");
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.09.2016, 13:41
Ответы с готовыми решениями:

Книга. Реализовать класс, добавить поля
Книга. Реализовать класс, добавить поля, в том числе с типом char* в приватную секцию, добавить геттеры и сеттеры для этих полей в...

Реализовать связь классов "телефонная книга" и родительский класс "телефонный номер"
Суть проблемы:есть дочерний класс &quot;телефонная книга&quot; и родительский класс &quot;телефонный номер&quot;. В классе &quot;телефонная книга&quot; к...

Класс КНИГА
Разработать класс – КНИГА. В закрытой части определить данные – автор, название, издательство, год издания. Определить конструкторы,...

25
1 / 1 / 2
Регистрация: 07.06.2016
Сообщений: 82
16.09.2016, 13:14  [ТС]
Студворк — интернет-сервис помощи студентам
Мне снова нужна ваша помощь.То же задание,только нужно добавить в код :
1.Взаимодействие объекта класса с файлами через дружественные функции
2.Придумать и разработать подставляемую функцию-член класса.
3.Для определения кол-ва сущ. объектов класса исп. статические члены класса.
4.(необязательно)
- хренение сведений в файле
-дозапись файла сведениями новых объектов
-чтение из файла
-определение кол-ва существующих объектов класса
(Скорей всего я уже надоел,но на всякий оставлю тут,может поможет кто.)
КОд:
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
#include <iostream>
using namespace std;
 
class kniga
{
private:
    
    char author[30];
    char name[30];
    int year;
    double price;       
public:
    kniga()
    {
        strcpy_s(author,"Ymolchanie");
        strcpy_s(name,"Ymolchanie2");
        year=0;
        price=0;
        cout<<"Srabotal Konstruktor"<<endl;
    }
 
    kniga(char _author[],char _name[],int _year,double _price)
    {
        strcpy_s(author,_author);
        strcpy_s(name,_name);
        year=_year;
        price=_price;
        cout<<"Srabotal Konstruktor s parametrami"<<endl;
    }
 
    void showkniga()
    {
        cout << "Avtor:" << author<<endl;
        cout << "Name:" << name<<endl;
        cout << "God_izdania:" <<year<<endl;
        cout << "Price=$" << price<<endl;
    }
    ~kniga()
    {
        cout<<"Srabotal Destryktor!";
    }
};
 
int main()
{
    kniga n1("Petrov Alexandr","Plan B", 1995, 23.5);
    n1.showkniga();
 
    kniga n2;
    n2.showkniga();
 
    system("pause");
    return 0;
}
Добавлено через 23 часа 39 минут
Вот что получилось ( Это - разработать подставляемую функцию-член класса.)
Не разобрался как сделать :
1.Взаимодействие объекта класса с файлами через дружественные функции
3.Для определения кол-ва сущ. объектов класса исп. статические члены класса.
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
#include <iostream>
#include <string>
using namespace std;
 
class kniga {
    string name;
    string avtor;
    int god_izdania;
    double cena;
public:
    
    void init (string a,string b,int i, double j);
    void show();
};
 
inline void kniga :: init (string a,string b,int i, double j) {name=a;avtor=b; god_izdania = i; cena = j; }
inline void kniga :: show()  { cout <<"Nazvanie:"<<name<<"\nAvtor: "<<avtor<<"\nGod izdania: "<< god_izdania << "\nCena: " << cena << "\n"; }
int main()
{   
    
    kniga x;
    x.init("Plan B","Alexandr Petrov",1996,20.5);
    x.show();
    
    system("pause");
    return 0;
}
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
16.09.2016, 14:14
Вот пример, думаю разберетесь
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
#include <iostream>
using namespace std;
 
class Book{
public:
    static int count;//количество экземпляров
    
    Book(){ 
        Book::count++; //создали новый
    }
    
    ~Book(){ 
        Book::count--; // уничтожили
    }
    
    friend void readFile(Book &b, char* filename){
        //Читаем данные из файла
        //дружественные методы имеют доступ ко всем полям класса
        //дружба не наследуется
    }
};
 
int Book::count = 0;// статические переменные нужно определять
 
void foo(){
    Book b[100];//создали 100
    std::cout << Book::count << std::endl;
    //при выходе из функции сработает деструктор и удалит
    //всё созданное в функции
}
 
int main() {
    Book b[5];
    //у нас 5 экземпляров
    std::cout << Book::count << std::endl;
    foo();
    std::cout << Book::count << std::endl;
    return 0;
}
1
1 / 1 / 2
Регистрация: 07.06.2016
Сообщений: 82
17.09.2016, 08:09  [ТС]
Спасибо,постараюсь.Если будут вопросы,то отпишу

Добавлено через 15 часов 49 минут
Вот что получилось,в конце при счете экземпляров показывает:
4
104
4
Так и должно быть? И в {} Friend функции что-то нужно написать? ( Если что нужно 4 экземпляра,вместо 5)
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
#include <iostream>
#include <string>
using namespace std;
 
class kniga {
    string name;
    string avtor;
    int god_izdania;
    double cena;
public:
    static int count; 
    kniga() { count++;}
    ~kniga() {count--;}
    friend void readfile(kniga &k, char* filename) {};
    void init (string a,string b,int i, double j);
    void show();
};
 
 
inline void kniga :: init (string a,string b,int i, double j) {name=a;avtor=b; god_izdania = i; cena = j; }
inline void kniga :: show()  { cout <<"Nazvanie:"<<name<<"\nAvtor: "<<avtor<<"\nGod izdania: "<< god_izdania << "\nCena: " << cena << "\n"; }
int kniga::count=0;
void f()
{ 
    kniga k[100];
    cout<<kniga::count<<endl;
}
 
int main()
{   
    kniga k[4]; 
    cout<< kniga::count<<endl;
    f();
    cout<<kniga::count<<endl;
 
    
    kniga x;
    x.init("Plan B","Alexandr Petrov",1996,20.5);
    x.show();
    
    system("pause");
    return 0;
}
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
18.09.2016, 03:53
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

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
#include <iostream>
#include <fstream>
#include <string>
 
class Book{
public:
     static int count; 
     Book();
     Book(const std::string& , const std::string& , const int&, const float&);
     ~Book();
       
     friend std::ostream& operator << (std::ostream&, const Book&);//вместо метода show(), это вывод в поток
     friend bool readFile(const std::string&, Book&);
    
    inline std::string getAuthor()const;
    inline std::string getName()const;
    inline int getYear()const;
    inline float getPrice()const;   
    
    void setAuthor(const std::string&);
    void setName(const std::string&);
    void setYear(const int&);
    void setPrice(const float&);
 
private:
    std::string author;
    std::string name;
    int year;
    float price;
};
 
Book::Book():author(""), name(""), year(0), price(0.0){
    Book::count++;
}
 
Book::Book(
        const std::string& _author,
        const std::string& _name, 
        const int& _year, 
        const float& _price
    )
    : author(_author), name(_name), year(_year), price(_price){
            Book::count++;
           }
 
Book::~Book(){ 
    Book::count--;
}
 
std::ostream& operator << (std::ostream& out, const Book& b){
    out << b.author << " - " << b.name << " (" << b.year << ") $" << b.price;
    return out;
}
 
 bool readFile(const std::string& filename, Book &b){// не проверял тк на компе нет компилятора
     std::ifstream in(filename);
     if(!in.is_open()) return false;
        
    std::string s;
    getline(in, s);
    if(s == "") return false;
    int i = s.find(" - ");
    b.author = s.substr(0, i);
    
    i += 3;
    int j = s.find("(");
    b.name = s.substr(i, j - i - 1);
    
    b.year = stoi(s.substr(j + 1, 4));
    b.price = stof(s.substr(s.find("$") + 1));
    return true;
 }
 
 
std::string Book::getAuthor() const{ return author; }
std::string Book::getName() const{ return name; }
int Book::getYear() const { return year; }
float Book::getPrice() const{ return price; }   
 
void Book::setAuthor(const std::string &a) { author = a; }
void Book::setName(const std::string &n) { name = n; }
void Book::setYear(const int& y) { year = y; }
void Book::setPrice(const float& p) { price = p; }
 
int Book::count = 0;
 
 
int main()
{   
 
    std::cout << "Book count = " << Book::count << std::endl;
    Book *b1 = new Book[10];
    std::cout << "Book count = " << Book::count << std::endl;
    Book *b2 = new Book[10];
    std::cout << "Book count = " << Book::count << std::endl;
    delete []b1;
    std::cout << "Book count = " << Book::count << std::endl;
    delete []b2;
    std::cout << "Book count = " << Book::count << std::endl;
 
    Book b("A. S. Pushkin", "Eugene Onegin", 1825, 125.5);
    std::cout << "Book count = " << Book::count << std::endl 
                << b << std::endl;
 
    b.setPrice(1);
    std::cout << b << std::endl;
    
    std::cout << b.getAuthor() << " - " << b.getName() << " (" << b.getYear() << ") $"<< b.getPrice() << std::endl;
 
    return 0;
}
0
1 / 1 / 2
Регистрация: 07.06.2016
Сообщений: 82
18.09.2016, 08:24  [ТС]
Блин для меня слишком сложно и не понятно написан код)
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
18.09.2016, 08:52
Порядок ваших действий:
1. Пытаетесь разобраться.
2. Есть вопросы, выделяете кусок кода и спрашиваете, что именно не понятно.
3. Получили ответ, разумется поняли, но не всё, подумали, попробовали написать свое.
переходим к пункту 1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2016, 08:52
Помогаю со студенческими работами здесь

Класс Книга
Привет.Помогите пожалуйста спроектировать класс &quot;Книга&quot; и реализовать основные методы по работе с книгой.Заранее спасибо.

Класс книга
Здравствуйте, объясните пожалуйста почему возникают некоторые ошибки при компиляции header.h /*Создать класс КНИГА с атрибутами:...

Класс Телефонная Книга
Доброго времени суток форумчане! Получил следующее задание, но столкнулся с проблемой.. 1) опишите класс &quot;контакт&quot;,...

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

Помогите написать класс Книга
Помогите решить задачку ( написать класс ) Класс Книги: название автор цена количество найти: среднюю цену,...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru