Wörterbuch programmieren ?!?!?!
-
Hallo zusammen , ich bin Neueinsteiger in C++ , aber hab' früher in Java programmiert .Jetzt will ich ein Wörterbuch programmieren , und hab keine Idee, wie ich anfangen soll. Ich hab' mir gedacht, wenn man alles mit "if else" macht, dann dauert es ewig.Vielleicht kann jemand mir einen Tipp geben oder was empfehlen .Ich bedanke mich im Voraus
und noch eine Frage dazu , ob man .cpp-Datei später in ein .exe-Datei umwandeln kann....
-
ja natürlich kann eine cpp in eine exe "umgewandelt" werden. Genau das passiert doch beim kompilieren und linken...
Zum Wörterbuch: Der Kern könnte zB eine map<string, string> sein.
-
hi !
wie viele wörter soll denn das wörterbuch haben ?
willst du die alle selbst eintippen ?
-
Ich hoffe mal, dass er vor hat die irgendwie einzulesen mittels einer Datei oder so.
Sonst ist die Übung fast um sonst.
-
Am besten nehme man eine Datei, wo alle Wörter drin stehen. Die Datei liest man dann aus... Dann kann man mit einer for-Schleife jedes Wort auf seine Richtigkeit überprüfen, indem man es eins nach dem anderen mit der Liste abgleicht.
-
Die Woerter wuerde ich in eine Datenbank abspeichern. sqlite oder noch besser, eine lib nehmen die fuer alle SQL-Datenbanken geeignet ist.
Das schwerste an einem Woerterbuch ist ja nicht das Programmieren, sondern die Woerter in die Datenbank einzugeben.
Du koenntest auch das RFC2229 benutzen und so die Datenbank von Dictionary Servers benutzen. Z.b. http://www.dict.org/bin/Dict
(ich wusste auch bis jetzt noch gar nicht das es sowas gibt.)
-
@DEvent, das wäre für Bakuer eventuell etwas viel für den Anfang, vielleicht wäre eine Text-Datei doch erstmal besser. Aber die Seite ist cool, wusste ich auch noch nicht
-
Ungefähr mehr als 2000 Wörter ....
Ich hab' schon alle Wörter in Word-Datei eingetippt , kann man irgendwie Word-Datei durchlafen lassen und passendes Wort herausfinden ? Könnt ihr einen Tipp geben wie man es machen soll ?
-
du kannst dateien zum Beispiel mit Hilfe von fstream ein-/auslesen.
mfg kaffee
-
In einer Word-Datei bringt dir das nichts. Word speichert viel Zeichen zur
Formatierung des Textes usw. mit. Nimm eine einfache Txt-Datei her!
-
DEvent schrieb:
Die Woerter wuerde ich in eine Datenbank abspeichern. sqlite oder noch besser, eine lib nehmen die fuer alle SQL-Datenbanken geeignet ist.
Das schwerste an einem Woerterbuch ist ja nicht das Programmieren, sondern die Woerter in die Datenbank einzugeben.
Das kommt auf den Verwendungszweck an. Bei einem Backend für eine Schnittstelle wie du sie hier verlinkt hast, ist eine Datenbank ganz günstig. Für andere Zwecke, speziell wenn man mit dem Wörterbuch im Programm arbeiten will, bieten sich Automaten oder lernfähige HMMs eher an. Ohne zu wissen wozu der ganze Spaß gemacht werden soll, kann man da definitiv nichts sinnvolles dazu sagen. Aber eines steht hier denke ich wohl fest: für Bakuer ist das alles absolut nichts ...
Eine einfache Wörterliste mit mehreren zehntausend Einträgen zu erstellen ist nebenbei auch nur eine Sache von maximal wenigen Minuten.Bakuer schrieb:
Ich hab' schon alle Wörter in Word-Datei eingetippt , kann man irgendwie Word-Datei durchlafen lassen und passendes Wort herausfinden ? Könnt ihr einen Tipp geben wie man es machen soll ?
Ja, du drückst einfach Strg+F, gibst das gesuchte Wort ein und drückst Enter. Im Anschluss kannst du unter http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/Word97-2007BinaryFileFormat(doc)Specification.pdf eine kleine Gute-Nacht-Lektüre herunterladen und lesen, welche dir eine Erkenntnis bringen sollte
Mit dieser Erkenntnis schließlich kopierst du alle deine Wörter in eine einfache Textdatei und liest sie mit den genannten Standardmethoden von C++ aus und gut ist.
-
Bakuer schrieb:
Ungefähr mehr als 2000 Wörter ....
Ich hab' schon alle Wörter in Word-Datei eingetippt , kann man irgendwie Word-Datei durchlafen lassen und passendes Wort herausfinden ? Könnt ihr einen Tipp geben wie man es machen soll ?was für eine art wörterbuch wird das, sowas wie ein duden, oder ein übersetzungs-wörterbuch ?
dem entprechend könntest du dir deine datentypen, welche die datenstruktur zum abspeichern repräsentieren, überlegen.
du kannst die datei im textformat abspeichern und dann einlesen.
-
Sorry, dass ich so viele Frage stelle , aber ich kapiere eins net
, stellen wir vor dass unser Programm alle Wörter durch geht , also ganze *.text und findet gesuchtes Wort , und wie gibt er übersetzung von diesem Wort ?
z.B wenn man in Babylon "hören" auf Deutsch schreibt , kriegt man auf Englisch "listen" zurück .....
P.S ich will was ahnliches wie Babylon programmieren, aber bissle klein und nur mit einem Bibliothek , z.B Deutsch-Englisch ...
Ich bedanke mich bei euch für eure Antworten
-
Bakuer schrieb:
...stellen wir vor dass unser Programm alle Wörter durch geht , also ganze *.text und findet gesuchtes Wort , und wie gibt er übersetzung von diesem Wort ?
...
na, das muss doch irgendwo gespeichert sein. in irgnend einer datei muss z.b. stehen
<Suchwort>
<Übersetzung 1>
<Übersetzung 2>
.
.
.
<Redewendung 1> // eventuell
<Redewendung 2>
<Redewendung 3>
.
.
.
<Zusammensetzung 1> // eventuell
<Zusammensetzung 2>
<Zusammensetzung 3>.
.
.
<Suchwort-Ende>konkret:
// Datei Deutsch-English.txt
.
.
.
<hören>
<listen>
<hear>
.
.
.
<hören - ende>
.
.
.Um die Datein da rein zu bekommen, kannst du:
- alles selbst eintipppen
- bestehende wörterbücher importieren
- einen wörterbuch-client programmieren
http://en.wikipedia.org/wiki/DICT_client
-
Könnte man etwa so machen:
enum Language { GERMAN, ENGLISH, FRENCH }; struct Word { int id; // Worte mit der gleichen Bedeutung haben die gleiche id Language lang; std::string text; }; std::vector<Word> dictionary;
Du musst dann nur noch die entsprechenden Suchfunktionen implementieren
Im file kannst du die Daten so speichern:
text lang id ---------------- öffnen 0 0 open 1 0 ouvrir 2 0 reden 0 1 speak 1 1 parler 2 1
-
Da kannst dann gleich eine map< pair<int,int>, string> nehmen. Also eine map die als Schlüssel eine Kombination aus id und Sprache hat und als Wert das Wort.