Wörter zählen



  • ja aber jetz noch nicht. ich wende nur befehle an die ich auch in der schule gelernt habe.
    und jetzt zurück zu meinem Syntax-Problem..
    Kann jmd den "Fehler" ausbessern?
    mfg



  • Wie Syntaxproblem, gibts ne compilerfehlermeldung?



  • for(x=1;x<=Eingabe.Length;x++)
    

    [C++Fehler] Unit1.cpp(77): Member function must be called or its address taken.



  • Hi,
    hast nicht gesagt wo das Problem GENAU lag daher hab ich einfach das hier gebastelt müsstest du allerdings anpassen

    int nWordCounter = 1;
    char *strDeinText = "Hallo Welt, aber diesmal mit einigen Leerzeichen mehr . . .";
    char *strTemp;
    for ( int i = 0; i < strlen( strDeinText ); i++ )
    {
    	if ( strDeinText[i] == ' ' )
    	{
    		nWordCounter++;
    		//printf( "\n" );
    	}
    	else
    	{
    	        //printf( "%c", strDeinText[i] );
    	}
    }
    //printf( "\n\n--> %d\n\n", nWordCounter );
    


  • Wenn überhaupt Eingabe.length**()**

    🙄



  • Blubbbbb schrieb:

    Wenn überhaupt Eingabe.length**()**

    🙄

    danke^^ hätt ich auch selber draufkommen können
    naja jetzt tut sich gar nix wenn ich auf enter drück bei edit nach der wörter eingabe.

    ..



  • bitte helfen .. is wichtig 😞



  • LoSt schrieb:

    bitte helfen .. is wichtig 😞

    Hat wieder keiner gesehen, ist aber ganz einfach. Dein Index 'x' läuft von 1 bis Eingabe.Length() - korrekt ist 0 bis Eingabe.Length()-1. Also in Zeile 11:

    for( x=0; x<Eingabe.Length(); x++ )
    

    Angenommen je zwei Wörter sind durch genau ein Leerzeichen getrennt und vor dem ersten Wort und hinter dem letzten Wort befindet sich kein Leerzeichen, so ist die Anzahl der Wörter = Anzahl der Leerzeichen plus 1. Also ändere Zeile 9 noch nach:

    counter=1;
    

    .. und Zeile 18 müsste doch eher

    Label1->Caption=IntToStr(counter);
    

    heißen - oder?

    Tipp: verwende ausschließlich lokale Variablen.

    Eine sicher Alternative ist:

    istringstream buf( Eingabe ); // oder ähnlich
        counter = distance( istream_iterator< string >( buf ), istream_iterator< string >() );
    

    erfordert includes: <sstream>, <iterator> und <algorithm>.
    Die Alternative ist auch robust gegenüber führenden und endenden Leerzeichen und mehr als ein Leerzeichen zwischen zwei Wörtern.

    Gruß
    Werner



  • löschn



  • {
     if(Key==13)
      {
      int x,counter;
      String Eingabe;
      counter=1;
      Eingabe=Edit2->Text;
    
        for(x=0;x<Eingabe.Length();x++)
         {
           if (Eingabe[x]==' ')
           {
           counter++;
           }
         Label4->Visible=true;
         Label4->Caption=IntToStr(counter);
         }
      }
    }
    

    so hab ich es jetzt und bekomm ne "fehlermeldung":
    http://www.directupload.net/images/070304/temp/945s4OXb.jpg

    kan mir wer helfen, damit das prog jetzt endlich funzt? danke

    EDIT:
    ok mit
    [cpp] for(x=1;x<Eingabe.Length();x++)[/cpp]
    geht es!!
    danke



  • Hallo,

    Fragen bezüglich des BCB solltest du auch in dem dortigen Forum stellen. Dort hätte man gewußt, dass die Zählung der AnsiStrings mit 1 beginnt.


Anmelden zum Antworten