E' necessario anche considerare un ulteriore problema
se nella sequenza di numeri da prendere in cosiderazione il valore massimo fosse ripetuto avremmo (correttamente?) che sia il massimo che il suo "Pre" sarebbero uguali
sarebbe giusto?
serve o no di considerare i doppioni?
questo va preso in cosiderazione
io di mio ho scritto questo:
/*
* massimi.c
*
* 30-11-2020 Nelson "Standardoil"
* Sentitevi liberi di trarre ispirazione
* L'ammiraglio non si offende
*
* per trovare gli N numeri più alti in una sequenza di numeri
*/
#include <stdio.h>
int sequenza[] = {2, 4, 29, 30, 7, 5, 9, 10, 3, 4, 30, 29, 8, 11};
// lo array che contiene i valori
int valori = sizeof sequenza / sizeof sequenza[0];
// il numero dei valori
#define N 9 // il numero di campioni da conservare
int cam[N]; // lo array dove conservare i campioni
int flag = 1; // se flag == 0 non elimina i doppioni, se 1 li elimina
void seleziona(int a)
{
for(int i = 0; i < N; i++)
{
if(flag && (a == cam[i]))
{
break;
}
if(a > cam[i])
{
for(int j = N; j > i ; j--)
{
cam[j] = cam[j - 1];
}
cam[i] = a;
break;
}
}
}
int main(int argc, char **argv)
{
printf("\n\nProgramma per selezionare i %d valori più elevati\n", N);
// stampo la sequenza
for(int i = 0; i < valori; i++)
{
seleziona(sequenza[i]);
}
for(int i = 0; i < N; i++)
{
printf("%d\n", cam[i]);
}
return 0;
}
come vedete non risolve il problema dello OP, che deve farlo in C++, senza funzioni e senza array
invece questa mia versione in C, con una funzione che fa tutto il lavoro sporco e un array che mantiene i valori dei varii "massimi di ordine progressivamente inferiore"
massimo di ordine progressivamente inferiore:
massimo di ordine 0: il massimo assoluto
massimo di ordine 1: quello appena inferiore
e via così
e come vedete ho previsto da parametro di funzione se escludere oppure no i doppioni
credo che lo OP, a partire dall'ottimo pseudocodice di TIFilippo e dal mio esempio con array e funzioni possa tirar fuori il suo risultato