Uebersetzungsprogramm
-
Moin. Wenn man sich jetz ein Programm schreiben will, das Wörter Übersetzen will (Wörterbuch) wie macht mann das am besten? Muss man sich für die Vokabeln eine Datenbank anlegen?
Denn für jedes Wort eine Variable anlegen und Sie dann immer Buchstabe für Buchstabe zu Vergleichen wäre Unsinn oder?

(Das wären ja an die 45.000 Variablen lol)
-
du kannst dir eine map<string,string> als Wörterbuch anlegen und dann darin deine Wörter suchen (vorwärts geht recht schnell, rückwärts ist aufwendiger):
map<string,string> dict_d2e;//deutsch->englisch dict_d2e.insert(make_pair("ich","I"); ... string dwort cin>>dwort; if(dict_d2e.find(dwort)!=dict_d2e.end() cout<<dwort<<" heißt auf Englisch "<<dict[dwort]<<endl; else cout<<"Wort nicht bekannt."<<endl;
-
Hi,
Die Frage ist was willst du übersetzten, nur Wörter?
Soll die Datenbank erweiterbar sein?
-und... und.. und...Im Grunde genommen bleibt dir nichts als ein Wörterbuch auf ein anderes abzubilden (ohne zu sehr darauf einzugehen, gibt auch andere Möglichkeiten - ein Lexikon, brauchst du aber immer).
Das macht man am besten mit einem Automaten oder Transduktor, je nach dem.
Der vergleicht dann die Eingabe, Wort drin? -> ausgabe.
Daür braucht man eine Variable, die der Eingabe.45.000 Wörter sind nich allzuviel. Da bräuchte man vielleicht nichmal eine Datenbank. Falls man mit Suffixvereinigung (e.g Trie) arbeitet wird alles recht klein...
Willste eins schreiben?
grüße
-
Ein Wort: Arrays (man sollte IMHO wissen, dass es das gibt, bevor man mit maps anfängt

-
Hatte mir mal überlegt ein Wörterbuch zuschreiben... Deutsch - Spanisch; Spanisch - Deutsch; Wir kamen da mal in der Schule drauf..also ein Freund und ich.. und dann haben wir halt mal angefangen zu überlegen wie man das anstellen könnte...
Das mit den Maps hört sich schon gut an...allerdings kenn ich mich mit Maps nicht gut aus...Das müsst cih mir dann erst einmal anschauen
Edit: Ja solen nur Wörter sein (erstmal)
-
das ist nicht allzu effektiv mit den maps!
bsp.:
Bau, Bauer, Bauhaus alles einzelne Einträge wären.
Sinnvoller ist es mit Suffix zusammenlegenung.
wir konstruieren einen nicht zyklischen-Automaten der von jedem Zustand nur einen anderen erreichen kann.
und klappern diesen dann ab.
siehe bild
http://home.arcor.de/Cyriz/Uni-Stuff/Trie.jpeg
dadurch wird das lexikon viel kleiner.
Die enzustände könnten dann einfache Strings sein und das Wort ausgeben.man erstellt sich einen repräsentativen Übergang
//ein übergang struct Transition { //wohin komme ich mit dem... int to; //...symbol char symbol; };dann eine Liste welche Zustände speichert
//die liste mit den Übergängen typedef list<Transition> Transition_list };und zu guter letzt einen Vektor, welche die Startzustände + eventuelle Enzustände representiert
///die Liste mit den Zuständen und ein bool für Enzustand true oder false ///das kann dann ja durch einen String ersetzt werden um das Übersetzte Wort ///bspw. auszugeben. soll ja nur der veranschaulichung dienen typedef pair<Transition_list,bool> Element vector<Element> };nun brauch man natürlich noch funktionen die das Wörterbuch speichern.
aber das Grundprinzip dürfte doch klar sein.