ciao a tutti, sto scrivendo un programma relativamente semplice, che mi sta creando un po' di confusione in testa, potete dirmi perfavore cosa c'è che non va?
codice:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
int read(const char *word);
int main(void)
{
/* da morse[1] a morse[26] lettere, da morse[27] a morse[36] numeri,
ultimo è lo spazio */
char morse[38][5]={" ",".-","-...","-.-.","-..",".","..-.","--.","....","..",
".--","-.-",".-..","--","-.","---",".--.","--.-",".-.",
"...","-","..-","...-",".--","-..-","-.--","--..","----",
".----","..--","...--","....-",".....","-....","--...",
"--..","----."," "};
char word[100];
int i[100];
int n;
gets(word);
while(word[n]!='\0'){ //assegna "j(nella funzione)" a i[n]
i[n]=read(word[n]);
n++;
}
for(n=0;i[n]!='\0';n++){ //determina i caratteri tramite ASCII e li mette nella
if(i[n]>=65&&i[n]<=90){ //posizione giusta rispetto al vettore morse
i[n]-=64;
}
if(i[n]>=97&&i[n]<=122){
i[n]-=96;
}
if(i[n]>=48&&i[n]<=57){
i[n]-=21;
continue;
}
if(i[n]==32){
i[n]=37;
}
if(word[n]=='\0'){
i[n]=0;
}
}
for(n=0;i[n]!='\0';n++){ //scrive il morse
printf("%s ",morse[i[n]]);
}
for(n=0;i[n]!='\0';n++){ //semplicemente per controllo di i
printf("%d ", i[n]);
}
return 0;
}
int read(const char *word) //assegna i singoli caratteri di word a j
{
int j;
j=(char)word;
return j;
}
il problema viene quando immetto i numeri, ad esempio il numero 1 mi scrive sia morse[28] che morse[29], però nel for di controllo mi scrive solo 28, e con il numero 3 succede di peggio: mi scrive tutta la sfilza fino all'8!
ecco l'output con 3:
codice:
3
...--....-.....-....--...--.. 30
--------------------------------
Process exited with return value 0
Press any key to continue . . .
non so neanche a cosa sia dovuto perchè teoricamente legge le cifre immagazzinandole come char, cioè identicamente a come avviene con le lettere con le quali però funziona a perfezione!! qualcuno può aiutarmi perfavore?
grazie in anticipo