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++

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
disperate (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 19:25
Venerdì, 02/04/2010
Salve,
ho questo prototipo:
Codice sorgente - presumibilmente C/C++

  1. int ricInverti(char s[], char s1[]);



Utilizzando la ricorsione devo scrivere una funzione che inverte la stringa s.
Qualcuno sa come la posso fare? (Inoltre ammetto di essere perplessa perchè con le strighe di caratteri ho sempre usato il void e non l'int...)
Ringrazio chiunque riesca ad aiutarmi

N.B. non posso modificare il prototipo.

PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 19:42
Venerdì, 02/04/2010
ok si può fare, ma non possiamo risolverti da 0 il tuo problema, fai almeno "finta" di postare un pezzetto di codice.
Non siamo una software house.

PM Quote
Avatar
disperate (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 19:51
Venerdì, 02/04/2010
ok anche se sono sicurissima di aver scritto una emerita scempiaggine ecco:

Codice sorgente - presumibilmente C++

  1. using namespace std;
  2.  
  3. int ricInverti(char [], char []);
  4. #define MAX 10
  5.  
  6. int main () {
  7.     char s[MAX];
  8.      char s1[MAX];
  9.      
  10.     int n,i;
  11.    
  12.     cin>>s;
  13.     n=strlen(s);
  14.     /*arrivata qui non so come chiamare la funzione per far stampare la stringa invertita*/
  15.    
  16. }
  17.    
  18.  
  19. system("PAUSE");
  20. return 0;
  21. }
  22.  
  23. int ricInverti(char s[], char s1[]) {
  24.     int len = strlen(s);
  25.    
  26.     while(len>0){
  27.     s1[0]=s[len];
  28.     len--;
  29.  
  30.     return ricInverti(s,s1+1);
  31. }
  32. }


PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 20:49
Venerdì, 02/04/2010
Ma la ricorsione é obbligatoria? Con un ciclo for faresti tutto in un'attimo...

PM Quote
Avatar
disperate (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 20:55
Venerdì, 02/04/2010
purtroppo si è una traccia che il mio prof ha assegnato e che devo consegnare :(

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 6:47
Sabato, 03/04/2010
Non è certo il modo più semplice per invertire una stringa, comunque eccoti il codice:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. int recInvert(char s[], char s1[])
  6. {
  7.         s1[strlen(s)-1]=s[0];
  8.         if(strlen(s)>1)recInvert(s+1, s1);
  9.         return 0;
  10. }
  11.  
  12. int main()
  13. {
  14.         char str[50];
  15.         char out[50];
  16.         strcpy(str, "this is a test");
  17.         recInvert(str, out);
  18.         cout<<out<<endl;
  19.         return 0;
  20. }


PM Quote
Avatar
disperate (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 9:21
Sabato, 03/04/2010
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...

PM Quote
Avatar
disperate (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 13:03
Sabato, 03/04/2010
ho modificato un poketto il codice xò mi da dei segni strani allego codice e stamp dell eseguibile
Codice sorgente - presumibilmente C++

  1. #include  <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. int recInvert(char [], char []);
  6. #define MAX 20
  7.  
  8. int main()
  9. {
  10.     char s[MAX];
  11.     char s1[MAX];
  12.     int n;
  13.    
  14.     cout<<"Dammi la stringa da invertire: ";
  15.     cin.getline(s,MAX);
  16.     recInvert(s, s1);
  17.     cout<<s1<<endl;
  18.  
  19.     system("pause");
  20.     return 0;
  21. }
  22. int recInvert(char s[], char s1[])
  23. {
  24.     s1[strlen(s)-1]=s[0];
  25.     if(strlen(s)>1)recInvert(s+1, s1);
  26.     return 0;
  27. }



disperate ha allegato un file: Immagine.JPG (19170 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da disperate il 03/04/2010 alle 13:04
PM Quote
Avatar
disperate (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 15:50
Sabato, 03/04/2010
qualcuno a qualke idea??

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo