PDA

Visualizza la versione completa : [C] Verificare ordinamento array con ricorsione


devil89
07-05-2006, 19:56
Vorrei verificare se un array di interi è ordinato in senso crescente tramite la ricorsione.



/*
IP a[]
IP n
OR indicazione se l'array è ordinato in ordine crescente
*/

int Ordinato (const int *a, int n) {
if (n=1)
return 1;
else if (a[n-1]>Ordinato(a,n-1))
return 1;
else
return 0;
} /* Ordinato */

Non riesco a correggerlo.
In esecuzione mi da sempre 1.

Potete darmi una mano?

ascatem2
07-05-2006, 20:26
penso sia sbagliata la logica.... cioè, ti gli fai confrontare il valore della variabile a[n-1] con il valore ritornato dalal funzione che è o 0 o 1... quindi è tipicamente sempre maggiore e rotornerà sempre 1.

poi l'if è n==1 e non n=1

devil89
07-05-2006, 20:33
Originariamente inviato da ascatem2
penso sia sbagliata la logica.... cioè, ti gli fai confrontare il valore della variabile a[n-1] con il valore ritornato dalal funzione che è o 0 o 1... quindi è tipicamente sempre maggiore e rotornerà sempre 1.

poi l'if è n==1 e non n=1

Sulla logica hai ragione.
E' che l'ho scritto e pensato in 1 min (quindi gli errori di distrazione sono anche giustificabili).

Ma come potrei risolverlo allora?

ascatem2
07-05-2006, 20:35
/**funzione che dice se un'array è ordinato in modod crescente
@param a array di interi
@param n lunghezza logica dell'array
@return 1 se l'array è disposto in ordine crescente, 0 se non lo è
*/
int arrayOrdinato(int a[],int n){
if(n==1)
return 1;
else
if(a[n-1]>=a[n-2])
return arrayOrdinato(a,n-1);
else
return 0;
}//ordina


eccola qui la tua funzione. :)

ascatem2
07-05-2006, 20:36
che scuola fai? perchè noto che sei dell'89 e di Padova... mica farai il severi? :D

in caso mandami PM :P

devil89
07-05-2006, 20:45
Ti ho scritto un pvt.

Loading