Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как добавлять предметы в динамический char массив в классе https://www.cyberforum.ru/ cpp-beginners/ thread2235688.html
Народ скажите пожалуйста есть в классе дин массив символьного типа как добавлять в него предметы? не выходит (cin.getline(dis, 1024, '\n');( даже ввода в массив не видит). Может в конструкторе что-то...
одномерные массивы C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) номер минимального по модулю элемента массива; 2) сумму модулей элементов массива, расположенных после первого...
C++ Чтение из файла в массив структур
Помогите пожалуйста как правильно написать код. Есть некий текстовый файл на самом деле это Ексел таблица которая сохранена как csv (разделители запятые).Вот так выглядит одна строка в данном файле....
C++ Считывание чисел из файлов Здравствуйте, имеется 2 файла, в первом файле хранятся 2 числа: 121 122, во 2-ом файле также 2 числа: 123 124. Необходимо считать из 1го файла:121 из 2-го 123 и сложить, потом 122и 124 сложить.... https://www.cyberforum.ru/ cpp-beginners/ thread2235663.html
C++ Утечки памяти без выделения памяти? https://www.cyberforum.ru/ cpp-beginners/ thread2235620.html
Человек использует _CrtDumpMemoryLeaks() для отлова утечек, и обратился ко мне в сязи с тем, что есть утечка, но памяти он никому не выделял. Проверил проект... Даже, если функция main будет...
C++ Функция определяющая количество элементов массива находящихся в заданном диапазоне
Написать функцию, которая для заданого как параметр массива действительного типа возвращает число элементов, значение абсолютных величин которых находятся в диапазоне 0... 1. Значение этих элементов...
C++ Построенный массив упорядочить в порядке возрастания
Здравствуйте, уважаемые кодеры. Заданный одномерный массив А из 10 цифр. Построить массив В, каждый элемент которого вычисляется: bі = aі+1 - аіПостроенный массив упорядочить в порядке возрастания...
C++ Работа с линейным односвязным списком Создать класс для работы с однонаправленным линейным списком, содержащим целочисленные элементы. Реализовать следующие методы класса: - добавление элемента в начало списка; - добавление элемента... https://www.cyberforum.ru/ cpp-beginners/ thread2235584.html
C++ Прибавить ко все элементам очереди число, вводимое с клавиатуры https://www.cyberforum.ru/ cpp-beginners/ thread2235582.html
Дана очередь, заполненная целыми числами. Прибавить ко все элементам очереди число, вводимое с клавиатуры. Решить задачу, используя класс для работы с очередью.
C++ Поместить четные элементы в один стек, нечетные - во второй Дан стек, заполненный целыми числами. Поместить четные элементы в один стек, нечетные - во второй. Решить задачу, используя класс для работы со стеком. Класс должен содержать методы добавления и... https://www.cyberforum.ru/ cpp-beginners/ thread2235581.html
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 4
0

Использовать метод transform() вместо метода sort()

26.04.2018, 10:37. Просмотров 965. Ответов 4
Метки (Все метки)

Добрый день , надо исправить код , заменив метод sort() , методом transform(), не могу уловить функцию и способ использование transform(). Помогите пожалуйста исправить , или дайте совет по способу его использования.

Задание звучало так : Создать класс Rhombus. В классе Rhombus дано: сторона ромба и острый угол ромба. Определить методы расчета площади и диагоналей ромба. Используя контейнер создать последовательность элементов класса object и заполнить ее объектами класса. Количество элементов и их параметры подбирать случайным образом. Выполнить в предложенном варианте преобразования и вывести содержимое контейнера до и после сортировки. Упорядочить последовательность ромбов по возрастанию их площадей. Вывести последовательность больших диагоналей.

Текст программы :

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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
#define _USE_MATH_DEFINES
 
#include <iostream>
 
#include <string>
 
#include <cstring>
 
#include <cmath>
 
#include <vector>
 
#include <set>
 
#include <queue>
 
#include <algorithm>
 
const double Pi = 3.14159265;
 
using namespace std;
 
class Object {
 
protected: string name;
 
protected: int number;
 
public: static int count;
 
public: Object(const string&n, int num) {
 
name = n;
 
number = num;
 
++count;
 
}
 
Object() {
 
name = "";
 
number = 0;
 
count = 0;
 
}
 
Object(const Object&A) {
 
name = A.name;
 
number = A.number;
 
++count;
 
}
 
public:
 
void info(ostream&S)const {
 
S << "Номер объекта: " << number << "Имя объекта: " << name;
 
}
 
friend ostream &operator<<(ostream&S, const Object&A) {
 
A.info(S);
 
return S;
 
}
 
};
 
int Object::count = 0;
 
class Rhombus : public Object {
 
protected:
 
double a, alfa;//Длина стороны вектора и острый угол alfa
 
public:
 
Rhombus(double a1, double alfa1, int t, string s = "Ромб") :Object(s, t) {
 
a = a1; alfa = alfa1;
 
}
 
Rhombus() {
 
a = 0, alfa = 0;
 
}
 
Rhombus(const Rhombus&A) {
 
a = A.a; alfa = A.alfa;
 
number = A.number, name = A.name;
 
}
 
double square() {//находим площадь
 
return a*a*sin((alfa*Pi) / 180);
 
}
 
double DlinyBig() {//находим длины диагоналей
 
return 2 * a*cos((alfa*Pi) / 360);
 
}
 
double DlinySmall() {//находим длины диагоналей
 
return 2 * a*sin((alfa*Pi) / 360);
 
}
 
double Perimetr() {//находим периметр
 
return 4 * a;
 
}
 
Rhombus(double a1, double alfa1) {
 
a = a1; alfa = alfa1;
 
}
 
Rhombus& operator=(const Rhombus&A) {
 
a = A.a; alfa = A.alfa;
 
number = A.number, name = A.name;
 
return *this;
 
}
 
friend istream&operator >> (istream&S, Rhombus&A) {
 
S >> A.a >> A.alfa;
 
return S;
 
}
 
friend ostream&operator<<(ostream&S, const Rhombus&A) {
 
S << "Сторона " << A.a << ", угол " << A.alfa << "\n";
 
return S;
 
}
 
void info(ostream&S)const {
 
S << "Номер объекта: " << number << " " << "Имя объекта: " << name << " " << "\n";
 
}
 
};
 
class Square : public Rhombus {
 
double a, alfa;
 
public:
 
Square(double a1, int t, double alfa1 = 90, string s = "Квадрат") : Rhombus(a1, alfa1, t, s) {
 
a = a1;
 
alfa = alfa1;
 
}
 
Square(const Square&A) {
 
a = A.a;
 
alfa = A.alfa;
 
}
 
};
 
int main() {
 
setlocale(0, "");
 
string s = "";
 
vector <Rhombus> A(5);
 
int i = 1;
 
generate(A.begin(), A.end(), []() {return Rhombus(rand() % 10, rand() % 10, rand() % 90); });
 
vector <Rhombus>::iterator it;
 
cout << "До сортировки: \n";
 
for (it = A.begin(); it != A.end(); it++) {
 
it->info(cout);
 
cout << *it;
 
}
 
sort(A.begin(), A.end(), [](Rhombus A,Rhombus B) {return A.square() < B.square();
 
});
 
cout << '\n';
 
cout << "После сортировки: \n";
 
for (it = A.begin(); it != A.end(); it++) {
 
it->info(cout);
 
cout << *it;
 
cout << "Площадь: " << it->square() << '\n';
 
}
 
cout << "Длины больших Диагоналей: "<<'\n';
 
for (it = A.begin(); it != A.end(); it++) {
 
it->info(cout);
 
cout << it->DlinyBig() << '\n';
 
}
 
system("pause");
 
return 0;
 
}


Вернуться к обсуждению:
Использовать метод transform() вместо метода sort()
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2018, 10:37
Готовые ответы и решения:

Сортировка: как метод sort() заменить методом transform()?
подскажите, пожалуйста, как метод sort заменить методом transform #define _USE_MATH_DEFINES...

PreferenceActivity - что использовать вместо устаревшего метода addPreferencesFromResource
Разбираюсь с PreferenceActivity. Определил разметку, и теперь хочу подключить, а метод...

Использование указателя на метод вместо виртуального метода
Имеется базовый класс Base. Имеется производный от Base класс Derived. В классе Derived требуется...

Как использовать метод Гаусса для итерационного метода Ньютона?
Всем привет! Подскажите пожалуйста, у меня есть система нелинейных уравнений, которую решаю...

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