[C] Itipi di base

Messaggioda Omar79 » 12/02/2017, 14:41

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)
Codice:
#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;
   
}
Omar79
Junior Member
Junior Member
 
Messaggio: 16 di 126
Iscritto il: 11/12/2016, 10:07

Re: [C] Itipi di base

Messaggioda Luc@s » 12/02/2017, 18:45

Codice:
#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:

Codice:
$ ./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
----
Luca Francesca <[email protected]>
System Engineer Lead @ Salesforce

Info: https://www.linkedin.com/in/lucafrancesca/
Luc@s
Senior Member
Senior Member
 
Messaggio: 1456 di 1955
Iscritto il: 01/05/2006, 17:21
Località: Irlanda

Re: [C] Itipi di base

Messaggioda Omar79 » 12/02/2017, 19:37

grazie mille per l'aiuto!!!!!
Omar79
Junior Member
Junior Member
 
Messaggio: 17 di 126
Iscritto il: 11/12/2016, 10:07


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite