Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - esercizio sulla ricorsione in c++
Forum - C/C++ - esercizio sulla ricorsione in c++ - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 16:32
Sabato, 03/04/2010
quando dichiari gli array fai così:
Codice sorgente - presumibilmente C/C++

  1. char s[MAX]="";
  2. 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
Codice sorgente - presumibilmente Plain Text

  1. memset(s,0,MAX);
  2. memset(s1,0,MAX);


PM Quote
Avatar
disperate (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 17:01
Sabato, 03/04/2010
Overflow grazie grazie di cuore!!!!!!!!!:hail:

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 17:09
Sabato, 03/04/2010
Testo quotato

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 il 03/04/2010 alle 17:09
PM Quote
Avatar
disperate (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 20:17
Sabato, 03/04/2010
Matthew grazie e approfitto per fare gli auguri di buona pasqua a tutti ^^

PM Quote
Avatar
ciccio95 (Normal User)
Newbie


Messaggi: 3
Iscritto: 19/05/2012

Segnala al moderatore
Postato alle 17:50
Sabato, 19/05/2012
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;
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;
vett=z;
inverso(vett,d+1,b-1);
}
}

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

PM Quote
Avatar
osharko (Normal User)
Pro


Messaggi: 124
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 16:17
Domenica, 20/05/2012
Testo quotato

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;
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;
vett=z;
inverso(vett,d+1,b-1);
}
}

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



nel main non dovresti fare  cin>>n?
non dovresti mettere anche return 0 dato che parli di un int main?
stessa cosa nel void stampa dovrebbe essere cout<<vet;
e ultima cosa, nel void inverso cosa dovrebbe fare?

PM Quote
Avatar
ciccio95 (Normal User)
Newbie


Messaggi: 3
Iscritto: 19/05/2012

Segnala al moderatore
Postato alle 15:56
Giovedì, 24/05/2012
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 il 24/05/2012 alle 16:06
PM Quote
Avatar
ciccio95 (Normal User)
Newbie


Messaggi: 3
Iscritto: 19/05/2012

Segnala al moderatore
Postato alle 16:09
Giovedì, 24/05/2012
ti spiego cosa succede...nel main se non metti return 0 non ci fa niente..nel void inverso lui esegue gli scambi...cioè nel primo spazio del vettore lui mette l'ultimo numero k hai inserito...e nell ultimo spazio del vettore  mette il primo numero che hai inserito e così via!

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo