Buongiorno a tutti,
sono nuovo del forum, quindi saluto tutti, e mi presento, sono autodidatta, mi piace la programmazione (tanto da farne un hobby) ho iniziato con il VB, sono passato al C, poi ora sono al C++.....
Sto leggendo il C++fondamenti di programmazione dei fratelli Deitel st� cercando di risolvere un esercizio(il 7.36) che recita scrivete una funzione ricorsiva che inverta una stringa.
L'esercizio l'ho risolto con il seguente listato. (� obbligo usare le stringhe come vettori)
codice:
void reverse(char stringa[], int dimensione)
{//gira la stringa al contrario
if (dimensione == 0) {
cout << endl;
return;
}
cout << stringa[dimensione - 1];
reverse(stringa, dimensione - 1);
return;
}
funziona ma non mi piace, inizialmente avevo scritto questo:
codice:
void reverse(char stringa[])
{//gira la stringa al contrario
if (stringa[0] == '\0') {
cout << endl;
return;
}
int i = strlen(stringa);
cout << stringa[i - 1];
stringa[i - 1] = '\0';
reverse(stringa);
return;
}
che pero' mi solleva un eccezione quando vado ad assegnare '\0' al posto dell'ultimo carattere.
sembra che la stringa non sia modificabile, ma e' un vettore e quindi non passato per valore,
cos'e' che non ho capito?
grazie.