Ciato a tutti nuovamente
Il programma che sto cercando di fare è il seguente:
"scrivere una funzione di nome cripta che accetti come argomenti una stringa sorgente e una stringa destinataria. La stringa destinataria viene generata sostituendo ogni lettera della stringa sorgente con quella simmetricamente opposta nell'alfabeto (considerato di 26 lettere)
Esempi:
cripta("abcde", s2); //s2 = "zyxwv";
Per lo svolgimento dell'esercizio non è consentito l'utilizzo della libreria string.h e delle sue funzioni.
Io ho creato la mia funzione cripta, ho pensato che per far sì che in s2 ci sia la lettera simmetricamente opposta devo considerare il valore ASCII del carattere di s1 che voglio criptare, aggiungendo a questo " 26- abs ( int('a')-int (*s1) ); " ovvero, ci aggiungo 26 - la differenza di valore, positiva, che c'è tra il primo carattere dell' alfabeto ( 'a' ) e il valore ASCII del carattere considerato.
Vi posto qui di seguito la funzione:
codice:
void cripta (char *s1, char *s2)
{
int k=0;
for (char *p=s1;*p;p++)
k++;
int o=0;
for (int n=0;n<k;n++,s1++,s2++)
{
*s2=*s1;
o=int (*s2);
o=o+26 - abs (int ('a')-int(*s1));
cout<<o<<endl<<int(*s2)<<endl; //Solo per controllare che i valori dei "criptati"
siano quelli che volevo.....
*s2=char (o); //Ho il forte dubbio che sia questo il problema....
}
*s2='\0'; //chiudo la stringa, aggiungo un carattere nullo
}
Nal main viene solo introdotta s1 da tastiera (ho usato cin.getline( ) )e dichiarata s2.
L'output del programma è il seguente (scrivo solo s2):
{{{{{
Ovvero ogni carattere mi diventa una parentesi graffa....
Se sapete cosa sbaglio potreste dirmelo?
Come sempre, se avete soluzioni migliori e volete renderle comuni siete più che ben accetti
Grazie mille dell'aiuto!!
A presto!!!