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?
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!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; }![]()
![]()
![]()
ecco l'output con 3:
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?codice:3 ...--....-.....-....--...--.. 30 -------------------------------- Process exited with return value 0 Press any key to continue . . .
grazie in anticipo![]()

Rispondi quotando
, grazie mille ho risolto mettendo

