Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » String

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 ]
000
03.02.2004, 22:28 Uhr
KaraHead



Hi,
Vielleicht könnt ihr mir bei dem Prob helfen, hab schon in jeder Hilfe geguckt die ich hab komm aber nicht dahinter.

C++:
#include <iostream>
#include <string.h>
#include <stdlib.h>

using namespace std;

int main()
{
  string s;
  int count=0,i;
  printf("\t\t .: Woerter-Zaehlen :.\n\n");
  printf("Bitte geben sie ihren Satz ein: \n");
  scanf("%s",&s);
  for(i=1; i>=s.size(); ++i)          //soll vom 1.Zeichen bis zum letzten zählen
  {
    if(isspace(s[i]))                 //prüft ob das letzte Zeichen ein Leer-Zeichen ist
        ++count;
  };
  
  printf("Der Satz hat: %s Wörter.",s);//gibt die Leer-Zeichen bzw. Wörter aus
  
  system("PAUSE");    
  return 0;
}



Also das proggie soll einen Text aufnehmen und alle Leerzeichen zählen -> somit ist auch klar wieviele Wörter der Text enthält.

Achja da ist bestimmt der ein oder andere Fehler drin, sonst wär ich ja nicht hier

Könnt ihr mir sagen wo da der Wurm drin ist???
Danke schonmal

Dieser Post wurde am 03.02.2004 um 22:29 Uhr von KaraHead editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.02.2004, 22:40 Uhr
0xdeadbeef
Gott
(Operator)


C- und C++-IO zu mischen ist keine gute Idee. Machs so:

C++:
#include <iostream>
#include <string>
#include <cstdlib>

int main()
{
  std::string s;
  int count=0,i;
  std::cout << "\t\t .: Woerter-Zaehlen :." << std::endl << std::endl;
  std::cout << "Bitte geben sie ihren Satz ein: " << std::endl;
  std::cin >> s;
  for(i=0; i < s.size(); ++i)          //Index null-basiert
  {
    if(std::isspace(s[ i ]))
        ++count;
  };
  
  std::cout << "Der Satz hat: " << s << " Wörter." << std::endl;
  
  system("PAUSE");    
  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 03.02.2004 um 22:41 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.02.2004, 22:41 Uhr
Pablo
Supertux
(Operator)


Ich würde sagen, hier liegt das Problem.

C++:
scanf("%s",&s);



s ist ein String und nicht char[xxx];

Um string zu lesen, benutze std::cout


C++:
printf("Der Satz hat: %s Wörter.",s);



Genau dasselbe.

--edit: grrr... beefy war wohl ne Min. schneller
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 03.02.2004 um 22:42 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.02.2004, 22:50 Uhr
KaraHead



Aha ok danke für die Hilfe, muss ich mir wohl das mischen abgewöhnen

Ich dachte immer strings fangen mit 1 an??? Imgegensatzt zu Arrays???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.02.2004, 22:53 Uhr
Pablo
Supertux
(Operator)


string ist kein Datentyp wie char (heißen die nicht primitive Datrentypen?) sondern eine Klasse. printf und scanf sind C Funktionen und C kennt kenn keine Klassen, insbesonder string nicht. Deshalb musst du entweder ganz C oder C++ programmieren und nicht eine Mischung davon, weil sonst solche Fehler auftretten.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.02.2004, 23:02 Uhr
KaraHead



Ok Ok

Nein ich meine der String Index fängt doch mit 1 an und nicht mit 0???
Hab ich irgendwo gelesen.

C++:
for(i=0; i < s.size(); ++i)          //Index null-basiert
  {
    if(std::isspace(s[ i ]))
        ++count;
  };



Das ist ne Frage keine Kritik oder so...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.02.2004, 23:04 Uhr
0xdeadbeef
Gott
(Operator)


Bei BASIC macht man das vielleicht so, aber in C und C++ sind Indices generell null-basiert. Macht auch mehr Sinn so, wegen Modulo und vergleichbarer Scherze.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.02.2004, 23:07 Uhr
KaraHead



Gut danke damit bin ich mit meinen Fragen für heute am Ende
Dieser Post wurde am 03.02.2004 um 23:09 Uhr von KaraHead editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.02.2004, 23:18 Uhr
KaraHead



Hmmm ich will ja nicht nerven aber irgendwie geht Oxdeadbeefs lösung nich???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.02.2004, 23:22 Uhr
Pablo
Supertux
(Operator)


Und was geht nicht?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
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: