Oppure

Loading
02/04/10 17:25
disperate
Salve,
ho questo prototipo:
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.
aaa
02/04/10 17:42
XBarboX
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.
aaa
02/04/10 17:51
disperate
ok anche se sono sicurissima di aver scritto una emerita scempiaggine ecco:

using namespace std;

int ricInverti(char [], char []);
#define MAX 10

int main () {
    char s[MAX];
     char s1[MAX];
     
    int n,i;
    
    cin>>s;
    n=strlen(s);
    /*arrivata qui non so come chiamare la funzione per far stampare la stringa invertita*/
    
}
    

system("PAUSE");
return 0;
}

int ricInverti(char s[], char s1[]) {
    int len = strlen(s);
    
    while(len>0){
    s1[0]=s[len];
    len--;

    return ricInverti(s,s1+1); 
}
}
aaa
02/04/10 18:49
XBarboX
Ma la ricorsione é obbligatoria? Con un ciclo for faresti tutto in un'attimo...
aaa
02/04/10 18:55
disperate
purtroppo si è una traccia che il mio prof ha assegnato e che devo consegnare :(
aaa
03/04/10 4:47
Matthew
Non è certo il modo più semplice per invertire una stringa, comunque eccoti il codice:

#include <iostream>
#include <cstring>
using namespace std;

int recInvert(char s[], char s1[])
{
	s1[strlen(s)-1]=s[0];
	if(strlen(s)>1)recInvert(s+1, s1);
	return 0;
}

int main()
{
	char str[50];
	char out[50];
	strcpy(str, "this is a test");
	recInvert(str, out);
	cout<<out<<endl;
	return 0;
}
aaa
03/04/10 7:21
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...
aaa
03/04/10 11:03
disperate
ho modificato un poketto il codice xò mi da dei segni strani allego codice e stamp dell eseguibile
#include  <iostream>
#include <cstring>
using namespace std;

int recInvert(char [], char []);
#define MAX 20

int main()
{
    char s[MAX];
    char s1[MAX];
    int n;
    
    cout<<"Dammi la stringa da invertire: ";
    cin.getline(s,MAX); 
    recInvert(s, s1);
    cout<<s1<<endl;

    system("pause");
    return 0;
} 
int recInvert(char s[], char s1[])
{
    s1[strlen(s)-1]=s[0];
    if(strlen(s)>1)recInvert(s+1, s1);
    return 0;
}

Ultima modifica effettuata da disperate 03/04/10 11:04
aaa