Другие языки программирования и технологии

Сортировка не массива в С++

Необходимо рассортировать переменные по убыванию, но не в массиве, а просто так - чтобы потом в порядке убывания их вывести на экран. Как это можно реализовать в С++?
#include <iostream>
#include <set>
#include <functional>
using namespace std;
template<typename Type>
Type input() {
Type value;
cout << ">>> ";
while (!(cin >> value)) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "!>>";
}
cin.ignore(numeric_limits<streamsize>::max(), '\n');
return value;
}
template<typename Type>
void scan(Type& value) {
value = input<Type>();
}
template<typename Type, typename... Args>
void scan(Type& value, Args&... args) {
value = input<Type>();
scan(args...);
}
template<typename Type, typename... Args>
void range(Args... args) {
auto seq = initializer_list<Type>({ args... });
multiset<Type, std::greater<>> box(seq);
for (auto value : box) cout << ' ' << value;
cout.put('\n');
}
int main() {
int a, b, c, d, e;
scan(a, b, c, d, e);
range<int>(a, b, c, d, e);
system("pause");
}
Ербол Толеген
Ербол Толеген
88 082
Лучший ответ
Ну, сделай массив из адресов твоих переменных и сортируй, как обычно.
ты пузырьковую сортировку знаешь?
вот в точно таком же порядке сравниваешь переменные, как будто они в массиве, и свопаешь, если сравнение успешно

но учти, что если их больше трёх, то ты пишешь говнокод
Ayrapet Ambarcumyan
Ayrapet Ambarcumyan
50 628
Владимир Калинин > если их больше трёх, то ты пишешь говнокод
Точно
что значит сортировка переменных?
то есть если у тебя не будет контейнера никакого в котором данные находятся - то как ты сортировать собираешься?
может имеется ввиду вывод на экран в порядке определенном набора переменных?
тогда тебе нужно решать задачу поиска минимального или максимального элемента и исключать его из списка после окончания поиска, но не сортировать ничего.
если у тебя нет контейнера никакого, в котором находятся переменные, то сортировки их ты в принципе не сделаешь.
А. Галымжан
А. Галымжан
23 233
задача предполагает использование контейнера, если не встроенного в язык, то хотя бы его эмуляции
#include < iostream >
#include < windows.h >
#include < vector >
#include < algorithm >

using namespace std;

void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");

int a = 12,
b = -4,
c = 0,
d = 5,
e = 6,
f = -24;

vector < int > v;
v.push_back(a);
v.push_back(b);
v.push_back(c);
v.push_back(d);
v.push_back(e);
v.push_back(f);
auto p = [](int t1, int t2)
{
return t1 > t2;
};
sort(v.begin(), v.end(), p);

for (auto t : v)
{
cout << t << " ";
}
cout << endl;

system("pause");
}
По заданию не совсем понятно чем задано ограничение на массив. Если можно выделять память, а переменных много, то для простоты (а это значит, что вероятно это и правильно) легче значения переменных, если это простые типы, или указатели на них, если сложные, поместить в контейнер и его отсортировать задав функцию сравнения для элементов контейнера.