Я пытаюсь сделать функцию, чтобы получить 3 самых больших числа в векторе.Например: Numbers: 1 6 2 5 3 7 4 Результат: 5 6 7
Я подумал, что могу отсортировать их DESC, получить 3 числа в начале и после этого прибегнуть к ним ASC, но это будеттрата памяти и времени выполнения.Я знаю, что есть более простое решение, но я не могу понять это.И еще одна проблема, что если у меня есть только два числа ...
Кстати: я использую в качестве компилятора BorlandC ++ 3.1 (я знаю, очень старый, но это то, что я буду использовать на экзамене ..)
Спасибо, ребята.
Л.Е .: Если кто-то хочет узнать больше о том, чего я пытаюсь достичь, вы можете проверить код:
#include<fstream.h>
#include<conio.h>
int v[1000], n;
ifstream f("bac.in");
void citire();
void afisare_a();
int ultima_cifra(int nr);
void sortare(int asc);
void main() {
clrscr();
citire();
sortare(2);
afisare_a();
getch();
}
void citire() {
f>>n;
for(int i = 0; i < n; i++)
f>>v[i];
f.close();
}
void afisare_a() {
for(int i = 0;i < n; i++)
if(ultima_cifra(v[i]) == 5)
cout<<v[i]<<" ";
}
int ultima_cifra(int nr) {
return nr - 10 * ( nr / 10 );
}
void sortare(int asc) {
int aux, s;
if(asc == 1)
do {
s = 0;
for(int i = 0; i < n-1; i++)
if(v[i] > v[i+1]) {
aux = v[i];
v[i] = v[i+1];
v[i+1] = aux;
s = 1;
}
} while( s == 1);
else
do {
s = 0;
for(int i = 0; i < n-1; i++)
if(v[i] < v[i+1]) {
aux = v[i];
v[i] = v[i+1];
v[i+1] = v[i];
s = 1;
}
} while(s == 1);
}
Citire = Читать Afisare= Показать Ultima Cifra = Последняя цифра числа Сортар = Пузырьковая сортировка