[C] Feststellen ob Wort Singular/Plural ist

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von LuZi, 19. Januar 2015 .

Schlagworte:
  1. 19. Januar 2015
    Aloha Leute!

    Habe folgendes Problem:
    Muss für die Schule ein Programm schreiben, welches eine Textdatei einliest und Wörter zählt(gleiche Wörter werden addiert) und dieses Ergebnis in einer textdatei wie folgt ausgibt:
    Haus 3x
    Garten 1x
    Mensch 2x
    .
    .
    .
    Ich bin soweit, dass er die Wörter & Zeichen zählt. Die Ausgabe in txt form werde ich auch noch schaffen.
    Nur habe ich das Problem, dass ich keine Ahnung habe, wie ich es schreiben soll, dass Wörter im Plural "singularisiert" werden sollen.
    => Häuser = Haus (counter++)

    Mein Plan wäre eine Liste einzulesen wo sämtliche deutschen Wörter inkl. Plural aufgeführt sind, die ich dann vergleichen kann. Aber irgendwie erscheint mir dies zu rechenintensiv.

    Wie würdet ihr das machen?
     
  2. 19. Januar 2015
    AW: [C] Feststellen ob Wort Singular/Plural ist

    Hi,
    ich wurde es auch wie du schon erwähnt hast eine Liste machen.
    Aber wenn ich richtig verstanden habe sollen gleich Wörter addiert werden.
    Häuser != Haus

    Also ich habe mal so eine ähnliche Aufgabe gesehen, und da werden nur gleiche Wörter addiert.
    Also Haus ist nicht gleich Häuser, genau wie Maus nicht gleich Mäuse ist.

    Außer es wird explizit vorher gesagt.

    Sonst wenn es sein muss, dann zweidimensionales Array z.B.: [Häuser][Haus],[Mäuse][Maus].
    Hast leider keine andere Wahl dann.


    MFG Epi.
     
  3. 19. Januar 2015
    Zuletzt bearbeitet: 19. Januar 2015
    AW: [C] Feststellen ob Wort Singular/Plural ist

    ok danke erstmal für die Antwort.
    Es sollte nur das "Grundwort" hochgezählt werden.
    Kurz gesagt:
    Haus kommt vor = Haus(1x)
    Mensch kommt vor = Mensch(1x)
    Häuser kommt vor = Haus(2x)
    .
    .
    .
    da das Singular/Plural Problem nur nebensächlich ist (wird nicht zwingend verlangt)konzentriere ich mich jetzt
    auf ein anderes Problem.

    Ich muss, sofern ein Wort 2 mal vorkommt den Counter im struct hochzählen.
    Nur, wie finde ich raus, ob dieses Wort bereits erfasst wurde oder ob es neu ist?

    Anbei ein Auszug meines Codes:

    Code:
     if ( NULL != datei )
     {
     while( (zakt=fgetc(datei)) !=EOF) { // Liest Stück für Stück aus textdatei aus
     
     if (zakt == ' '|| zakt == '!' || zakt == '?' || zakt == '.') // Liest das Wort aus und speichert es ins Hilfsarray
     {
     hilfsarr[buchstabe] = '\0';
     wortanzahl++;
     buchstabe = 0;
     x = hilfsarr;
     struct begriff x;
     strcpy(x.wort, hilfsarr);
     x.counter=x.counter++;
     printf("%s\n", x.wort);
     fprintf(result, "'%s' kommt %d -mal vor \n", x.wort, x.counter);
     
     }
     else
     {
     hilfsarr[buchstabe] = zakt;
     buchstabe++;
     
     zges++;
     
     }
     
  4. 20. Januar 2015
    AW: [C] Feststellen ob Wort Singular/Plural ist

    Hi,
    habe mal gesucht und das wurde mehrmals angezeigt.
    Das solltest du bei dir einbauen können.
    Code:
    typedef int (*cmpfunc)(void *, void *);
    
    int in_array(void *array[], int size, void *lookfor, cmpfunc cmp)
    {
     int i;
    
     for (i = 0; i < size; i++)
     if (cmp(lookfor, array[i]) == 0)
     return 1;
     return 0;
    }
    
    int main()
    {
     char *str[] = {"this is test", "a", "b", "c", "d"};
    
     if (in_array(str, 5, "c", strcmp))
     printf("yes\n");
     else
     printf("no\n");
    
     return 0;
    }
    
    Hier solltest du es für dich anpassen.
    Code:
     if (in_array(str, 5, "c", strcmp))
     printf("yes\n"); // <-- Hier wenn das Wort in array drin ist. Hochzählen.
     else
     printf("no\n"); // <-- Hier wenn das Wort noch nicht drin ist. Neu anlegen.
    

    MFG Epi.
     
  5. 20. Januar 2015
    AW: [C] Feststellen ob Wort Singular/Plural ist

    ah ok. also komm ich ohne Pointer nicht aus. dann muss ich mir wohl dieses Kapitel nochmal durchlesen. Danke dir.
     
  6. 20. Januar 2015
    Zuletzt bearbeitet: 20. Januar 2015
    AW: [C] Feststellen ob Wort Singular/Plural ist

    Hi,
    das sollte auch ohne Pointer gehen.
    Ich habe jetzt nur einen Beispiel gepostet was mehrmals angezeigt wurde.
    Du könntest das auch ohne Pointer machen.
    http://c-buch.sommergut.de/Kapitel8/Zusammenhang-zwischen-Pointern-und-Arrays.shtml

    Hätte ich keinen Beispiel gefunden, dann hätte ich dir das mit Array und eine Methode programmiert.

    P.S.:
    Brauchst du es ohne Pointer, dann könnte ich was coden???

    MFG Epi.
     
  7. 20. Januar 2015
    AW: [C] Feststellen ob Wort Singular/Plural ist

    im Grunde ist es egal wie wir es machen, jedoch sollten wir es möglichst alleine machen. Von dem her: danke für das Angebot, aber ich habe noch 2 Wochen Zeit und bis dahin werde ich es wohl irgendwie noch schaffen (hoffe ich).
     
  8. 20. Januar 2015
    AW: [C] Feststellen ob Wort Singular/Plural ist

    Hi,
    Das finde ich gut:
    Dann ein Tipp:
    - Schreibe ein Global-Array.
    - Schreibe eine Methode wo du das Wort übergibst und mit schleife in Array überprüfst.
    - Wenn es drin ist Hochzählen, wenn nicht Neu anlegen.

    GL & HF noch.

    MFG Epi.
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.