Domanda tradutttore in c++

Stato
Discussione chiusa ad ulteriori risposte.

Pr0Ryder93

Utente Electrum
14 Gennaio 2010
264
67
14
174
int condizione;
int dog;
int cane;
int cat;
int gatto;
int flag;
int bandiera;
int hello;
int ciao;
cout << " scegli cosa fare " << endl;
cout << "1)dog" << endl;
cout << " " << endl;
cout << "2)cat" << endl;
cout << " " << endl;
cout << "3)flag" << endl;
cout << " " << endl;
cout << "4)hello" << endl;
cin >> condizione;
switch (condizione){
case 1:
cout << "immetti la parola da tradurre" << endl;
cin >> dog;
cout << " traduzione in corso... " << ("cane") << endl;
break;
case 2:
cout << "immetti la parola da tradurre" << endl;
cin >> cat;
cout << " traduzione in corso... " << ("gatto") << endl;
break;
case 3:
cout << "immetti la parola da tradurre" << endl;
cin >> flag;
cout << " traduzione in corso... " << ("bandiera") << endl;
break;
case 4:
cout << "immetti la parola da tradurre" << endl;
cin >> hello;
cout << " traduzione in corso... " << ("ciao") << endl;
break;
cout << "**********************************************************" << endl;
}
return 0;
}
 
mmm carino ma ci vuole molto lavoro per creare un buon dizionario anche molto ricco di vocaboli...
 
scusate ragazzi ma ho sbagliato il source giusto e questo #include<iostream>
using namespace std;
int main(){
int condizione;
int dog;
int cane;
int cat;
int gatto;
int flag;
int bandiera;
int hello;
int ciao;
cout << " scegli cosa fare " << endl;
cout << "1)dog" << endl;
cout << " " << endl;
cout << "2)cat" << endl;
cout << " " << endl;
cout << "3)flag" << endl;
cout << " " << endl;
cout << "4)hello" << endl;
cin >> condizione;
switch (condizione){
case 1:
cout << "immetti la parola da tradurre" << endl;
cin >> dog;
cout << " traduzione in corso... " << ("cane") << endl;
break;
case 2:
cout << "immetti la parola da tradurre" << endl;
cin >> cat;
cout << " traduzione in corso... " << ("gatto") << endl;
break;
case 3:
cout << "immetti la parola da tradurre" << endl;
cin >> flag;
cout << " traduzione in corso... " << ("bandiera") << endl;
break;
case 4:
cout << "immetti la parola da tradurre" << endl;
cin >> hello;
cout << " traduzione in corso... " << ("ciao") << endl;
break;
cout << "**********************************************************" << endl;
}
return 0;
}

--- Aggiornamento Post ---

mirko lo so che e carino ma mi sapresti dire come migliorarlo ?

--- Aggiornamento Post ---

tu giochi online mirko? io sono su nostale aL LIVELLO 30 SPADACCINO
 
Ultima modifica:
Comunque secondo me fila poco...

Anzitutto, per le versioni future, quando le parole saranno centinaia, ti conviene fare un .ini o un file che le contenga..
//Questo metodo non è efficace

Codice:
#include <iostream>
#include <string>
using namespace std;
int main()
{
    int azione;
    string parole[] = {"dog", "cat", "flag", "hello",};
    string replica[] = {"cane", "gatto", "bandiera", "ciao"};
    //nota bene come le parole in inglese occupino meno spazio...
    
    cout << "Scegli la parola da tradurre :\n";
    for(int i = 0; i<(sizeof(parole)/sizeof(string)); i++)
    {
            cout << i+1 << ") " << parole[i]<<" ..\n";
    }
           
        cin >> azione;
        if(azione <=4)
        cout << "\n... Traducendo... \n " << replica[azione-1] <<"\n";

 system("PAUSE");
}

Manco il mio metodo è efficace xD Infatti se hai due array di 100 parole, ti conviene fare una cosa del genere
//questo penso sia efficace
Codice:
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string cerca;
    string parole[] = {"dog", "cat", "flag", "hello",};
    string replica[] = {"cane", "gatto", "bandiera", "ciao"};
    //nota bene come le parole in inglese occupino meno spazio...
    
    cout << "Cerca la parola da tradurre :\n";
   
   cin >> cerca;
   int locazione = -1;
   for(int i = 0; i< (sizeof(parole)/sizeof(string)); i++)
   {
           if(parole[i] == cerca) locazione = i;
  }

if(locazione >= 0) cout << "... " << replica[locazione]<<"\n";
else cout << "\n Parola non trovata .-.\n"; 
        
        
        
    

 system("PAUSE");
}

Per renderlo ottimale al 100% dovresti usare la funzione UPPER_CASE(string).. che rende tuta la stringa maiuscola per evitare inconvenienti tra lettere xD...
Se non la trovi in qualche libreria, la potresti creare tu xD
Dovresti fare un array con tutte le minuscole e uno con tutte le corrispondenti maiuscole...
 
Ultima modifica:
se usassi std::map sarebbe tutto più facile: ricerca di parole più facile con find, possibilità di utilizzo di iteratori e altre cose carine...
in combinazione con std::vector potresti associare ad una singola parola più traduzioni...

se hai bisogno di un esempio e non ti basta la documentazione di map, find, e vector dillo :D
 
D4n13le il problema e che io il vector lo so usare ma solamente per linkare tutto il progetto in una string in questo modo
(non metto tutto il source) #include<vector>
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main() {
vector<string> v;
ifstream in("vector.cpp");
string linea;
while(getline(in,linea))
v.push_back (linea);
for(int i = 0 i< v.size(); i++)
cout << i << ": "<< v << endl;
}
 
non mi riferivo a questo...
una map è un abbinamento di coppie di valori, una è la chiave che identifica in modo univoco quella coppia, e l'altra invece è il valore della chiave... ciò si presta bene ad un dizionario, perchè ti permette di associare lo stesso elemento a più chiavi diverse... per esempio

ho un dizionario formato da:
[dog] → [cane]
[cat] → [gatto]
[home] → [casa]
[house] → [casa]
[yet] → [già, ancora]

come faccio a rappresentarlo?
la risposta è
Codice:
map<string, vector<string> >

una mappa formata da parole inglesi(chiavi) e una o più traduzioni italiane (vector<string>)
 
ti ho detto quali moduli usare, ti ho detto come usarli, ti ho dato la documentazione relativa...
cerca di farlo da solo, altrimenti a che serve? :D
 
Stato
Discussione chiusa ad ulteriori risposte.