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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
#1

Включение, как правильно сделать инициализацию - C++

30.01.2012, 11:50. Просмотров 516. Ответов 6
Метки нет (Все метки)

Вот код:
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
#ifndef WINE_H_
#define WINE_H_
#include <iostream>
#include <string>
#include <valarray>
template<typename T1, typename T2>
class Pair
{
    T1 a;
    T2 b;
public:
    T1 & first();  //{return a;}
    T2 & second(); //{return b;}
    T1 first() const {return a;}
    T2 second() const {return b;}
    Pair(const T1 & aval, const T2 & bval) : a(aval), b(bval) {}
    Pair();
};
template<typename T1, typename T2>
T1 & Pair<T1, T2>::first()
{
    return a;
}
template<typename T1, typename T2>
T2 & Pair<T1, T2>::second()
{
    return b;
}
class Wine
{
    typedef std::valarray<int> ArrayInt;
    typedef Pair<ArrayInt, ArrayInt> PairArray;
    std::string label;
    unsigned int yrs; //возраст вина (годы)
    PairArray data;
public:
    Wine(const char * l, int y, const int yr[], const int bot[]) : label(l), yrs(y), data(?) {}
    Wine(const char * l, int y) : label(l), yrs(y) {}
};
#endif
Здесь data ето обект шаблона Pair<ArrayInt, ArrayInt> что в свою очередь соответствует Pair<std::valarray<int>, std::valarray<int> >. Как в етом случае инициализировать обект data в конструкторе Wine?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2012, 11:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Включение, как правильно сделать инициализацию (C++):

Как правильно реализовать инициализацию массива функцией? - C++
Здравствуйте! Мне нужно что бы вся инициализация массива происходила в отдельной функции и что бы этот массив можно было в дальнейшем...

Подскажите как правильно сделать - C++
Нужно добавить К столбцов в начало матрицы, добавлять оно добавляться но оно берет память левую, выходит за приделы массива, не могу...

Как правильно сделать сортировку? - C++
Никак не получается отсортировать так, чтобы сначала сортировались люди военнообязанные и по году рождения, а затем невоеннообязанные. ...

Подскажите как правильно сделать - C++
Нужно добавить К столбцов в начало матрицы, я сделала но добавление в конец, не подскажете как добавить в начало ...

Как правильно сделать список - C++
#include &lt;iostream&gt; #include &lt;windows.h&gt; struct BList{ PWCHAR fullName; PWCHAR name; PWCHAR hash; BList *next; ...

Подскажите как правильно сделать - C++
Помогите пожалуйста нужно отсортировать четные элементы массива а не четные оставить на своих местах. Например ввожу 14 52 6 8 4 ---— 1...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
30.01.2012, 12:02 #2
Полагаю, по аналогии с этим
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <utility>
#include <valarray>
 
int main()
{
    int arr1st[] = { 1, 2, 3, 4, 5 };
    int arr2nd[] = { 5, 4, 3, 2, 1 };
    std::pair<std::valarray<int>, std::valarray<int>> p(std::valarray<int>(arr1st, 5), std::valarray<int>(arr2nd, 5));
    for(std::size_t i = 0; i < p.first.size(); ++i)
        std::cout << p.first[i] << ' ' << p.second[i] << std::endl;
    return 0;
}
http://liveworkspace.org/code/f7dbbe...cacc3a0081e188
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.01.2012, 12:14  [ТС] #3
C++
1
Wine(const char * l, int y, const int yr[], const int bot[]): : label(l), yrs(y), data(std::valarray<int>(yr), std::valarray<int>(bot)) {}
Так что ли?
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
30.01.2012, 12:16 #4
Цитата Сообщение от yuron_477 Посмотреть сообщение
Так что ли?
Там еще размер должен передаваться
waro
Сообщений: n/a
03.12.2012, 19:17 #5
yuron_477, доброго времени суток, удалось решить эту задачу ? Как всё таки правильно инициализировать объект data ?
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
03.12.2012, 22:20  [ТС] #6
waro, специально для вас доделал:
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
#include <iostream>
#include <string>
#include <valarray>
using namespace std;
 
template<typename T1, typename T2>
class Pair
{
    T1 a;
    T2 b;
public:
    T1& first() {return a;}
    T2& second() {return b;}
    T1 first() const {return a;}
    T2 second() const {return b;}
    Pair(const T1& aval, const T2& bval) : a(aval), b(bval) {}
    Pair();
};
 
class Wine
{
    typedef std::valarray<int> ArrayInt;
    typedef Pair<ArrayInt, ArrayInt> PairArray;
    std::string label;
    unsigned int yrs; //количество годов (период времени)
    PairArray data;
public:
    Wine(const char * l, int y, const int yr[], const int bot[]) : 
        label(l), yrs(y), data(valarray<int>(yr, yrs), valarray<int>(bot, yrs)) {}
    Wine(const char * l, int y) : label(l), yrs(y), data(valarray<int>(yrs), valarray<int>(yrs)) {}
    void GetBottles();
    void Show() const;
    string Label() const {return label;}
    size_t sum() const {return data.second().sum();}
};
 
void Wine::GetBottles()
{
    cout<<"Enter "<<label<<" data for "<<yrs<<" year(s):\n";
    for (size_t i = 0; i<yrs; ++i)
    {
        cout<<"Enter years: ";
        while(!(cin>>data.first()[i]))
        {
            cin.clear();
            cin.sync();
            cout<<"Error!! Enter again: ";
        }
        cout<<"Enter bottles for that years: ";
        while(!(cin>>data.second()[i]))
        {
            cin.clear();
            cin.sync();
            cout<<"Error!! Enter again: ";
        }
    }
}
 
void Wine::Show() const
{
    cout<<"Wine: "<<label<<"\n";
    cout<<"\tYears\tBottles\n";
    for (size_t i = 0; i<yrs; ++i)
        cout<<"\t"<<data.first()[i]<<"\t"<<data.second()[i]<<"\n";
}
 
int main()
{
    cout << "Enter name of wine: "; // ввод названия вина 
    char lab[50]; 
    cin.getline(lab, 50); 
    cout << "Enter number of years: "; // ввод количества годов сбора винограда 
    int yrs; 
    cin >> yrs; 
    cin.get(); 
    Wine holding(lab, yrs); // сохранение названия, лет, 
    // создание массивов из yrs элементов 
    holding.GetBottles (); // предложение ввести год и количество бутылок 
    holding.Show (); // вывод содержимого объекта 
    const int YRS = 3; 
    int y[YRS] = {1993, 1995, 1998}; 
    int b[YRS] = { 48, 60, 72}; 
        // Создание нового объекта, инициализация 
        // с использованием данных из массивов у и b 
    Wine more("Gushing Grape Red",YRS, y, b) ; 
    more.Show(); 
    cout << "Total bottles for " << more.Label() // используется метод Label() 
        << ": " << more.sum () << endl; // используется метод sum() 
    cout<<"Bye!\n";
    system("pause");
    return 0;
}
waro
Сообщений: n/a
03.12.2012, 22:29 #7
спасибо, всё оказалось очень просто, если я когда-нибудь смогу вам помочь, то обязательно это сделаю, правда до вашего уровня мне скорей всего пока что далеко.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2012, 22:29
Привет! Вот еще темы с ответами:

Как лучше это сделать?. а главное, как правильно? (Информационная система «Железнодорожный вокзал») - C++
Ситуация следующая... Есть задание курсовой работы: 11. Информационная система «Железнодорожный вокзал». Информация: рейсы — номер...

Неккоректность типов.Как правильно сделать? - C++
Приветствую вас уважаемые! Отличный форум,много полезного.) Сразу к делу. Нужен цикл,который выводит послдовательность символов в COM...

Как правильно сделать самообновление программы? - C++
Добрый день Есть программа которая должна обновляться Для ясности: Файл программы старой версии - PROGRAM_NAME Файл программы...

Как правильно сделать функцию? (Из Паскаля в С++) - C++
Добрый день, уважаемые программисты! Подскажите пожалуйста вот такое дело: есть код на Турбопаскале, и надо всё это дело в С++. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.12.2012, 22:29
Ответ Создать тему
Опции темы

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