Skyer1
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ребят помогите с программой никак не могу здать лабораторку программа рабочая просто препод прохочет, чтобы было по ее. (Если нужно могу в электронном виде лекцию скинуть по калассам) // Создать класс типа — книга. // Поля — название, автор, год выпуска, вид литературы (худож., методич., справочн., ...). // Класс имеет конструктор, деструктор. // Методы: установки и возвращения значения полей, вычисления «возраста» книги, // Метод печати. // Методы установки полей класса должны проверять корректность задаваемых параметров. // Проверить работу этого класса #include "stdafx.h" #include <iostream> using std::cout; using std::cin; using std::endl; #include <cstring> #include <cassert> #include <stdio.h> #include "conio.h" 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::UserFromKeyboard() //{ //} // Функция установки Автора Книги //Значит вот с этого места препод хочет все это добро перенести в констурктор см. выше, но тогда придется менять всё или нет? Помогите кто знает(Говорит, что это лишний код, а проверка вообще не нужна) 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 < 2008) // Проверка диапазона, должен быть меньше 255 year = yr; else // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт... cout<<" Error! Year > 2008 !"; } // Расчёт возраста Книги void Book::CalculateYearBook() { int MyYear = 2008, // Текущий год 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() { } //--------------------------------------------------------------------------- void 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; } //------------------------------------------------------------------- |