[C] Itipi di base

Omar791
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)
#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
Luc@s
#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

Omar791
grazie mille per l'aiuto!!!!!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.