Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
#pragma once
 
// Создать класс типа — книга.
// Поля — название, автор, год выпуска, вид литературы (худож., методич., справочн., ...).
// Класс имеет конструктор, деструктор.
// Методы: установки и возвращения значения полей, вычисления «возраста» книги,
// Метод печати.
// Методы установки полей класса должны проверять корректность задаваемых параметров.
// Проверить работу этого класса
 
#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)
{
  // Проверка и выделение памяти для поля - Автор
  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!";
//   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()
{
}

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 09:01 12-12-2008
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru