Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Wörter zählen [Anfgänger]

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.05.2004, 12:22 Uhr
KaraHead



Hi, da hier in der Rätsel-Ecke schon langsam Spinnweben(Rechtschreibung? ) wachsen, hab ich mich dazu entschlossen eine kleine und leichte Aufgabe zu stellen.

Code:
Es soll ein Programm geschrieben werden, das einen string aufnimmt und dann die Wörter zählt. Und dann die Anzahl der Wörter wieder ausgibt. Und das in C
BSP.:
"Hallo ich bin ein Text" -> 5 Wörter



Natürlich kann auch versucht werden zu golfen.
Ich lieg bei ~140

Ich hoffe mein Rätsel-Debut ist nicht ganz misslungen

Dieser Post wurde am 03.05.2004 um 12:24 Uhr von KaraHead editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.05.2004, 14:15 Uhr
RedEagle




C++:
void worter_zahlen()
{
ifstream in("c:\\datei.txt");

std::string variable;
int zahler

do
{
in >> variable;
zahler++;
}
while(!in.eof);

cout << "Es waren " << zahler << " Worter";
}



1. Es war zwar c gefordert, aber ich hoffe c++ ist auch nicht tötlich
2. Der Code ungetestet !!
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.05.2004, 14:34 Uhr
~mike
Gast


Hi!
Ich probier mal mein Glück

C++:
#include <stdio.h>

int words(char *);

void removenl(char *str)
{
   size_t len = str ? strlen(str):0;
   if (len>0 && str[len-1]=='\n')
      str[len-1] = 0;
}

int main()
{
   char buf[255];
   fgets(buf,255,stdin);
   removenl(buf);
   printf("%d\n",words(buf));

   return 0;
}

int words(char *c)
{
   int count=1,len=strlen(c);
   char *p;
   if(strlen(c) == 0) return 0;
   for(p=c;p<(c+len);p++)
     if(*p == ' ') count++;

   return count;
}



Folgendes Programm nimmt einen String auf

C++:
#include <stdio.h>
main(int argc, char **argv){printf("%d",argc-1);}


68 Zeichen :P

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.05.2004, 14:39 Uhr
Pablo
Supertux
(Operator)



C++:
int z(const char* buffer) {
    char* tmp;
    int counter=1;
    if (!buffer) return 0;
    tmp = (char*) malloc(strlen(buffer)+1);
    if(!tmp) return 0;
    if(!strtok(buffer, " \t")) return 0;
    while(strtok(NULL, " \t")) ++counter;
    return counter;
}



Nicht getestet, aus dem Bauch heraus
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.05.2004, 14:41 Uhr
KaraHead



naja meins ist zwar nicht so elegant aber es funzt

C++:
int main(){int w=0,i=99;char t[i];gets(t);while(1){if(t[i]==' ')++w;if(!i){i++;break;};--i;continue;};printf("%i",++w);getchar();return 0;}


Dieser Post wurde am 03.05.2004 um 14:45 Uhr von KaraHead editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.05.2004, 15:04 Uhr
RedEagle



Das getchar(); würde ich weglassen, da es ja nicht gefordert war, dass das fenster offen gehalten werden soll.
BZW: wenn man es unter DOS startet ist es auch überflüssig.

Darduch spaart mann10 zeichen
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.05.2004, 15:08 Uhr
RedEagle




C++:
void wz(){ifstream i("c:\\x.txt"); std::string v; int z; while(!i.eof){i>>v; z++;} cout<<z;}



83 Zeichen (Ohne Leerzeichen)
--
MFG RedEagle

Dieser Post wurde am 03.05.2004 um 15:09 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.05.2004, 14:14 Uhr
kronos
Quotenfisch
(Operator)



C++:
main(a){printf("%i Wörter\n",a-1);}

Der String wird als Parameter übergeben.
Dateien kann man beispielsweise so übergeben:

Code:
./a.out `cat datei.txt`

--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.05.2004, 14:26 Uhr
RedEagle



Ich glaube nicht, das das eine Anfängerlosung zu einer Anfängerfrage ist
außerdem: wenn dus auf englisch schreibest, (wörter = words) spahrst du nen Buchstaben
andererseits muss es nicht "int main(){return 0;}" sein und nicht "main{}"
kenne mich zwar nicht mir c aus, aber in c++ muss es schon "int main(){return 0;}" sein
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
07.05.2004, 20:47 Uhr
kronos
Quotenfisch
(Operator)



Zitat:
RedEagle postete
Ich glaube nicht, das das eine Anfängerlosung zu einer Anfängerfrage ist

war das verlangt?

Zitat:
außerdem: wenn dus auf englisch schreibest, (wörter = words) spahrst du nen Buchstaben

ich kann's auch ganz weglassen, aber ist auch so die kürzeste lösung.

Zitat:
andererseits muss es nicht "int main(){return 0;}" sein und nicht "main{}"
kenne mich zwar nicht mir c aus, aber in c++ muss es schon "int main(){return 0;}" sein

kenn mich im standard auch nicht so aus, aber das int und return 0 muss afaik nicht unbedinget sein...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>

Dieser Post wurde am 07.05.2004 um 20:48 Uhr von kronos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Rätselecke ]  


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: