|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2003
Città: Tunaland
Messaggi: 509
|
[C][sono niubbo!] traduttore in C
Ciao! ho un problema con un programma da sviluppare per scuola... devo creare un traduttore italiano-inglese e viceversa simile al Dos (si dice prompt?) solo che ho un problemino... non so come confrontare la parola scritta dall'utente con il vettore contenente le parole traducibili! praticamente la parola dovrebbe venireconfrontata con tutte le parole contenute nel vettore e, una volta trovata qualla uguale, un contatore mi dovrebbe dare la posizione di essa che corrisponde alla traduzione nell'altro vettore!
Sono stato spiegato? ![]() ![]() ![]() ![]() Grazie in anticipo a chi mi darà una mano! ![]() ![]() ![]() ![]() Codice:
#include<stdio.h> main(){ int i,j,z,it,en; char lang[50], ita[]="ita", eng[]="eng", parita[100]; char ital[10][1000]={"ciao\0","bello\0","brutto\0"}; char engl[10][1000]={"hello\0","biutiful\0","orribol\0"}; do{ printf("Trad>"); scanf("%s", &lang); z=mystrcmp(lang, ita); if(z==0) it=1; else{ z=mystrcmp(lang, eng); if(z==0) en=1; } } while(z!=0); //fin qui sembra andare... poi userò strcmp di string.h if(it==1){ printf("Trad>ita-eng>"); scanf("%s", &parita); //"parita" è la variabile contenente la parola da tradurre //for(i=0;i<3;i++){ come si fa? z=mystrcmp(parita, *ital); if(z==0) printf("%s", eng[i]); //} } else if(en==1) printf("Trad>eng-ita>"); //qua poi ci andra lo stesso codice di ita ma con eng } int mystrcmp(char *str1, char *str2){ int i; for(i=0;(str1[i]!='\0')&&(str2[i]!='\0');i++) if(str1[i]>str2[i]) return 1; else if(str1[i]<str2[i]) return -1; return 0; }
__________________
Ho fatto un prog Java per cellulari Ultima modifica di SkyNut : 05-05-2005 alle 13:27. |
![]() |
![]() |
![]() |
#2 | |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
|
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
![]() per confrontare due stringhe avete già usato la libreria string.h o dovi farlo "mano"? per l'identazione sono d'accordo ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Non e' per qualcosa, ma ogni volta di mettersi a lavorare con un pezzo di codice bisogna mettersi a fare i tipografi per sistemare il codice da renderlo lavorabile... Un po di comprensione pure per chi risponde...
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2003
Città: Tunaland
Messaggi: 509
|
scusate...
![]() @ Fenomeno si posso usare string.h e mi sa tanto che è meglio usarla... anzi... per forza! scusate ancora e grazie mille! ![]() ![]() ![]() ![]()
__________________
Ho fatto un prog Java per cellulari |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
![]() ps: ma come scrivi bello in inglese??? ![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
![]() |
![]() |
![]() |
#8 | ||
Senior Member
Iscritto dal: Feb 2003
Città: Tunaland
Messaggi: 509
|
Quote:
![]() Quote:
![]() ![]() ![]() Ciau! ;D
__________________
Ho fatto un prog Java per cellulari |
||
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
ah deciditi ti hanno detto di usare la funzioni presenti in string.h o vuoi farla te la procedura?? perchè in quello che vedo la fai tu.
Poi le procedure vanno messe sopra la funzione main oppure sotto (io detesto questo stile) dichiarando i prototipi sotto l'inclusione delle librerie ![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Feb 2003
Città: Tunaland
Messaggi: 509
|
Quote:
![]() stile? quale stile? io di stile non ne ho! ghghgh! perdono non sono un esperto... grazie dei consigli almeo miglioro! ![]()
__________________
Ho fatto un prog Java per cellulari |
|
![]() |
![]() |
![]() |
#11 |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Sto lavorando al tuo problema. Dammi un po di tempo perche' devo andare a fare pure la spesa. Prima di perdere tempo, mi dici al volo se hai fatto i puntatori? No perche' dichiarare delle stringhe come:
Codice:
char eng[]="eng"; char ita[]="ita"; Ti includo anche dei commenti (di stile e di funzionamento). Lo stile e' personale, ma bisogna acquisirne uno. Il funzionamento un po meno, ma puo' dipendere dallo stile. Rispondimi al volo prima che mi chiudono i supermercati ![]() |
![]() |
![]() |
![]() |
#12 | |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
![]() La si deve usare o no? Perche' io dopo che ti ho presentato il programma non voglio sentire niente ![]() |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Codice:
/* Programma realizzato da Fenomeno85. Questo programma permette di effettuare delle traduzioni dall'italiano all'inglese e viceversa. */ #include <stdio.h> #include <conio.h> #include <string.h> #include <windows.h> #define NWORD 10 #define LENGTH 1000 /* this function permits to translate the word */ int translate (char lang[], int type){ char ital[NWORD][LENGTH]={"ciao","bello","brutto"}; char engl[NWORD][LENGTH]={"hello","beautiful","orribol"}; int i; for (i=0;i<NWORD;i++){ if (type == 1){ if (strcmp (lang, engl[i])==0){ printf ("Trad>ita:%s",ital[i]); return (1); } } else{ if (strcmp (lang, ital[i])==0){ printf ("Trad>:%s",engl[i]); return (1); } } } return (-1); } /* function main */ int main (void){ char scelta; int ris; char lang [LENGTH]; printf ("\nInsersci stringa:\t"); fflush (stdin); gets (lang); do{ printf ("\nPremi 1 per tradurre in ITA, 2 pe ENG\n"); printf ("\nScelta:\t"); fflush (stdin); scelta = getchar (); }while (scelta != '1' && scelta !='2'); if (scelta == '1') ris = translate (lang,1); else ris = translate (lang,2); if (ris == -1) { printf ("\nThe word doesn't exist in the database.\n"); } printf ("\n\n\n"); system ("PAUSE"); return (0); } ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Feb 2003
Città: Tunaland
Messaggi: 509
|
![]() ![]() Fenomeno... sei un fenomeno! ![]() ![]() ![]() ![]() Quote:
![]() ![]() si i puntatori li ho fatti... non li ho capiti troppo ma li ho fatti... per la dichiarazione delle stringhe banali.. si lo sò... non è bello quello che ho scritto... ma non sapevo come farlo! ![]() vai vai a far la spesa! ![]() ![]() ![]() Grazie 1000 ragazzi siete fin troppo gentili! ![]()
__________________
Ho fatto un prog Java per cellulari |
|
![]() |
![]() |
![]() |
#15 |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Si pero' a lui se non sbaglio serviva una versione interattiva che faceva scegliere la traduzione da seguire on the fly.
In questa versione hai tre comandi: ita --> Passa alla modalita italiano->inglese eng --> Passa alla modalita' inglese->italiano exit --> Esce dal traduttore Per ulteriori chiarimenti sono a disposizione. Nota: Sarebbe meglio usare i puntatori con le stringhe, ma non li ho usati perche' non mi hai risposto e ho assunto che non li avete fatti. Ho cercato di rendere il codice il piu' leggibile possibile. Ovviamente ci sono margini di miglioramento infiniti, ma visto che e' un esercizio scolastico meglio focalizzarsi sulla risoluzione del problema. Il file in allegato. P.S: windows.h e conio.h sono header specifici Microsoft, non ti conviene usarli ma sforzarti di usare solo funzioni del C standard (non sono presenti nello standard), anche se Fenomeno li ha usati solo per una funzione. Ho cercato di mantenere il pezzo di codice che stavi scrivendo tu in modo da non renderti troppo difficile la lettura. Il ciclo do-while va avanti fino a quando non digiti exit sulla riga di comando, nel qual caso si esce dal ciclo e si ritorna 0 alla funzione main() (cioe' valore di uscita corretto). Ciao Ultima modifica di mjordan : 05-05-2005 alle 18:11. |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
non mi sembra allucinante come versione
![]() cmq per la modifica con le tre scelte non la vedo così atroce vuole che esistano tre comandi?? basta modificare una minchiata te ![]() ps: windows.h serve solo per system, conio.h per gets molto meglio che quella funzione del cavolo di scanf ... il migliore sarebbe fgets ![]() Codice:
/* Programma realizzato da Fenomeno85. Questo programma permette di effettuare delle traduzioni dall'italiano all'inglese e viceversa. */ #include <stdio.h> #include <conio.h> #include <string.h> #define NWORD 10 #define LENGTH 1000 /* this function permits to translate the word */ int translate (char lang[], int type){ char ital[NWORD][LENGTH]={"ciao","bello","brutto"}; char engl[NWORD][LENGTH]={"hello","beautiful","orribol"}; int i; for (i=0;i<NWORD;i++){ if (type == 1){ if (strcmp (lang, engl[i])==0){ printf ("Trad>ita:%s",ital[i]); return (1); } } else{ if (strcmp (lang, ital[i])==0){ printf ("Trad>:%s",engl[i]); return (1); } } } return (-1); } int menu (void){ char scelta[LENGTH]; int ris; char lang [LENGTH]; printf ("\nInsersci stringa:\t"); fflush (stdin); gets (lang); do{ printf ("\n'ita' per tradurre in ITA, 'eng' pe ENG e 'exit' per uscire\n"); printf ("\nScelta:\t"); fflush (stdin); gets (scelta); }while (strcmp(scelta,"ita")!=0 && strcmp(scelta,"exit")!=0 && strcmp(scelta,"eng")!=0); if (strcmp(scelta,"ita")==0) ris = translate (lang,1); else{ if (strcmp(scelta,"eng")==0) ris = translate (lang,2); else return (0); } if (ris == -1) { printf ("\nThe word doesn't exist in the database.\n"); } } /* function main */ int main (void){ int ret; do { ret = menu (); } while (ret != 0); return (1); } ![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#17 | ||||
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
Quote:
![]() Quote:
Quote:
![]() |
||||
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
E' una osservazione giusta o posso dire di nn capire niente di ciò che studio? Thx. RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
![]() ![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() THX!!
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:20.