Ci sarebbe una maniera alternativa
si parte da una forma normalizzata
ovvero la conversione in maiuscole e l'esclusione dei caratteri “erronei” è già stata fatta
una funzione che riceve in ingresso il singolo carattere lettera maiuscola da convertire
e che restituisce un intero (anche a 8 bit) che rappresenta il numero della tastiera del telefono che corrisponde alla lettera
int converti (char lettera)
{
static int sequenza[]={3,3,3,3,3,4,3}; // la “capacità” di ogni singolo tasto
for (int c=0,int i=0; i< sizeof sequenza/sizeof sequenza[0]; i++)
{
c=c+sequenza[i];
// volendo invece di fare il conto volta per volta si potrebbe mettere nell'array direttamente il risultato
if ((lettera - A) <= c)
{
return 2+i;
}
}
return 9;
}
fondamentalmente “conta sulle dita” il carattere fino ad arrivare al tasto ‘9’
i tasti 2 3 4 5 6 contengono 3 lettere
il tasto 7 ne contiene 4
il tasto 8 ne contiene tre
e le restanti sono nel nove
algoritmo un po' banale, ma dovrebbe andare
a propsito, non provato e non collaudato, scritto al volo qui