[ Foro de C++ ]

codigo ascii ???

13-Apr-2011 16:08
oscar gomez
0 Respuestas

Buenos Dias profesor Nacho Cabanes.
Gracias, gracias gracias gracias....por su generosa ayuda que tanto nos brindas.

Profesor es que no entiendo muy bien lo del codigo ascii en este fragmento de codigo y me gustaria mucho recibir como siempre tu ayuda para ver si puedo entender de que se trata o como se trabaja en estos casos.
La cuestion es en el siguiente codigo se pretende dado un numero telefonico combinado de letras y digitos se imprima el numero formado de digitos solamente.Las relaciones letras-digitos son dadas a continuacion:

2 ABC, 3 DEF, 4 GHI, 5 JKL, 6 MNO, 7 PQR, 8 STU, 9 VWX , 0 YZ

EJEMPLO:
dado el numero telefonico 444CINE la salida del programa es:
4442463


#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main()
{
 char telefono[10]
 int i;
 scanf("%s",telefono);
 
 for(i=0;i<strlen(telefono);i++)
  {
    if(!isdigit(telefono[i])
     {
       telefono[i]=(((telefono[i]-'A')/3)+2)%10;
       telefono[i]+=48;
      }
     printf("%c",telefono[i]);
   }
 return 0;
}

BIEN YO ENTIENDO HASTA CUANDO SE PREGUNTA SI EL CARACTER DE telefono[i] no es un digito, es decir ...if(!isdigit(telefono[i])

lo que no entiendo nada es que se hace con las dos lineas:
       telefono[i]=(((telefono[i]-'A')/3)+2)%10;
       telefono[i]+=48;
por que se le resta 'A'??
y por que se incrementa telefono[i]+=48;
por que el 48? en fin profesor que me gustaria muchisimo si me puedes ayudar a entenderlo, es que es un ejercicio resuelto de un libro que investigando mas para hacer ejercicios di con el.
Mil gracias por tu ayuda.




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)