Verificare se un vettore è in ordine crescente

di il
7 risposte

Verificare se un vettore è in ordine crescente

Ciao ragazzi. Ho realizzato una funzione che dovrebbe darmi 1 come risultato se il vettore è in ordine crescente, e 0 se non lo è. Il problema è che non funziona e da sempre come risultato 0. Lasciare stare il modo di scrivere del restante programma, è solo un esempio per vedere se la funzione worka.

int Verificare_Ordine_Crescente(int vet[]){
	int i;
        int risultato;
	i=0;
        risultato=1;
		while((i<DIM)&&(risultato!=0)){
           if(vet[i]>vet[i+1]){
				risultato=0;
            }
        i=i+1;
        }
    return risultato;
}

7 Risposte

  • Re: Verificare se un vettore è in ordine crescente

    Attenzione a DIM .... così il test va oltre per i+1
  • Re: Verificare se un vettore è in ordine crescente

    oregon ha scritto:


    Attenzione a DIM .... così il test va oltre per i+1

    Ho messo DIM solo per non farvi confondere, però nel programma ho messo "5" visto che il vettore contiene 5 elementi.
  • Re: Verificare se un vettore è in ordine crescente

    LollipopBB ha scritto:


    Ho messo DIM solo per non farvi confondere, però nel programma ho messo "5" visto che il vettore contiene 5 elementi.
    Certo, ma non è quello che ti ha detto oregon…

    Attualmente per i=4 accedi a vet[i+1] ossia vet[5] che è inesistente…
  • Re: Verificare se un vettore è in ordine crescente

    Ma con il while la condizione non si ferma quando i è uguale all'ultimo elemento? Comunque aggiungendo una stampa dopo l'if posso notare che non controlla tutti i numeri, ma fa solo il primo controllo. E nonostante siano ordinati da ancora 0. Non so veramente come fare, sto impazzendo
  • Re: Verificare se un vettore è in ordine crescente

    Okay bugia, ho capito l'errore , e ho aggiunto una nuova variabile j. Posto il codice per chiunque avesse bisogno:
    
    int Verificare_Ordine_Crescente(int vet[]){
    
    	int risultato=1;
    	int i=0;
    	while(i<5){
    		int j=i+1;
    			while(j<5){
    				if(vet[i]>vet[j]){
    					risultato=0;
    				}
    				j=j+1;
    			}
    		i=i+1;
    	}
    	return risultato;
    }
  • Re: Verificare se un vettore è in ordine crescente

    Ma cos…

    Se, prendendo la dimensione come 5, non va bene i=4 ma fino a i=3 è ok allora la condizione del ciclo sarà i < 5 -1 (DIM - 1).
    Senza fare 14 while senza motivo.

    D’altronde se hai, ad esempio, 4 numeri quanti confronti devi fare?

    E non ha senso avere una variabile risultato visto che se la condizione non è verificata allora basta ritornare subito 0. E usare un while al posto di un for ha ancora meno senso
  • Re: Verificare se un vettore è in ordine crescente

    LollipopBB ha scritto:


    oregon ha scritto:


    Attenzione a DIM .... così il test va oltre per i+1

    Ho messo DIM solo per non farvi confondere, però nel programma ho messo "5" visto che il vettore contiene 5 elementi.
    Ma i consigli non li seguite mai?

    Nel tuo codice originale, se aggiungi

    #define DIM 5

    ti basta

    while ((i<DIM-1) && (risultato != 0)) {
Devi accedere o registrarti per scrivere nel forum
7 risposte