ДАЮ 1ОО БАЛЛОВ! Безотлагательно!!! Нужна программка на С++ Желая бы часть!Опишите

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

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

Задать свой вопрос
1 ответ

В задании обозначено сделать дружескую функцию для того чтоб устанавливать новейшую стоимость на книгу, но не указано делать поле price, поэтому я его добавил (с типом double).

Мой вариант:

include lt;iostreamgt;

include lt;string.hgt;

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-gt;autor = new char[50];

       this-gt;year=year;

       strcpy(this-gt;name,name);

       strcpy(this-gt;autor,autor);

       this-gt;price=price;

   

   Book()

   

       delete[]autor;

   

   char* getName() return name;

   char* getAutor() return autor;

   double getPrice() return price;

   int getYear() return year;

   friend  void setPrice(Bookamp; obj, double price);

   friend  void setYear(Bookamp; obj, int year);

;

void setPrice(Bookamp; obj, double price)

   obj.price = price;

void setYear(Bookamp; obj, int year)

   obj.year = year;

int main()

   Book b("Harry Potter","Joanne Rowling",1995,100);

   cout lt;lt; "Book name - " lt;lt; b.getName() lt;lt; endl;

   cout lt;lt; "Autor name - " lt;lt; b.getAutor() lt;lt; endl;

   cout lt;lt; "Release year - " lt;lt; b.getYear() lt;lt; endl;

   cout lt;lt; "Book price - " lt;lt; b.getPrice() lt;lt; endl;

   setPrice(b,150);

   setYear(b,1997);

   cout lt;lt; "New book price - " lt;lt; b.getPrice() lt;lt; endl;

   cout lt;lt; "New release year - " lt;lt; b.getYear() lt;lt; endl;

   cin.get();

   cin.get();

Andrjuha Sljuzar
Пример:class MyClass public: void foo();;void MyClass::foo() // do something
Bogoradze Dmitrij
На счет конструктора и заглавий таких же как и у полей класса. Для этого умышленно разработаны различные Code Style - советую ознакомиться желая бы с геософтовским. Если сказать о том как избежать схожих названий переменных, то можешь найти в подавляющем большинстве кодингстайлов, что переменные аттрибуты объекта следует именовать с приставки с какой-нибудь буковкой, к образцу m (member), что повышает как читабельность так и простоту содержания кода в чистоте, так же об жтом говорит Маерс.
Егор Раппа
4. На счет константных способов. Советую почитать Маерса на которого неисчерпаемо здесь ссылаюсь - метериал очень доступный, а так как он, так и сам Страуструп разговаривает о том, что все способы не модифицирующие внутреннее состояние класса следует делать постоянными, по тому, что дефинишн класса это по факту твой API к сути, в твоем случаи он не подходит её внутреннему поведению (способ не постоянный = предпологается что он видоизменит внутренее состояние сути, желая у тебя это не так).
Юрка Лебяченко
5. Рекомендовано писать френд-функции сначала дефинишена класса (вообщем рекомендовано от слова "совершенно" их не использовать, но в нашем случаи задание такое), обусловленно это тем, что все external dependency обязаны быть прозрачно видны сходу, а не там, куда может программер и не прочитать.
Ксения
6. Консоль выключается только если ты программируешь через визуал студию и не умеешь её настраивать (запусти просто не через дебаг мод, скорее всего поможет). Ты делаешь по факту костыль который будет мешать обычной работе программы. Это следует удалить и выучиться воспользоваться средой в которой ты работаешь.
Юрий
7. Компилятор почти все делает за ленивых программистов, да не все. По скольку программирование на C++ это не тоже самое что на Js/Python итд что дозволяет писать что угодно и как угодно и все одинаково будет работать... На C++ требуется особенное внимание к таким мелочам как качество кода, в данном случаи работает верховодило One enter point - One exit point. В твоем случаи заключительное отсутствует, рекомендовано вставлять по двум причинам - очевидность кода и снижение потенциально небезопасных мест.
Гроз Антонина
Сейчас то что ниже ты написал:- Обучение (не главно школьника либо не школьника) должно быть корректным и правильным. Коль ты не желаешь, не знаешь либо не умеешь писать как минимум превосходно, то лучше не берись. Ты вливаешь информацию на самых ранних шагах обучения, что всенепременно ведет к тому, что придется переучиваться позднее, что есть больнее и труднее.
Илюша
- this является излишней конструкцией в конструкторе объекта (простите за товтологию), решается это адекватным неймингом переменных и полей класса. В тот же момент как return в main как я теснее ссылался к правилу One enter point - one exit point является возмутительным его нарушением.
Маргарита Белгородская
- Способности адеватного написания кода понадобятся в работе, следует выробатывать их начиная с обучения, ибо такими темпами работы может и не быть по этому направлению. А как сказал выше, следует писать как минимум хорошо, если речь входит об ответах здесь.
Анжелика Рындина
Постскриптум1. Я не разговариваю что твой ответ нехороший, но косяки есть, и их следует поправлять, не в этом ответе так в последующих.2. Я коментирую ответы на C и C++ и буду коментировать, это моя стехия и я смотрю что бы ответы были или хорошими, или коментирую что не так - для этого коментарии здесь и необходимы.3. Все что я писал - не из 90х, ты можешь это отыскать в книгах подолбных Effective Modern C++ или C++ the complete reference от создателей языка или людей с громадным опытом и признаным авторитетом.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт