Eigenes Wörterbuch programmieren
-
Hallo,
seit ein paar Monate lerne die Sprache C.
Um mein Verständnis in dieser Sprache zu erleichtern, will ich gerne ein Programm selbst machen, wo ich zuerst die Definiton von einem Wort z.b. "Array" schreibe und dann die Bedeutung kommt.
Ich habe mir überlegt, sowas mit der Switch Anweisung zu machen, aber ich weiss nicht, wie das richti wäre z.b.
#include <stdio.h>
int main()
{
char a;printf("Das ist ein Wörterbuch\n\n");
printf ("Schreiben Sie bitte ein Wort");
scanf ("%c", &a);switch (a)
{
case 'Arbeitsspeicher': printf ("Arbeitsspeicher ist...\n\n");
break;default...
}
ich hoffe, Sie können mir weiterr helfen.
Danke
-
Ein char ist ein einzelnes Zeichen, kein String (Zeichenkette)! Wenn du einen String abbilden willst, musst du in C ein Array von char's erstellen. Probier es mal so:
int main() { char a[1024]; //jetzt ist es ein Array, das 1024 Zeichen fassen kann printf("Das ist ein Wörterbuch\n\n"); printf ("Schreiben Sie bitte ein Wort"); scanf ("%s", a); //hier %s für einen String benutzen, bei %c liest er nur ein Zeichen ein //switch kannst du hier nicht benutzen. Dafür sind nur numerische Werte erlaubt //switch (a) // //{ //case 'Arbeitsspeicher': printf ("Arbeitsspeicher ist...\n\n"); //break; //default... //Stattdessen kannst du mit strcmp/stricmp arbeiten (versuch es mal selbst) }
-
a ist bei dir ein einzelner char, sollte aber ein Array sein. scanf liest eine Zeichenkette dann mit %s ein, mit strcmp kannst du vergleichen.
char a[80]; printf("Das ist ein Wörterbuch\n\n"); printf ("Schreiben Sie bitte ein Wort\n"); scanf ("%s", a); if(strcmp(a,"Text")==0) { puts("\"Text\" wurde eingegeben"); }
-
char words[MAX_Words][MAX_L]; char bedeutungen[MAX_WORDS][MAX_Bedeutungen][MAX_L]; int index_wort;
ein dreidimensionales feld weil: index des wortes, index der bedeutung, bedäutung selber.
ein wort kann mehrere bedeutungen haben. ev. noch ein 3. feld vom typ integer um die anzahl der bedeutungen für das jeweilige wort zu speichern... sprich:
int Anz_Bedeutungen[MAX_Words]; //eindimensional weil ja nur ein wert gespeichert werden muss
und beim auslesen ev. so:
printf("Wort: %s\n", words[index_wort]); for(i=0; i<Anz_Bedeutungen[index_wort]; i++) printf("Bedeutung: %s\n", bedeutungen[index_wort][i]);
hoffe das hilft...
und wegen dem vergleichen eines strings ein tipp: sortiere die wörter in words[][], dann kannst du nämlich beim vergleichen einfacher vorgehen (schneller in gewissen hinsichten)... ausser du verwendest standard funktionen, doch um zu verstehen wie diese funktionieren und damit du dein wissen in strings aufbessern kannst ist es ggw. besser wenn du diesen algorithmus selber schreibst... natürlich mit hilfe
-
Das riecht ja förmlich nach einer verketteten Liste...
Die Elemente sind dann das Wort, die Bedeutung und noch ein paar Pointer, wie man halt Lust hat die Elemente zu verknüpfen.
-
ja wär auch ne möglichkeit... sogar effizienter wenn mans richtig macht...
-
Schaut euch seinen Code noch mal genau an und überlegt dann, ob es wirklich sinnvoll ist, ihm mit einer verketteten Liste zu kommen. Er steht gerade ganz am Anfang und will vermutlich einfach eine Lösung, die einen schnellen Erfolg garantiert und seinen Kenntnisstand nicht völlig verlässt.
-
seit ein paar Monate lerne die Sprache C.
Ich dachte da könnte man annehmen dass man wenigstens von verketten Listen schon einmal etwas gehört hat. Und mit copy & paste hat man das in 30min.
Wenn du ein WörterBuch Programmieren willst, solltes du dich noch ein bisschen mit I/O vertraut machen, um wenigstens die Wöter in eine Datei zu speichern.
Funktionen wären: fopen,flose,fgets,fputs,fprintf,fscanf,fread,fwrite, was dir halt am meisten zusagt.
-
Ich komme gerade von der FH und schreibe ich bis jetzt eine Antwort.
Vielen Dank für die ganzen Antworten. Allerdines kenne ich mich noch nicht gut aus, mit Arrays und Strings. Ich lese gerade mehr über dieses Kapitel von Arrays, Pointer, Strings usw. Sobald ich mit dem Thema vertraut bin, schicke ich euch eine Antwort zu. Ich könnte Copy Paste machen von verschiedene Quellcode, um das Wörterbuch zu machen. Aber ich will gerne, es genau verstehen.
Vielen Dank.
-
also doch strings und arrays =b
@_matze: es war ja nur ein vorschlag von ihm und ich hab halt auch nochmals meinen senf dazugegeben :xmas1:
@mercadom: wenn du hilfe brauchst mit den arrays --> einfach melden, hab ab kommenden wochenende 3 wochen zeit xD :xmas2: :xmas2:
-
Ich könnte dir einen CrashKurs in Listen geben und das dann in einer Baustruktur abklingen lassen...