• ДАЮ 1ОО БАЛЛОВ! СРОЧНО!!! Нужна программа на С++
    Хотя бы часть!

    Опишите класс С - книга. Члены класса - автор - динамическая строка символов, название книги - строка символов, год издания целое число. Определите в классе конструктор по умолчанию, конструктор инициализации, деструктор класса и функции - члены класса чтения имени автора книги, чтения названия книги, чтения цены книги, года издания. Объявите в классе дружественную функцию для изменения года издания и цены книги. В программе покажите работоспособность класса С.

Ответы 6

  • 7. Компилятор многое делает за ленивых программистов, да не все. По скольку программирование на C++ это не тоже самое что на Js/Python итд что позволяет писать что угодно и как угодно и все равно будет работать... На C++ требуется особое внимание к таким мелочам как качество кода, в данном случаи работает правило One enter point - One exit point. В твоем случаи последнее отсутствует, рекомендовано вставлять по двум причинам - очевидность кода и снижение потенциально опасных мест.
  • Теперь то что ниже ты написал:- Обучение (не важно школьника или не школьника) должно быть корректным и правильным. Коль ты не хочешь, не знаешь или не умеешь писать как минимум хорошо, то лучше не берись. Ты вливаешь информацию на самых ранних этапах обучения, что всенепременно ведет к тому, что придется переучиваться позже, что есть больнее и сложнее.
  • - this является лишней конструкцией в конструкторе объекта (простите за товтологию), решается это адекватным неймингом переменных и полей класса. В тот же момент как return в main как я уже ссылался к правилу One enter point - one exit point является вопиющим его нарушением.
    • Автор:

      blake83
    • 5 лет назад
    • 0
  • - Навыки адеватного написания кода пригодятся в работе, следует выробатывать их начиная с обучения, ибо такими темпами работы может и не быть по этому направлению. А как сказал выше, следует писать как минимум хорошо, если речь заходит об ответах тут.
  • Постскриптум1. Я не говорю что твой ответ плохой, но косяки есть, и их следует исправлять, не в этом ответе так в следующих.2. Я коментирую ответы на C и C++ и буду коментировать, это моя стехия и я слежу что бы ответы были либо хорошими, либо коментирую что не так - для этого коментарии тут и нужны.3. Все что я писал - не из 90х, ты можешь это найти в книгах подолбных Effective Modern C++ или C++ the complete reference от создателей языка либо людей с огромным опытом и признаным авторитетом.
  • В задании указано сделать дружественную функцию для того чтобы устанавливать новую цену на книгу, но не указано делать поле 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();

    }

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years