Seite 1 von 6

WordCount lernen

Verfasst: So Mär 13, 2011 10:29 am
von lolliger
Ich entscheide mich für wordCount. :D
Ich nehme mal an, dass die Funktion "wordCount" zählen soll, wie viele Wörter der String "str" enthällt. (wie der Name ja schon sagt)

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main( void )
{
  char const * str = "Dies ist ein String.";
  unsigned int words;

  words = wordCount( str );

  printf( "Der String enthält %d Wörter\n", words );

  return 0;
}

Re: WordCount lernen

Verfasst: So Mär 13, 2011 6:26 pm
von Xin
lolliger hat geschrieben:Ich nehme mal an, dass die Funktion "wordCount" zählen soll, wie viele Wörter der String "str" enthällt. (wie der Name ja schon sagt)
Die Annhame ist richtig. :-)

Ich glaube, ich muss meinen Ordnungsspruch in der Signatur aktualisieren, da scheint eine neue Version rausgekommen zu sein... ^^
Wie wäre "Wer Ordnung hällt muss ein Echo im Kopf haben?" (PS: Ich bin eigentlich gar nicht so fies, aber Vorlagen kann man nicht einfach ungenutzt lassen ;-))

Re: WordCount lernen

Verfasst: Mi Mär 16, 2011 4:03 pm
von lolliger
Ich habe jetzt schon Stunden überlegt, kriege aber nichts nützliches zustande! :(

Stimmt das, dass ich das Problem mit der Funktion "strtok()" lösen könnte??? :?:
Ich kriege es irgendwie nicht hin!

Re: WordCount lernen

Verfasst: Mi Mär 16, 2011 4:10 pm
von Xin
lolliger hat geschrieben:Ich habe jetzt schon Stunden überlegt, kriege aber nichts nützliches zustande! :(
Schon erstaunlich, oder?

Ich mag diese Aufgabe, weil sie Demut lehrt, genau deswegen stelle ich sie den Anfängern. Du wolltest eben noch GUIs schreiben und nun scheiterst Du daran, Worte in einem Satz zu zählen.

Man lernt damit Probleme zu formulieren.
lolliger hat geschrieben:Stimmt das, dass ich das Problem mit der Funktion "strtok()" lösen könnte??? :?:
Ich kriege es irgendwie nicht hin!
Man könnte es mit strtok lösen, aber das wäre etwa so effektiv, wie den Satz auf den Bildschirm zu drucken gefolgt von der Abfrage an den User "Wieviele Worte enthält der Text?".


Löse das Problem mit Deinem Verstand, nicht mit der Standard-C-Lib.

Fangen wir mal auf deutsch an... Beschreibe mir, wie man Worte in einem Satz zählt. Wie unterscheidet man Worte? Und wenn Du das beschrieben hast, dann versuche das in C zu formulieren.

Re: WordCount lernen

Verfasst: Mi Mär 16, 2011 6:22 pm
von nouseforname
Würde ja glatt mal mitmachen und meine Methode hier posten. Hab da mal eben auf die schnelle Lust drauf gehabt das selbst zu probieren ohne zu googlen^^

Funktioniert auch ganz gut, nur werden auch einzelne "Nichtleerzeichen" als Wort erkannt.


Eine "Spoiler"-Funktion wäre jetzt genial. :) Also wenns genehm ist Poste ich gerne was ich gemacht habe. Auch wenn ich das nun offiziell gelernt habe, bin ich ja noch lange kein Profi. :)

Re: WordCount lernen

Verfasst: Mi Mär 16, 2011 7:17 pm
von Xin
nouseforname hat geschrieben:Würde ja glatt mal mitmachen und meine Methode hier posten. Hab da mal eben auf die schnelle Lust drauf gehabt das selbst zu probieren ohne zu googlen^^

Funktioniert auch ganz gut, nur werden auch einzelne "Nichtleerzeichen" als Wort erkannt.
Das ist okay. Auch alleinstehende Satzzeichen wie in "Dies ist ein - Gedankenstrich." => 5 Worte (4 Worte + 1 Gedankenstrich). So genau nehme ich es gar nicht.
Trotzdem schafft es kaum ein Anfänger beim ersten Versuch.
nouseforname hat geschrieben:Eine "Spoiler"-Funktion wäre jetzt genial. :) Also wenns genehm ist Poste ich gerne was ich gemacht habe. Auch wenn ich das nun offiziell gelernt habe, bin ich ja noch lange kein Profi. :)
Wenn Du möchtest, dass ich es mir ansehe, dann schick es halt als PN.

Re: WordCount lernen

Verfasst: Do Mär 17, 2011 5:15 pm
von lolliger
Xin hat geschrieben:Fangen wir mal auf deutsch an... Beschreibe mir, wie man Worte in einem Satz zählt. Wie unterscheidet man Worte? Und wenn Du das beschrieben hast, dann versuche das in C zu formulieren.
Worte in einem Satz kann man zählen, indem man die vorhandene Leerzeichen +1 zählt.
Worte unterscheiden sich in ihrer Menge und Sorte von Buchstaben.

In C könnte man das Problem in einer Schleife lösen, die immer, wenn sie ein Leerzeichen im String findet eine Varianle, die bei 1 beginnt um 1 erhöht.

Re: WordCount lernen

Verfasst: Do Mär 17, 2011 5:32 pm
von Xin
Gut, eine Lösung hätten wir.
Dann programmiere die mal und dann gucken wir, ob sie auch zum Problem passt.

Re: WordCount lernen

Verfasst: Do Mär 17, 2011 5:39 pm
von nouseforname
Jetzt wollte ich was dazu dazu schreiben, aber Du warst schneller @ Xin ^^

Aber schön dass sich bestätigt was wir besprochen hatten.

Viel Spass lolliger...

Re: WordCount lernen

Verfasst: Sa Mär 19, 2011 11:53 am
von lolliger
Xin hat geschrieben:Gut, eine Lösung hätten wir.
Dann programmiere die mal und dann gucken wir, ob sie auch zum Problem passt.
Also ich habe bis jetzt dieses Programm geschrieben:

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int i;

unsigned int wordCount( const char *str )
    {

        for ( i=0; str[i]!='.' ;i++ )
        {
            if (str[i]==' ')
                

        }

    }



int main( void )
{
  char const * str = "Dies ist ein String.";
  unsigned int words;
  int i, a;

  words = wordCount( str );

  printf( "Der String enth\x84lt %d W\x94rter\n", words );

  return 0;
}
Die Schleife läuft so lange, bis der Satz zuende ist (sie ein Punkt entdeckt).
Dann kommt eine If-Anweisung, aber ich weis nicht, wie ich es hinkriege, dass sie, wenn sie ein Leerzeichen entdeckt der Funktion "wordCount" einen Wert übergibt bzw. ihn jeweils um 1 erhöht, damit dieser dann in der main-Funktion angezeigt werden kann. :(

Kannst du mir einen Tipp geben???