Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Рекурсивным способом получить все возможные траектории с 0-ой вершины до 6-ой вершины длиной не более 4 вершин https://www.cyberforum.ru/cpp-beginners/thread1401823.html
Как написать рекурсивную функцию по задаче: Задается например,такая верхняя треугольная матрица, на самом деле она достаточно большая float A={ { 1, 2, 1,-1,-1,-1}, {-1,...
C++ Файл с разнотипными данными
Подскажите, пожалуйста, есть файл с числовыми данными, хочу написать программу, которая посимвольно читает данные, пропускает то, что не нужно (текст), остальное записывает куда нужно. С последним...
Объясните что делает эта программа (do.while) C++
Объясните пожалуйста что делает эта программа. #include <stdio.h> #include <conio.h> #include <math.h> int main() { int i=1; float a,n; scanf("%f",&n);
C++ Стек в виде массива Помогите программку составить, выполнение арифметических действий записанных в инфиксной записи, стеков в виде массива. https://www.cyberforum.ru/cpp-beginners/thread1401747.html
C++ Аппроксимация. Квадратичная интерполяция https://www.cyberforum.ru/cpp-beginners/thread1401736.html
Нужен пример реализации квадратичной интерполяции на интервале с 11 точками. Исходные хi вычисляются по формуле xi=-2+7*(i-1)/10, i=1,11 и у по формуле y=x3-50*cos(x). Используя полученную таблицу...
Создание таблицы C++
Добрый день, задача заключается в том, чтобы считать данные и поместить их в таблицу.Задача состоит в том, чтобы создать таблицу. Прошу помочь обозначить в какую сторону копать, где можно почерпнуть...
Не срабатывает условие while (!file.eof() C++
Есть функция, которая считает из файла числа в динамический массив: int* ReadFile(string FileName) { ifstream file; file.open(FileName); int* mas=(int*)malloc(sizeof(int)*10); int Count =...
C++ Шаблонный оператор не шаблонного класса Пытаюсь создать альтернативный оператор выделения памяти для своей библиотеки. С целью получить возможность передавать дополнительную информацию о типах в свой диспетчер памяти. Сначала сделал... https://www.cyberforum.ru/cpp-beginners/thread1401683.html
C++ Задача с файлом https://www.cyberforum.ru/cpp-beginners/thread1401653.html
Дан файл определить сколько раз встречается в нем слово вывести на экран номер строк где это слово найдено(программа находит слово не зависимо от регистра) Я написал пррограмму но не знаю как...
C++ Конвертирование типов данных Нужно обработать данные. Пропустить их через кучу функций, каждая из них требует свой тип данных. Вовремя компиляции постоянно сталкиваюсь с тем что компилятор ругается "невозможно преобразовать... https://www.cyberforum.ru/cpp-beginners/thread1401649.html
SiberianHusky
0 / 0 / 1
Регистрация: 12.10.2015
Сообщений: 2
10.05.2017, 15:08 0

Решение всех задач из учебника Стивена Прата

10.05.2017, 15:08. Просмотров 78510. Ответов 211
Метки (Все метки)

Ответ

Глава 18 Задача 1

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 <iostream>
#include <initializer_list>
 
template <typename T>
T average_list(std::initializer_list<T> il)
{
    T sum = 0;
    for (auto pi = il.begin(); pi != il.end(); pi++)
        sum += *pi;
    T average = sum / il.size();
    return average;
}
 
int main()
{
    using std::cout;
    using std::endl;
 
    auto q = average_list({ 15.4, 10.7,9.0 });
    cout << q << endl;
 
    cout << average_list({ 20,30,19,17,45,38 }) << endl;
 
    auto ad = average_list<double>({ 'A', 70,65.33 });
    cout << ad << endl;
 
    system("pause");
    return 0;
}
Добавлено через 17 минут
Глава 18 Задача 2

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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include <iostream>
#include <string>
using std::cout;
using std::endl;
 
class Cpmv
{
public:
    struct Info
    {
        std::string qcode;
        std::string zcode;
    };
 
private:
    Info *pi;
 
public:
    Cpmv();
    Cpmv(std::string q, std::string z);
    Cpmv(const Cpmv& cp);
    Cpmv(Cpmv &&mv);
    ~Cpmv();
 
    Cpmv& operator=(const Cpmv& cp);
    Cpmv& operator=(Cpmv&& mv);
    Cpmv operator+(const Cpmv& obj) const;
    void Display() const;
};
 
Cpmv::Cpmv()
{
    pi = new Info;
    cout << "default ctor\n";
    cout << "data address " << (void*)pi << endl << endl;
}
 
Cpmv::Cpmv(std::string q, std::string z)    
{
    pi = new Info;
    pi->qcode = q;
    pi->zcode = z;
    cout << "q and z constructor called\n";
    cout << "data address " << (void*)pi << endl << endl;
 
}
 
Cpmv::Cpmv(const Cpmv & cp)
{
    pi = new Info;
    pi->qcode = cp.pi->qcode;
    pi->zcode = cp.pi->zcode;
    cout << "copy constructor called\n";
    cout << "data address " << (void*)pi << endl << endl;
 
}
 
Cpmv::Cpmv(Cpmv && mv)
{
    pi = new Info;
    pi = mv.pi;
    mv.pi = nullptr;
    cout << "move constructor called\n";
    cout << "data address " << (void*)pi << endl << endl;
 
}
 
 
Cpmv Cpmv::operator+(const Cpmv & obj) const
{
    cout << "entering operator +()\n";
    Cpmv temp;
    temp.pi->qcode = pi->qcode + obj.pi->qcode;
    temp.pi->zcode = pi->zcode + obj.pi->zcode;
 
    cout << "leaving operator+()\n";
    return temp;
}
 
Cpmv & Cpmv::operator=(const Cpmv & cp)
{
    cout << "entering operator=(const Cpmv & cp)\n";
    if (this== &cp)
        return *this;
    delete pi;
    pi = new Info;
    pi->qcode = cp.pi->qcode;
    pi->zcode = cp.pi->zcode;
 
    cout << "leaving operator=()\n";
    return *this;
 
}
 
Cpmv & Cpmv::operator=(Cpmv && mv)
{
    cout << "entering operator=(Cpmv && mv)\n";
 
    if (this == &mv)
        return *this;
    delete pi;
 
    pi = mv.pi;
    mv.pi = nullptr;
    cout << "data address " << (void*)pi << endl << endl;
 
    return *this;
}
 
Cpmv::~Cpmv()
{
    cout << "destructor called\n";
    cout << "data address " << (void*)pi << endl << endl;
 
    delete pi;
}
 
void Cpmv::Display() const
{
    if (pi == nullptr)
        cout << "empty object\n";
    else
    {
        cout <<" "<< pi->qcode << ", ";
        cout << pi->zcode << endl;
    }
}
 
int main()
{
    {
        Cpmv one("hi ", "how are you ");
        Cpmv two = one;
 
        Cpmv three("aaaaa", "bbbbb");
        Cpmv four(one + three);
 
        Cpmv five;
        five = one;
 
        Cpmv six;
        six = five + three;
 
        cout << "\nobject one";
        one.Display();
 
        cout << "\nobject two";
        two.Display();
 
        cout << "\nobject three";
        three.Display();
 
        cout << "\nobject four";
        four.Display();
 
        cout << "\nobject five ";
        five.Display();
 
        cout << "\nobject six ";
        six.Display();
 
    }
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Глава 18 задача 3

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 <iostream>
#include <iomanip>
//iomanip для setprecision
 
long double sum_values();
 
template <typename T, typename ...Args>
long double sum_values(const T& value, const Args& ...args);
 
int main()
{
    std::cout<<sum_values(5, 5, 5)<<std::endl;
    std::cout <<std::setprecision(10)<< sum_values(20.0, 1.0, 8.6578787879, 1) << std::endl;
 
    system("pause");
    return 0;
}
long double sum_values()
{
    return 0.0;
}
template <typename T, typename ...Args>
long double sum_values(const T& value, const Args& ...args)
{
    long double sum = 0;
    sum = value + sum_values(args...);
 
    return sum;
}


Вернуться к обсуждению:
Решение всех задач из учебника Стивена Прата
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2017, 15:08
Готовые ответы и решения:

Пример с книги Стивена Прата (Язык программирования с++). Расхождение в ответе
В книге один ответ. У меня другой выходит (На русский перевод, не обращайте внимание) Сама...

Решение задач из учебника Томшина
Я являюсь студентом 1-го курса, и нам дали задачи по c# которые необходимо решить. Задачи взяты из...

Понятен материал учебника, но не получается самостоятельное решение задач
Здравствуйте. Читаю книжку Дейтелов, переписываю код, который дан в учебнике, потом читаю...

Нюансы синтаксиса: классы, список инициализации (неясная строка из учебника Стивена Праты)
Вот сам класс #ifndef TABTENN0_H_ #define TABTENN0_H_ #include &lt;string&gt; using std ::...

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