Esercizio c++ vettori

di il
5 risposte

Esercizio c++ vettori

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

5 Risposte

  • Re: Esercizio c++ vettori

    Ti consiglio di utilizzare una flag che ti indichi se nelle caselle a destra c'è un valore minore o uguale del valore corrente; quindi l'inserimento nel vettore lo condizioni al fatto che questa flag sia vera.
  • Re: Esercizio c++ vettori

    candaluar ha scritto:


    ti consiglio di utilizzare una flag che ti indichi se nelle caselle a destra c'è un valore minore o uguale del valore corrente; quindi l'inserimento nel vettore lo condizioni al fatto che questa flag sia vera.
    scusa ma non sono troppo pratico...
    per flag intendi un'ulteriore funzione booleana ? ci ho provato senza grandi risultati..sempre per il motivo che non riesco a dargli nella condizione di andare a verificare TUTTI gli elementi a destra...
  • Re: Esercizio c++ vettori

    Per flag intendo un "segnalino", una variabile di comodo.
  • Re: Esercizio c++ vettori

    Cioè inizializzo una variabile uguale a zero prima del primo for....e che ci faccio con sta variabile?
  • Re: Esercizio c++ vettori

    Ho risolto con una variabile booleana di comodo.
    grazie
Devi accedere o registrarti per scrivere nel forum
5 risposte