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

Повторное использование кода в C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ немогу всавить ассемблер в код http://www.cyberforum.ru/cpp-beginners/thread831470.html
пишу такой код: #include <iostream> int main(){ int a = 1; int b = 2; asm("mov eax, ebx"); return 0; }
C++ Функция гиперболического тангенса tanh(x) Всем добрый день! Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так? А сколько операций и каких проделает процессор, если я хочу взять гиперболический... http://www.cyberforum.ru/cpp-beginners/thread831467.html
в калькуляторе 2+2*2=8 C++
не получается сделать так, чтобы калькулятор считал 2+2*2=8, как это реализовать? Есть мнение что нужно что-то дописать в "+", но что... код: // primer1Dlg.cpp : файл реализации // ...
Работа с массивами (удаление строк, столбцов) C++
12.235 Дан двумерный массив. а) удалить из него первую из строк, сумма элементов которых не превышает некоторое заданное число. б) удалить из него первый из столбцов, количество нулей в котором...
C++ Функция getchar! http://www.cyberforum.ru/cpp-beginners/thread831448.html
Здравствуйте, поясните на пальцах, что делает данная программа? #include <stdio.h> int main(void) { char ch; printf("Enter a character followed by <Enter>: "); ch = getchar(); ...
C++ Перечислить все последовательности из n нулей, единиц и двоек, в которых никакая группа цифр не повторяется два раза подряд (нет куска вида XX ) Перечислить все последовательности из n нулей, единиц и двоек, в которых никакая группа цифр не повторяется два раза подряд (нет куска вида XX ). Помогите написать программу, пожалуйста) Я в этом... подробнее

Показать сообщение отдельно
DESergik
1 / 1 / 0
Регистрация: 26.12.2012
Сообщений: 17
31.12.2014, 13:45
Вот мой вариант, полностью написан по условию задачи. То же по этой книге учусь
Основной код программы:
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
#include <locale>    // Строчка для Русского языка
#include "H_task_1.h"
 
int main()
{
    setlocale(LC_ALL,"Russian"); // Строчка для Русского языка
    
    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); // сохранение названия, лет, создание массивов из yrs элементов
    holding.GetBottles();   // предложение ввести год и количество бутылок
    holding.Show();         // вывод содержимого объекта
    const int YRS=3;
    int у[YRS]={1993, 1995, 1998};
    int b[YRS]={48, 60, 72}; 
    // Создание нового объекта, инициализация с использованием данных из массивов у и b
    Wine more("Gushing Grape Red", YRS, у, b);
    more.Show();
    cout<<"Total bottles for "<<more.Label() // используется метод Label()
        <<": "<<more.sum()<<endl; // используется метод sum()
    cout<<"Bye\n";
    
    system("pause");
    return 0;
}
Заголовочный файл:
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
// H_task_1.h -- класс Wine
#ifndef H_TASK_1_H_
#define H_TASK_1_H_
 
#include <iostream>
#include <string>
#include <valarray>
#include <iomanip>
using std::cout;
using std::endl;
using std::cin;
 
 
// Шаблон с несколькими параметрами типа:
template <class T1, class T2>
class Pair
{
private:
    T1 a; // Значение вида 1
    T2 b; // Значение вида 2
public:
    Pair() {} // Конструктор по умолчанию
    Pair(const T1 &aval, const T2 &bval) : a(aval), b(bval) { } // Конструктор
    // Методы присвоения хранимым величинам новых значений:
    T1 & first();  // Ввод значения 1-го вида
    T2 & second(); // Ввод значения 2-го вида
    // Методы печати хранимых значений:
    T1 first() const { return a; }  // Печать значения 1-го вида
    T2 second() const { return b; } // Печать значения 2-го вида
};
 
// Методы присвоивания хранимым величинам новых значений:
// Ввод значения 1-го вида
template<class T1, class T2>
T1 & Pair<T1,T2>::first()
{
    return a;
}
 
// Ввод значения 2-го вида
template<class T1, class T2>
T2 & Pair<T1,T2>::second()
{
    return b;
}
 
 
// Основной класс (использует включение):
class Wine
{
private:
    std::string label; // Используется объект string для имени
    // Объект Pair состоит из объектов valarray<int>. Для упрощения введем объявления typedef:
    typedef std::valarray<int> ArrayInt;
    // Первый член объекта Pair содержит год сбора винограда, а второй член — количества бутылок с вином урожая этих лет:
    typedef Pair<ArrayInt, ArrayInt> PairArray;
    PairArray wine_inf;
    int years; // Количество лет (размерность двух массивов)
public:
    Wine() : label("Empy name"), wine_inf() {} // #0: Коструктор по умолчанию - во 2-ом операнде вызывает конструктор класа Pair по умолчанию, который создает два массива int нулевого размера
    // Коструктор #1: Инициализация label значением l, количество лет (размерность двух массивов) - у, годы урожая - yr[], количество бутылок - bot[]:
    Wine(const char *l, int y, const int yr[], const int bot[]) : label(l), years(y), wine_inf(ArrayInt(yr, y), ArrayInt(bot, y)) {}
    // Коструктор #2: Инициализация label значением l, количество лет - у, т.е. создаются 2 массива int размером y:
    Wine (const char *l, int y) : label(l), years(y), wine_inf(ArrayInt(y), ArrayInt(y)) {}
    void GetBottles(); // Запрашивает у пользователя количество лет и предлагает пользователю ввести соответствующие значения для года урожая и количества бутылок
    const std::string & Label() const { return label; }; // Возвращает название вина
    const void Show() const; // Вывод содержимого объекта
    int sum(); // Возвращает общее количество бутылок во втором объекте valarray<int> из объекта Pair
};
 
// Предлагает пользователю ввести соответствующие значения для года урожая и количества бутылок
void Wine::GetBottles()
{
    cout<<"Enter "<<Label()<<" data for "<<years<<" year(s):\n";
    for (int i=0; i<years; i++)
    {
        cout<<"Enter year: ";
        cin>>wine_inf.first()[i];
        cout<<"Enter bottles for that year: ";
        cin>>wine_inf.second()[i];
    }
    cout<<endl;
}
 
// Вывод содержимого объекта
const void Wine::Show() const
{
    cout<<"Wine: "<<Label()<<endl;
    cout<<std::setw(10)<<"Year"<<"    "<<"Bottles"<<endl;
    for (int i=0; i<years; i++) // или можно wine_inf.first().size()
        cout<<std::setw(10)<<wine_inf.first()[i]<<"    "<<wine_inf.second()[i]<<endl;
    cout<<endl;
}
 
// Возвращает общее количество бутылок во втором объекте valarray<int> из объекта Pair
int Wine::sum()
{
    return wine_inf.second().sum();
}
#endif
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru