Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

ООП пример - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ деки C++ http://www.cyberforum.ru/cpp-beginners/thread901011.html
объясните пожалуйста работу программы, желательно каждую строку... Работа по декам.. #include "stack.h" #include "iostream" bool Dek::isEmpty() { return (Top==NULL); }
C++ Двумерные массивы. Определить максимальный по модулю элемент в каждом столбце матрицы. 2. Добавить К столбцов в начало матрицы Всем доброго времени суток. Нужно: 1. Определить максимальный по модулю элемент в каждом столбце матрицы. 2. Добавить К столбцов в начало матрицы. Как это можно реализовать? С одномерными... http://www.cyberforum.ru/cpp-beginners/thread901005.html
C++ Обнулить все элементы массива, совпадающие с искомым элементом, вводимым с клавиатуры
Подсобите решением?:sorry: Имеется массив чисел, вводимый с клавиатуры. Обнулить все элементы массива, совпадающие с искомым элементом, вводимым с клавиатуры.Если таковой отсутствует, выдать...
Создайте класс для работы со строками CString C++
Создайте класс для работы со строками CString, поддерживающий следующие операции-методы: сравнение, копирование, объединение двух строк. Реализовать поиск в строке методами грубой силы и с...
C++ «Програмно-алгоритмічна реалізація розкладу функції в ряд Тейлора» http://www.cyberforum.ru/cpp-beginners/thread900985.html
Завдання полягає в проведенні програмної реалізації розрахунку приблизного значення функції y, розклавши функцію f(x) в ряд Тейлора, при цьому необхідно вивести та застосувати рекурентне відношення...
C++ Дан исходный текстовый файл. Записать его строки в выходной файл в перевёрнутом виде грозят отчислением, нужно решить подробнее

Показать сообщение отдельно
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
13.06.2013, 21:38
Вот пример:
Film.h
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
#ifndef _FILM_H
#define _FILM_H_
#include <string>
#include <vector>
 
typedef std::vector<std::string> vec_str;
typedef std::vector<std::string>::iterator vec_str_it;
typedef std::vector<std::string>::const_iterator vec_str_cit;
 
 
class Film
{
    public:
        // конструкторы
        Film();
        Film(const std::string &, const std::string &, const int, const int,
             const vec_str &);
 
        // set-методы
        void setName(const std::string &);
        void setGenre(const std::string &);
        void setMark(const int);
        void setYear(const int);
        void setCharacters(const vec_str &);
 
        // get-методы
        std::string getName() const;
        std::string getGenre() const;
        int getMark() const;
        int getYear() const;
        const vec_str& getCharacters() const;
 
        void print() const; // вывод информации на экран в удобном формате
 
    private:
        std::string name_;   // название
        std::string genre_;  // жанр
        int mark_;           // оценка
        int year_;           // год выпуска
        vec_str characters_; // основные герои
};
 
std::ostream & operator<< (std::ostream &, const Film &);
std::istream & operator>> (std::istream &, Film &);
 
#endif
Film.cpp
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
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <string>
#include <iostream>
#include "Film.h"
 
using namespace std;
 
Film::Film() : name_(), genre_(), mark_(), year_(), characters_()
{}
 
Film::Film(const string& name, const string& genre, const int mark,
    const int year, const vec_str& characters) : name_(name),
    genre_(genre), mark_(mark), year_(year), characters_(characters)
{}
 
void Film::setName(const string& name)
{
    name_ = name;
}
 
void Film::setGenre(const string& genre)
{
    genre_ = genre;
}
 
void Film::setMark(const int mark)
{
    mark_ = mark;
}
 
void Film::setYear(const int year)
{
    year_ = year;
}
 
void Film::setCharacters(const vec_str& characters)
{
    characters_ = characters;
}
 
string Film::getName() const
{
    return name_;
}
 
string Film::getGenre() const
{
    return genre_;
}
 
int Film::getMark() const
{
    return mark_;
}
 
int Film::getYear() const
{
    return year_;
}
 
const vec_str& Film::getCharacters() const
{
    return characters_;
}
 
void Film::print() const
{
    cout << "Название фильма:  "   << name_
         << "\nЖанр:             " << genre_
         << "\nОценка:           ";
    for (int i=0; i < mark_; i++)
        cout << '*';
    cout << " (" << mark_ << ")"
         << "\nГод выпуска:      " << year_
         << "\nВ главных ролях:  ";
    for (vec_str_cit cit = characters_.begin(); cit != characters_.end(); ++cit)
    {
        cout << *cit;
        if (cit + 1 != characters_.end())
            cout << ',';
        cout << ' ';
    }
    cout << endl << endl;
}
 
// перегружаем оператор вывода, функция принимает в качестве параметров ссылку
// на ostream и константную ссылку на объект класса Film
ostream & operator<< (ostream& out, const Film& f)
{
    out << f.getName() << '\n'
        << f.getGenre() << '\n'
        << f.getMark() << '\n'
        << f.getYear() << '\n';
    for (vec_str_cit cit = f.getCharacters().begin();
         cit != f.getCharacters().end(); ++cit)
        out << *cit << '\n';
    out << '\n';
    return out; // возвращаем сформированный поток
}
 
// перегружаем оператор ввода, функция принимает в качестве параметров ссылку
// на istream и ссылку на объект класса Film
istream & operator>> (istream& ist, Film& f)
{
    // временные переменные
    string name, genre, tmp;
    int mark, year;
    vec_str characters;
    // считываем в них
    getline(ist, name);
    getline(ist, genre);
    ist >> mark >> year;
    ist.ignore(); // пропускаем символ '\n' оставшийся в потоке
    // пока считали строку и она не пустая
    while(getline(ist, tmp) && !tmp.empty())
        characters.push_back(tmp); // добавляем в список героев
 
    // устанавливаем свойства
    f.setName(name);
    f.setGenre(genre);
    f.setMark(mark);
    f.setYear(year);
    f.setCharacters(characters);
    return ist; // возвращаем поток
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru