Oppure

Loading
03/04/10 13:50
disperate
qualcuno a qualke idea??
aaa
03/04/10 14:32
Overflow
quando dichiari gli array fai così:
char s[MAX]="";
char s1[MAX]="";


perchè quando si dichiara una variabile in C++ essa assume dei valori a casaccio, e quindi quando dichiari gli array ci sono valori in più, così inizializzi a 0 utto l'array, oppure usa la funzione memset
memset(s,0,MAX);
memset(s1,0,MAX);
aaa
03/04/10 15:01
disperate
Overflow grazie grazie di cuore!!!!!!!!!:hail:
aaa
03/04/10 15:09
Matthew
Postato originariamente da disperate:

grazie matthew mi hai salvata^^ ma potresti spiegarmi l'utilità di questa ricorsione MMM io ho sentito dire k serve per qnd farò gli alberi...


* Algoritmi su alberi
* valutazione di funzioni matematiche
* gestione di aggregati eterogenei di dati, in combinazione con il polimorfismo
* gestione di dati in formato XML. Grazie alle API fornite con tutti i linguaggi di programmazione moderni, è possibile formulare praticamente tutti gli algoritmi di lettura/creazione XML in maniera ricorsiva.
* algoritmi di ordinamento efficienti come Quicksort e Merge sort o algoritmi di ricerca come la ricerca binaria possono essere formulati in maniera ricorsiva, anche con tipi di dati come le liste a puntatori.
* stesura di algoritmi che lavorano con la tecnica di backtracking.
* descrizione di curve frattali.

La ricorsione ti permette di risolvere problemi complessi con poche linee di codice, ma in genere occupa un sacco di memoria e non ha ottime prestazioni.
Ultima modifica effettuata da Matthew 03/04/10 15:09
aaa
03/04/10 18:17
disperate
Matthew grazie e approfitto per fare gli auguri di buona pasqua a tutti ^^
aaa
19/05/12 15:50
ciccio95
guarda ieri ho avuto il compito proprio su queste cose...

ti scrivo tutto il programma in c++ però!

#include <iostream>
using namespace std;
void inverso(int vett[], int d,int b);
void stampa(int vett[], int n);

int main()
{
int vett[99],n,i,d=0,b;
cout<<"Quanti numeri vuoi inserire?";
cin>>n;
b=n-1;
for(i=0;i<n;i++)
cin>>vett[i];
inverso(vett,d,b);
stampa(vett,n);
system("PAUSE";);
}

void inverso(int vett[], int d,int b)
{
int z=0;
if(d>b)
return;
else
{
z=vett[d];
vett[d]=vett[b];
vett[b]=z;
inverso(vett,d+1,b-1);
}
}

void stampa(int vett[], int n)
{
int i;
for(i=0;i<n;i++)
cout<<vett[i];
}
aaa
20/05/12 14:17
osharko
Postato originariamente da ciccio95:

guarda ieri ho avuto il compito proprio su queste cose...

ti scrivo tutto il programma in c++ però!

#include <iostream>
using namespace std;
void inverso(int vett[], int d,int b);
void stampa(int vett[], int n);

int main()
{
int vett[99],n,i,d=0,b;
cout<<"Quanti numeri vuoi inserire?";
cin>>n;
b=n-1;
for(i=0;i<n;i++)
cin>>vett[i];
inverso(vett,d,b);
stampa(vett,n);
system("PAUSE";);
}

void inverso(int vett[], int d,int b)
{
int z=0;
if(d>b)
return;
else
{
z=vett[d];
vett[d]=vett[b];
vett[b]=z;
inverso(vett,d+1,b-1);
}
}

void stampa(int vett[], int n)
{
int i;
for(i=0;i<n;i++)
cout<<vett[i];
}


nel main non dovresti fare cin>>n[i]?
non dovresti mettere anche return 0 dato che parli di un int main?
stessa cosa nel void stampa dovrebbe essere cout<<vet[i];
e ultima cosa, nel void inverso cosa dovrebbe fare?
aaa
24/05/12 13:56
ciccio95
aspetta questo forum cancella le cose..

nel for devi inserire la variabile vett di i tra parentesi quadra

poi nella funzione inverso è così

z=vett di b tra parentesi quadra
vett[d]=vett di b tra parentesi quadra
vett di b tra parentesi quadra=z

infine nel ciclo di stampaggio mettere cout<<vett i tra parentesi quadra


questo forum mi cancellava le cose nelle parentesi quadre!
Ultima modifica effettuata da ciccio95 24/05/12 14:06
aaa