Другие языки программирования и технологии
Сортировка не массива в С++
Необходимо рассортировать переменные по убыванию, но не в массиве, а просто так - чтобы потом в порядке убывания их вывести на экран. Как это можно реализовать в С++?
#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");
}
#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");
}
Ну, сделай массив из адресов твоих переменных и сортируй, как обычно.
ты пузырьковую сортировку знаешь?
вот в точно таком же порядке сравниваешь переменные, как будто они в массиве, и свопаешь, если сравнение успешно
но учти, что если их больше трёх, то ты пишешь говнокод
вот в точно таком же порядке сравниваешь переменные, как будто они в массиве, и свопаешь, если сравнение успешно
но учти, что если их больше трёх, то ты пишешь говнокод
что значит сортировка переменных?
то есть если у тебя не будет контейнера никакого в котором данные находятся - то как ты сортировать собираешься?
может имеется ввиду вывод на экран в порядке определенном набора переменных?
тогда тебе нужно решать задачу поиска минимального или максимального элемента и исключать его из списка после окончания поиска, но не сортировать ничего.
если у тебя нет контейнера никакого, в котором находятся переменные, то сортировки их ты в принципе не сделаешь.
то есть если у тебя не будет контейнера никакого в котором данные находятся - то как ты сортировать собираешься?
может имеется ввиду вывод на экран в порядке определенном набора переменных?
тогда тебе нужно решать задачу поиска минимального или максимального элемента и исключать его из списка после окончания поиска, но не сортировать ничего.
если у тебя нет контейнера никакого, в котором находятся переменные, то сортировки их ты в принципе не сделаешь.
задача предполагает использование контейнера, если не встроенного в язык, то хотя бы его эмуляции
#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");
}
#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");
}
По заданию не совсем понятно чем задано ограничение на массив. Если можно выделять память, а переменных много, то для простоты (а это значит, что вероятно это и правильно) легче значения переменных, если это простые типы, или указатели на них, если сложные, поместить в контейнер и его отсортировать задав функцию сравнения для элементов контейнера.
Похожие вопросы
- как при сортировке одномерного массива оставить на месте неположительные элементы
- Сортировка обменами. Массивы (корректировать код с++)
- Сортировка одномерного массива + вставка числа в отсортированный массив PASCAL
- Сортировка одномерного массива
- решение задачи на С++ visualy sdudio 2008. на использование сортировки в массивах.
- помощь по си! сортировка одномерного массива!
- Сортировка двумерного массива. Пусть нам надо сортировать первый столбец по убыванию. C++
- Можно-ли использовать сортировку слиянием на массиве, состоящем из 10-ти элементов.
- Сортировка 2-мерного массива в С++
- Delphi - Сортировка массива и вывод его в стринг грид
Точно