Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99

    [C] un aiutino please con i codici a morse?

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In una stringa devi sempre prevedere il terminatore NULL.

    Se hai una stringa di 5 caratteri (ad esempio .----) allora devi prevederne [6] nella dichiarazione
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    hai ragione mi ero completamente dimenticato , grazie mille ho risolto mettendo
    codice:
    char morse[38][6]={...}
    nella dichiarazione!

    P.S.: curiosità, quindi in pratica quando inserivo un numero la cui stringa corrispondente era di 5 caratteri, lui non trovava il null e andava avanti fino a che non lo trovava prendendo le successive stringhe come la continuazione di quella precedente?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da glukosio
    P.S.: curiosità, quindi in pratica quando inserivo un numero la cui stringa corrispondente era di 5 caratteri, lui non trovava il null e andava avanti fino a che non lo trovava prendendo le successive stringhe come la continuazione di quella precedente?
    Sì, esatto ... e da questo fatto avresti dovuto capire cosa mancava e dedurre la soluzione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    Originariamente inviato da oregon
    Sì, esatto ... e da questo fatto avresti dovuto capire cosa mancava e dedurre la soluzione ...
    Sono abbastanza nuovo nella programmazione ed esperienze come questa mi mancavano. Sto studiando su libro e non tratta di ogni singolo problema riscontrabile...
    Ovviamente sbagliando si impara, perciò la prossima volta starò più attento su questo fronte, e magari andando avanti così piano piano avrò raggiunto un automatiemo per maneggiare al meglio sia il linguaggio che gli eventuali problemi
    Comunque grazie ancora dell'aiuto!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da glukosio
    Sono abbastanza nuovo ...
    Sì ... il mio era solo un suggerimento per il futuro ...

    Comunque grazie ancora dell'aiuto!
    Di nulla ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.