Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Wörter zählen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
27.09.2008, 17:50 Uhr
Tron



Moin,

wie wäre es hiermit:

C++:
int countWords(char* text)
{
  int words = 0;
  bool test = false;
  
  for(int c = 0; c < strlen(text); c++)
  {
    if (text[c] == ' ' || text[c] == '\n' || text[c] == '\t')
    {
      test = false;
    } // ende if    
    else if (test == false)
    {
      test = true;
      words++;            
    } // ende else if                
  } // ende for
  return words;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
28.09.2008, 22:25 Uhr
~Kuno
Gast



Zitat von ~halloooooo:
Hallo

Ich habe ein Programm geschrieben welches Wörter zählt. Das Problem ist jetzt wenn ich zuerst Leerzeichen drücke auch um 1 hochzählt. Wie könnte ich das umschreiben, da fehlt mir der Ansatz.



C++:
int zählen(char zeichen)
{
    static int a=0;

    if(zeichen==32)
    {
        a++;
        
        return a;
    }

}



Danke
MfG


C++:
#include <stdio.h>

int zaehlen(char* zeichen)
{
    static int a;      // Anfangs (weil static int !) ist a == 0  
    
    if (*zeichen <= ' ')
            return a;
    else
        if (*(zeichen+1) <= ' ')
            return a++;
    return a;

}

int main()
{
    char test[] = "       Dies   ist ein   Test     ";
    char* Ptr =  test;

    int counter = 0;

    do
    {
        counter = zaehlen(Ptr);
    
    }while (*Ptr++);

    printf("Zaehler ist %d\n", counter);

    return 0;
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
29.09.2008, 04:45 Uhr
0xdeadbeef
Gott
(Operator)


Was soll überhaupt dieser Unfug mit static-Variablen und dementsprechend nur einmal benutzbaren Funktionen?

C++:
int woerter(char const *str) {
  int zaehler = *str || !isspace(*str);

  for(; *str; ++str) {
    if(!isspace(*str) && isspace(str[1])) {
      ++zaehler;
    }
  }

  return zaehler;
}

int main(void) {
  printf("%d\n", woerter("  Bla  bla    bla   "));
  printf("%d\n", woerter("Bla bla bla")); /* Ui, zweimal benutzbar. Wie praktisch! */

  return 0;
}


...und in C++ halt ganz einfach

C++:
#include <sstream>

int woerter(std::string const &str) {
  std::istringstream in(str);
  int zaehler = 0;
  std::string tok;

  while(in >> tok) ++zaehler;

  return zaehler;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
30.09.2008, 21:13 Uhr
~kuno
Gast



Zitat von 0xdeadbeef:
Was soll überhaupt dieser Unfug mit static-Variablen und dementsprechend nur einmal benutzbaren Funktionen?

C++:
int woerter(char const *str) {
  int zaehler = *str || !isspace(*str);

  for(; *str; ++str) {
    if(!isspace(*str) && isspace(str[1])) {
      ++zaehler;
    }
  }

  return zaehler;
}

int main(void) {
  printf("%d\n", woerter("  Bla  bla    bla   "));
  printf("%d\n", woerter("Bla bla bla")); /* Ui, zweimal benutzbar. Wie praktisch! */

  return 0;
}




Ausgabe:
4
3

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: