PDA

Visualizza la versione completa : [C++] Determinare se un array crescente tramite ricorsione


marcos666
23-02-2011, 12:06
Salve il programma dice cosi: Si scriva in C++ una funzione ricorsiva che riceva un array e la sua dimensione e restituisca VERO se crescente.

sbaglio in qualcosa perche mi da errore:



# include <iostream>
using namespace std;
const int n=9;

bool verifica (int [],int);
int main ()
{
int a[n]={1,2,3,4,5,6,7,8};


if (verifica (a,0))
cout<<"e crescente:"<<endl;
else
cout<<"non e crescente";





return 0;
}

bool verifica (int a[],int i)
{
if (i>=n)
return true;

if (a[i]>a[i+1])
return false;


return verifica (a,i+1);


}

VincenzoTheBest
23-02-2011, 12:16
Il passo base non corretto. Devi uscire quando i uguale a n-1

marcos666
23-02-2011, 12:54
potresmi dirmi come posso cambiarlo ? basterebbe un: if (i=n-1)??
grazie

VincenzoTheBest
23-02-2011, 13:18
Originariamente inviato da marcos666
potresmi dirmi come posso cambiarlo ? basterebbe un: if (i=n-1)??
grazie
Si..

marcos666
23-02-2011, 16:04
scusami ma non funziona, mi da sempre errore

VincenzoTheBest
23-02-2011, 16:09
Originariamente inviato da marcos666
scusami ma non funziona, mi da sempre errore
Si, perch fai un assegnamento! Invece devi fare un confronto:

if (i == n-1)

marcos666
23-02-2011, 16:21
Guarda secondo me faccio un errore grande si sintassi ma non so dove , ho fatto cosi;




# include <iostream>
using namespace std;
const int n=9;

bool verifica (int [],int);
int main ()
{
int a[n]={1,2,3,4,5,6,7,8};


if (verifica (a,0))
cout<<"e crescente:"<<endl;
else
cout<<"non e crescente";





return 0;
}

bool verifica (int a[],int i)
{
if (i==n-1)
return true;

if (a[i]>a[i+1])
return false;


return verifica (a,i+1);


}

Alex'87
23-02-2011, 16:55
Originariamente inviato da marcos666
Guarda secondo me faccio un errore grande si sintassi ma non so doveCompila? S? Allora non un errore di sintassi.

Alex'87
23-02-2011, 17:01
Comunque il problema qua:


const int n=9;
...
int a[n]={1,2,3,4,5,6,7,8};

marcos666
23-02-2011, 18:22
caspita grazie non mi ero reo conto che anzi che 9 erano 8,,, siete i migliori..

Loading