Gentili utenti,so che non è vostra usanza dare i codici belli e pronti,ma sono due giorni che sono fermo su un esercizio a mio avviso estremamente semplice,senza riuscire a trovare l'algoritmo che mi permette di andare avanti con il programma.
Vi posto una semplificazione estrema di quello che mi servirebbe;
voglio scrivere una funzione che riceve come parametri in ingresso un vettore e la sua dimensione,e produce in uscita un vettore contenente gli elementi del vettore in ingresso se e solo se l'elemento i-esimo è maggiore di tutti i suoi SUCCESSIVI.
esempio: se da input il vettore che inserisco è v[]={9,7,8,2,4,3} il vettore che dovrò produrre in output è w[]={9,8,4}
le linee di codice che ho scritto (e che non vanno bene) sono (non copio il main perchè nel main non faccio altro che richiamare una funzione di tipo void che mi legge il vettore in input e un'altra funzione che dovrebbe produrmi il vettore w in output,e non è un problema;
int* costruisciArray (int v[],int dim,int &nuovaSize)
{
int* w=new int [nuovaSize];
for (int i=0;i<dim;i++){
for (int j=i+1;j<dim; j++){
if (v>(v[j])
{
w[nuovaSize]=v;
nuovaSize++;
}
}
}return w;
}
il problema fondamentale è che in questo modo se l'elemento i-esimo è maggiore di tutti i successivi,lo va ad inserire nel vettore W ogni qualvolta verifica la condizione di if,mentre invece vorrei che lo inserisse una sola volta e andasse avanti.
E ancora,se l'elemento i-esimo NON è maggiore di tutti gli elementi successivi ma solo di uno ad esempio,continua ad inserirlo nel vettore W nonostante quello che voglio è che lo inserisca se e solo se è maggiore di TUTTI i successivi a partire dall'indice i.
Ci sto sragionando sopra,probabilmente è molto semplice (l'esercizio è abbastanza più complesso di così,ma il problema che ho è proprio su questa condizione) ma non riesco proprio ad andare avanti.
Spero possiate darmi una mano
Ciao e grazie