 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Lars Horeis Guest
|
Posted: Sun Apr 18, 2004 4:24 pm Post subject: Zählen von Nullen und Einsen in Datei |
|
|
Hallo,
ich hoffe, dass mir jemand bei der Lösung des folgenden (augenscheinlich
simplen) Problems helfen kann.
Ich habe eine Textdatei, welche aus einer grossen Anzahl von Zeilen
besteht, die sich ausschließlich aus Nullen und Einsen zusammensetzen.
Ich möchte jetzt unter anderem zählen, wie viele Nullen und Einsen diese
Datei enthält.
Den Namen der zu öffnenden Datei übergebe ich dem Programm an der
Kommandozeile und öffne sie wie folgt
std::ifstream InputFile(argv[1]);
Dann habe ich mir gedacht, dass ich vereinfacht ausgedrückt sowas wie
char s;
[..]
while(InputFile.get(s))
{
switch(s){
case '1' : AnzahlEinsen++;
case '0' : AnzahlNullen++;
}
}
habe. Das zählen der Einsen klappt auch wie erwartet nur die Nullen
machen Stress, was wohl daran liegt, dass der Typ für '0' nicht passend
ist, allerdings blicke ich nicht, wie ich das beheben kann.
Gruss und Danke,
Lars
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Rolf Magnus Guest
|
Posted: Sun Apr 18, 2004 11:30 pm Post subject: Re: Zählen von Nullen und Einsen in Datei |
|
|
Lars Horeis wrote:
| Quote: | Hallo,
ich hoffe, dass mir jemand bei der Lösung des folgenden
(augenscheinlich simplen) Problems helfen kann.
Ich habe eine Textdatei, welche aus einer grossen Anzahl von Zeilen
besteht, die sich ausschließlich aus Nullen und Einsen zusammensetzen.
Ich möchte jetzt unter anderem zählen, wie viele Nullen und Einsen
diese Datei enthält.
Den Namen der zu öffnenden Datei übergebe ich dem Programm an der
Kommandozeile und öffne sie wie folgt
std::ifstream InputFile(argv[1]);
Dann habe ich mir gedacht, dass ich vereinfacht ausgedrückt sowas wie
char s;
[..]
while(InputFile.get(s))
{
switch(s){
case '1' : AnzahlEinsen++;
case '0' : AnzahlNullen++;
}
}
habe. Das zählen der Einsen klappt auch wie erwartet nur die Nullen
machen Stress,
|
"machen Stress" ist nicht gerade eine sinnvolle Beschreibung des
Problems. Was genau passiert denn statt dem Erwarteten?
| Quote: | was wohl daran liegt, dass der Typ für '0' nicht passend ist,
|
Wie kommst du darauf? '0' ist vom selben Typ wie '1', nämlich char.
| Quote: | allerdings blicke ich nicht, wie ich das beheben kann.
|
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Ludwig Pumberger Guest
|
Posted: Mon Apr 19, 2004 5:54 am Post subject: Re: Zählen von Nullen und Einsen in Datei |
|
|
Lars Horeis schrieb:
| Quote: | char s;
[..]
while(InputFile.get(s))
{
switch(s){
case '1' : AnzahlEinsen++;
|
Da fehlt ein break;
| Quote: | case '0' : AnzahlNullen++;
|
Da würd ich defensiverweise auch eins herschreiben.
| Quote: | }
}
habe. Das zählen der Einsen klappt auch wie erwartet nur die Nullen
machen Stress, [...]
|
Die AnzahlNullen ist bei dir wohl die Anzahl aller Zeichen.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Lars Horeis Guest
|
Posted: Mon Apr 19, 2004 6:51 am Post subject: Re: Zählen von Nullen und Einsen in Datei |
|
|
On Mon, 19 Apr 2004 07:54:31 +0200
Ludwig Pumberger <elpeka (AT) gmx (DOT) at> wrote:
Hallo Ludwig!
| Quote: | while(InputFile.get(s))
{
switch(s){
case '1' : AnzahlEinsen++;
Da fehlt ein break;
case '0' : AnzahlNullen++;
Da würd ich defensiverweise auch eins herschreiben.
}
}
|
Das mit dem 'defensiverweise' ist natürlich goldrichtig. Keine Ahnung,
wie ich darauf gekommen bin, das 'break' wegzulassen. :(
| Quote: | habe. Das zählen der Einsen klappt auch wie erwartet nur die Nullen
machen Stress, [...]
Die AnzahlNullen ist bei dir wohl die Anzahl aller Zeichen.
|
Stimmt, ohne das break ist steht in AnzahlNullen die Gesamtanzahl aller
Zeichen.
Danke und Sorry!
Lars
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Werner Salomon Guest
|
Posted: Mon Apr 19, 2004 8:06 am Post subject: Re: Zählen von Nullen und Einsen in Datei |
|
|
Lars Horeis <nospam (AT) horeis (DOT) de> wrote
| Quote: | Ich habe eine Textdatei, welche aus einer grossen Anzahl von Zeilen
besteht, die sich ausschließlich aus Nullen und Einsen zusammensetzen.
Ich möchte jetzt unter anderem zählen, wie viele Nullen und Einsen diese
Datei enthält.
[...]
char s;
[..]
while(InputFile.get(s))
{
switch(s){
case '1' : AnzahlEinsen++;
case '0' : AnzahlNullen++;
}
}
Das zählen der Einsen klappt auch wie erwartet nur die Nullen
machen Stress, ...
|
Hallo Lars,
wenn Du unter "Stress machen" verstehst, dass die Anzahl der Nullen,
die Dein Programm zählt, gleich der Anzahl der Nullen PLUS der Einsen
ist, so liegt das daran, dass Du ein 'break' im switch vergessen hast.
Also:
switch(s){
case '1' : AnzahlEinsen++; break;
case '0' : AnzahlNullen++; break;
}
Gruß
Werner
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Hans Mueller Guest
|
Posted: Mon Apr 19, 2004 9:13 am Post subject: Re: Zählen von Nullen und Einsen in Datei |
|
|
Rolf Magnus wrote:
| Quote: | Lars Horeis wrote:
Ich möchte jetzt unter anderem zählen, wie viele Nullen und Einsen
diese Datei enthält.
while(InputFile.get(s))
{
switch(s){
case '1' : AnzahlEinsen++;
|
break;
| Quote: | case '0' : AnzahlNullen++;
}
}
|
OP: Lies doch nochmal nach wie switch/case funktioniert und warum
(bzw. manchmal auch wann...) Du 'break' brauchst.
So hat Dein Code für die Variable Anzahl-Nullen gezählt, wieviel Zeichen
die Datei insgesamt hat.
Gruss, Hanss-Achim
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Thomas Dorner Guest
|
Posted: Mon Apr 19, 2004 3:39 pm Post subject: Re: Zählen von Nullen und Einsen in Datei |
|
|
Hallo Lars!
LH> case '1' : AnzahlEinsen++;
LH> case '0' : AnzahlNullen++;
Tatsächlich ohne "break;"? Dann wundert mich nicht, daß die Nullen
Probleme machen, Dein case läuft rüber.
Viele Grüße, Thomas
--
From-Adresse wird nicht genutzt, Reply-To Adresse gilt nur 4 Wochen!
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Lars Horeis Guest
|
Posted: Mon Apr 19, 2004 9:24 pm Post subject: Re: Zählen von Nullen und Einsen in Datei |
|
|
On 19 Apr 2004 17:39:41 +0200
Thomas Dorner <nospam.de.comp.lang.iso-c++.040419 (AT) dorner (DOT) claranet.de>
wrote:
Hallo Thomas!
| Quote: | LH> case '1' : AnzahlEinsen++;
LH> case '0' : AnzahlNullen++;
Tatsächlich ohne "break;"? Dann wundert mich nicht, daß die Nullen
Probleme machen, Dein case läuft rüber.
|
Ich weiss. Habe echt keine Ahnung, was mich da geritten hat. Liegt wohl
daran, dass ich alles vergessen habe, was ich jemals gelernt habe.
Danke an Dich und an alle anderen Poster und natürlich auch an die Mods,
die mein Posting gnädigerweise durchgelassen haben.
Gruss,
Lars
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|