PDA

View Full Version : [C++] Invertire le lettere di una parola


AngeL)
05-07-2006, 13:05
sto lavorando a un programma per crittare e decrittare e mi serve una funzione che inverta le lettere di una parola, per esempio se la parola è "ciao" io voglio che diventi "oaic".
esiste una funzione o devo crearla io?
grazie in anticipo

BountyKiller
05-07-2006, 13:53
bo, magari esiste qualche libreria che contiene funzioni di questo tipo, ma vista la banalità dell'operazione ti suggerisco di non perdere tempo a cercare e fartela tu.....quand'ero studente persi due giorni a cercare una libreria con dentro una funzione che convertisse un indirizzo IP dalla notazione puntata all'unsigned int che sta dentro al pacchetto IP.......alla fine, spazientito, ma la sono fatta da solo....in 10 minuti l'avevo scritta e testata..... e nel mio caso la funzione era un po' meno banale di quella che serve a te.

andbin
05-07-2006, 14:01
mi serve una funzione che inverta le lettere di una parola, per esempio se la parola è "ciao" io voglio che diventi "oaic".
esiste una funzione o devo crearla io?Uhm ... non mi sembra che esista.
Comunque è semplice da fare:
char* str_reverse (char *s)
{
int i, j, l;
char c;

for (i=0,l=strlen(s),j=l-1; i<l/2; c=s[i], s[i++]=s[j], s[j--]=c);

return s;
}

AngeL)
05-07-2006, 14:05
grazie mille.
visto che non vorrei aprire un'altr discussione per non scocciare troppo, posso fare qui altre domande che riguardano questo codice?

BountyKiller
05-07-2006, 14:05
Andbin ma sei onnipresente !!!! :D :D :D

Fenomeno85
06-07-2006, 12:57
Uhm ... non mi sembra che esista.
Comunque è semplice da fare:
char* str_reverse (char *s)
{
int i, j, l;
char c;

for (i=0,l=strlen(s),j=l-1; i<l/2; c=s[i], s[i++]=s[j], s[j--]=c);

return s;
}

inutile restituire la stringa :D


void str_reverse (char *s)
{
char val;
for (int i=0; i<strlen(s)/2; i++){
val = *(s+i);
*(s+i) = *(s+(strlen(s)-i-1));
*(s+(strlen(s)-i-1)) = val;
}
}


versione + figa con i puntatori :asd: e spreco meno memoria :Prrr:

~§~ Sempre E Solo Lei ~§~

andbin
06-07-2006, 13:15
inutile restituire la stringa :DNon c'è dubbio ... non è obbligatorio. Però ... può essere utile! ;)
Puoi fare:

char str[] = "Stringa";
printf ("Stringa invertita %s\n", str_reverse (str));

Ti sei mai chiesto perché le varie strcpy, strcat, ecc... ritornino un puntatore alla stringa di destinazione?? :D

Perché così si può fare, ad esempio:
strcat (strcpy (buffer, str1), str2);