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

Как используя закрытое наследование использовать 2 объекта базового класса? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ разделения файла на части http://www.cyberforum.ru/cpp-beginners/thread938609.html
Нужно написать программу для разделения файла на части. Вы указываете вашей программе файл, который нужно разделить, количество частей, на который нужно разделить файл, и ваша программа из одного...
C++ Подготовка к решению сложных задач и задач олимп.уровня Собственно, интересует какую литературу стоит почитать, для решению сложных и интересных задач или может быть есть какие- нибудь известные в узком кругу форумы на эту тему http://www.cyberforum.ru/cpp-beginners/thread938603.html
Запись элемента строки в char C++
Никак не получается записать элемент строки в переменную char. #include <iostream> #include <conio.h> #include <cstdlib> #include <math.h> #include <fstream> #include <sstream>
C++ Работа с mysql
Всем привет ) Тута нада к базе запрос делать, а выбирает только первую запись ) #include <stdio.h> #include <stdlib.h> #include <mysql/mysql.h> int main(int a, char ** argv) { MYSQL *...
C++ переопределение операторов http://www.cyberforum.ru/cpp-beginners/thread938552.html
Стоит следующая задача. Надо сделать массив чар, которые представляют собой строку (специально делать так, а не через string) и надо сделать переопределение операторов: operator + operator -...
C++ Символьный массив (просуммировать элементы массива и вывести их сумму) Задача состоит в том чтоб просумировать елементы масива и вывести их сумму. Масив заполняется числами, он может заполнятся не полностю поетому использую функцыю gets(). Пример вход: 236 выход:11... подробнее

Показать сообщение отдельно
dremer
8 / 8 / 0
Регистрация: 18.06.2012
Сообщений: 33

Как используя закрытое наследование использовать 2 объекта базового класса? - C++

15.08.2013, 22:32. Просмотров 389. Ответов 2
Метки (Все метки)

Доброго времени суток.
Учусь по книге "Прата С. Язык программирования C++. Лекции и упражнения.
Не могу понять упражнение...(глава 14, упр 2)
Выполните еще раз упражнение 1, но вместо включения используйте закрытое наследование.
С классом string всё понятно, но как сделать 2 объекта класса valarray?
Упражнение 1 ниже.
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//head.h
#ifndef HEAD_H_
#define HEAD_H_
#include <valarray>
using std::string;
class Wine {    
private:
    typedef std::valarray<int> ArrayInt;
    typedef std::pair< ArrayInt, ArrayInt > PairArray;
    string label;
    PairArray PA;
public:
    Wine(const char *l, int y, const int yr[], const int bot[]);
    Wine(const char *l, int y);
    Wine();
    ~Wine();
    void GetBottles();
    const string & Label() const;
    int sum() const;
    void show() const;
};
#endif
Кликните здесь для просмотра всего текста
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
//методы для заголовочного файла
#include "head.h"
#include <iostream>
#include <valarray>
Wine::Wine()
{
    label = "noname";
    PA.first = std::valarray<int>(1);
    PA.second = std::valarray<int>(1);
}
Wine::Wine(const char *l, int y)
{
    label = l;
    PA.first = std::valarray<int>(y);
    PA.second = std::valarray<int>(y);
}
Wine::Wine(const char *l, int y, const int yr[], const int bot[])
{
    label = l;
    PA.first = std::valarray<int>(yr, y);
    PA.second = std::valarray<int>(bot, y);
}
void Wine::GetBottles()
{
    std::cout << "Enter " << label << " data for " << PA.first.size() << " year(s):\n";
    for (std::size_t i = 0; i < PA.first.size(); i++)
    {
        std::cout << "Enter year: ";
        std::cin >> PA.first[i];
        std::cout << "Enter bottles for that year: ";
        std::cin >> PA.second[i];
    }
 
}
const std::string & Wine::Label() const {
    return label;
}
int Wine::sum() const {
    return PA.second.sum();
}
Wine::~Wine()
{}
void Wine::show() const
{
    std::cout << "Wine: " << label << std::endl;
    std::cout << '\t' << "Year    " << "Bottles\n";
    for (std::size_t i = 0; i < PA.first.size(); i++)
        std::cout << '\t' << PA.first[i] << "    " << PA.second[i] << std::endl;
}
Кликните здесь для просмотра всего текста
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
//main.cpp
#include <iostream>
#include <valarray>
#include "head.h"
int main()
{
    using std::cin;
    using std::cout;
    using std::endl;
    cout << "Enter name of wine: ";
    char lab[50];
    cin.getline(lab, 50);
    cout << "Enter number of years: ";
    int yrs;
    cin >> yrs;
    Wine holding(lab, yrs);
    holding.GetBottles();
    holding.show();
    const int YRS = 3;
    int y[YRS] = {1993, 1995, 1998};
    int b[YRS] = {48, 60, 72};
    Wine more("Gushing Grape Red", YRS, y, b);
    more.show();
    cout << "Total bottles for " << more.Label()
         << ": " << more.sum() << endl;
    cout << "Bye\n";
    return 0;
}

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru