Traduttore di lingua in C

di Anonimizzato9462 il
12 risposte
Salve ragazzi, devo sviluppare un programma in C che traduca una frase dall'inglese all'italiano, vi posto di seguito la traccia del programma:
Si vuole simulare la gestione di un dizionario che permette di tradurre un vocabolo
dalla lingua Inglese a quella Italiana. Il dizionario è indicizzato tramite le lettere
dell’alfabeto e ad ogni vocabolo è associato il corrispondente termine in Italiano.
Permettere all’utente di:
Inserire una frase in Italiano (i termini sono separati da uno spazio). Il
programma riconosce i termini e se presenti nel dizionario li traduce in
Inglese.
Qualcuno può darmi una dritta?
Grazie a tutti dell'aiuto!

12 Risposte

  • Secondo me devi implementare una struttura dati chiamata trie
    http://en.wikipedia.org/wiki/Tri
    questo ti semplifica molto la struttura del dizionario e velocizza anche il sistema di ricerca. Se poi non devi fare delle cose avanzate anche un vettore di stringhe può bastare anche se non è il + immediato.
  • Ciao grazie della risposta, perdonami ma sto alle prime armi, un sintassi del genere è corretta? La posso implementare in una function?
    char a[]={'a'=='in una'};
    char f[]={'floor'=='piano'};
    char h[]={'house'=='casa'};
    char i[]={'I'=='A me', 'in'=='in'};
    char t[]={'three'=='tre'};
    char w[]={'with'=='con', 'would'=='piacerebbe'};
    
  • No, credo che ti serve una struttura dove devi tenere la corrispondenza tra le due stringhe.
    
    struct
    {
       char ita[30];
       char eng[30];
    }
    
    questo è il modo semplice ma non quello efficace. Creando poi un vettore di strutture di quel tipo avrai il tuo vocabolario.
  • Nelle stringhe che hai postato tu devo inserire valori preimpostati da me (come ho fatto sopra io) oppure c'è un altro procedimento?
  • Tu metti le stringhe in ita e in eng. Poi fai la ricerca nelle strutture per vedere se c'è la stringa immessa in input. Una volta trovata hai anche la corrispondenza.
  • skynet ha scritto:


    tu metti le stringhe in ita e in eng. Poi fai la ricerca nelle strutture per vedere se c'è la stringa immessa in input. Una volta trovata hai anche la corrispondenza.
    ho capito la tua idea, ma la traccia dice che i vocaboli devono essere indicizzati secondo l'alfabeto italiano. Questo non vuol dire che devo creare un array per ogni lettera dell'alfabeto immettendoci i vari termini da analizzare singolarmente?
  • Questo è l'inizio di un dizionario in italiano, indicizzato proprio secondo l'alfabeto.
    
    a
    abaca
    abache
    abachi
    abacista
    abaciste
    abacisti
    abaco
    abaliena
    abalienando
    abalienano
    abalienare
    abalienarono
    abalienato
    abalienava
    abalienavano
    abalienazione
    
    Non significa che devi creare un array x agni lettera ma un array grande dove dentro ci sono tutte le parole del dizionario.

    Se proprio vuoi fare l'indicizazzione puoi tenere un array di 21 puntatori dove ognuno punta alla prima parola che inizia con una lettera diversa.
  • Sei gentilissimo grazie! continuerò sulla strada che mi hai consigliato
  • Perdonami, io ho creato due array contenente sia i termini in italiano che in inglese, ora come faccio a "tradurre" i termini? come creo la corrispondenza tra i termini in inglese e quelli in italiano? Grazie
  • Tu hai una struct del tipo che ti ha spiegato Skynet , quindi ad ogni parola italiano hai la paroal inglese corrispondente . Quindi , data una parola italiano devi cercarla nel tuo array di struct , quindi trovare la posizione in cui si trova :
    
    esempio la parola ciao si trova nella posizione i quindi la parola corrispondente sarà 
    Dizionario[i].eng  ( dove dizionare è un array di struct , statico o dinamico che sia ) 
    
  • Scusa perchè utilizzare una struct per dati omogenei? un array contenente tutti i vocaboli non è meglio?
  • Così che la corrispondente parola inglese si troverà nella stessa posizione di quella italiana.
Devi accedere o registrarti per scrivere nel forum
12 risposte