#include <stdio.h>
#include <stdlib.h>
#define TAM 250
#define SUSTENIDO '#'
#define QTDE_TECLAS 10
#define QTDE_TOQUES 6

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	
	char msgCifra[TAM];
	int ndxCifra;
	char msgDecifrada[TAM];
	int ndxDecifra;
	char anterior;
	int tecla;
	int qtdeToques;
	
	int iCont, jCont;
	
	char teclado[QTDE_TECLAS][QTDE_TOQUES]=
				       {{'\0', ' ', '0', '\0', '\0', '\0'},
						{'\0', '1', '\0', '\0', '\0', '\0'},
						{'\0', 'a', 'b', 'c', '2', '\0'},
						{'\0', 'd', 'e', 'f', '3','\0'},						
						{'\0', 'g', 'h', 'i', '4','\0'},
						{'\0', 'j', 'k', 'l', '5','\0'},						
						{'\0', 'm', 'n', 'o', '6','\0'},
						{'\0', 'p', 'q', 'r', 's', '7'},						
						{'\0', 't', 'u', 'v', '8','\0'},
						{'\0', 'w', 'x', 'y', 'z', '9'}						
						};
	
	
	puts("Informe a mensagem decifrada");
	gets(msgDecifrada);

	ndxCifra = 0;
	anterior = '\0';
	for(ndxDecifra = 0; msgDecifrada[ndxDecifra]; ndxDecifra++){
		tecla = -1;
		qtdeToques = -1;
		for(iCont = 0; iCont < QTDE_TECLAS && tecla < 0; iCont++)
			for(jCont = 0; jCont < QTDE_TOQUES && tecla < 0; jCont++)
				if(msgDecifrada[ndxDecifra] == teclado[iCont][jCont]){
					tecla = iCont;
					qtdeToques = jCont;
				}
		if(anterior == tecla)
			msgCifra[ndxCifra++] = SUSTENIDO; 
		for(iCont = 0; iCont < qtdeToques; iCont++)
			msgCifra[ndxCifra++] = tecla + '0'; 
		anterior = tecla;	 
   }
   
   msgCifra[ndxCifra] = '\0';
   
   puts(msgCifra);
   
   
}
