[C] Itipi di base
buongiorno a tutti..
Sono un pò di giorni che provo a risolvere questo problema senza successo.
Preciso subito che sono un autodidatta!!!
Il testo del problema è questo:
Scrivere un programma che traduca un numero telefonico alfabetico nella sua forma numerica.
Esempio:
Inserisci numero in lettere: CALLATT
numero convertito: 2255288
Io ho iniziato con un programma con solo tre lettere alfabetiche, ma vengono solo le ultime 2 lettere convertite correttamente, al contrario la prima lettera viene restituita al valore ASCII corrispondente.
Non riesco davvero a capire dove sbaglio.
questo è il mio programma(grazie in anticipo per l'aiuto)
Sono un pò di giorni che provo a risolvere questo problema senza successo.
Preciso subito che sono un autodidatta!!!
Il testo del problema è questo:
Scrivere un programma che traduca un numero telefonico alfabetico nella sua forma numerica.
Esempio:
Inserisci numero in lettere: CALLATT
numero convertito: 2255288
Io ho iniziato con un programma con solo tre lettere alfabetiche, ma vengono solo le ultime 2 lettere convertite correttamente, al contrario la prima lettera viene restituita al valore ASCII corrispondente.
Non riesco davvero a capire dove sbaglio.
questo è il mio programma(grazie in anticipo per l'aiuto)
#include <stdio.h> int main(void) { char a,b,c; int n=2,l=3,m=4; printf("inserisci il testo: "); a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); while(getchar()!='\n') switch(a){ case'a': case'b': case'c': a=n;break; case'd': case'e': case'f': a=l;break; case'i': case'g': case'h': a=m;break;} switch(b){ case'a': case'b': case'c': b=n;break; case'd': case'e': case'f': b=l;break; case'g': case'h': case'i': b=m;break;} switch(c){ case'a': case'b': case'c': c=n;break; case'd': case'e': case'f': c=l;break; case'g': case'h': case'i': c=m;break;} printf("%d%d%d", a,b,c); return 0; }
Risposte
#include <stdio.h> int convertToNumber(char letter); int main(void) { int c; char tmp; printf("inserisci il testo lettera per lettera: "); while(tmp !='\n') { tmp = getchar(); c = convertToNumber(tmp); printf("%d",c); } return 0; } int convertToNumber(char letter) { int num; if (letter >= 'A' && letter <= 'Z') num = letter - 'A'; else if (letter >= 'a' && letter <= 'z') num = letter - 'a'; return num; }
Risultato:
$ ./test inserisci il testo lettera per lettera: aAbBcC 0011220%
Praticamente con -a o -A trovi il valore ASCII della lettera e fai partire il conto da 0
grazie mille per l'aiuto!!!!!