C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[Hilfe] bei Strings ben366tigt!n^

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Christian Moeller
Guest





PostPosted: Tue Feb 15, 2005 12:30 pm    Post subject: [Hilfe] bei Strings ben366tigt!n^ Reply with quote



Hallo zusammen,

Folgendes Problem: Der User soll einen String eingeben und als Ausgabe soll
er eine Auflistung über die eingegebenen Buchstaben/Zahlen erhalten und
angezeigt bekommen, ob es ein Großbuchstabe, Kleinbuchstabe oder Zahl ist.
Also bei Eingabe von z.B: "Hilfe1" > H = Großbuchstabe, i =
Kleinbuchstabe....., 1 = Zahl;

wie kann ich das realisieren?
bin erst bei der Funktion.
z.B.: void listString (char * s) ?

da ja jedes Zeichen durchlaufen werden muss, brauch ich ja eine
for-Schleife,
aber wie gebe ich die Auflistung aus, ob es Groß-, Kleinbuchstabe oder eine
Zahl ist?
Das müsste doch mit switch funktionieren? Aber wie ist die "Berechnung" um
erkennen zu können, um welchen Fall es sich handelt?

also was schreib ich z.B für:
switch (list) {
case '1':
"Befehl"
cout << Grossbuchstabe << endl;
break;
case '2':
"Befehl"
cout << Kleinbuchstabe << endl;
break;
case '3':
"Befehl"
cout << Zahl << endl;
break;
default:
cout << "Weder Noch" << endl;


Vielen Dank für die Hilfe!!!

--
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
Falk Tannhäuser
Guest





PostPosted: Tue Feb 15, 2005 1:47 pm    Post subject: Re: [Hilfe] bei Strings benötigt! Reply with quote



Christian Moeller wrote:
Quote:
Folgendes Problem: Der User soll einen String eingeben und als Ausgabe soll
er eine Auflistung über die eingegebenen Buchstaben/Zahlen erhalten und
angezeigt bekommen, ob es ein Großbuchstabe, Kleinbuchstabe oder Zahl ist.
Also bei Eingabe von z.B: "Hilfe1" > H = Großbuchstabe, i =
Kleinbuchstabe....., 1 = Zahl;

Guck mal nach den in <ctype.h> bzw. <cctype> enthaltenen Klassifizierungs-
funktionen, insbesondere 'isupper', 'islower', 'isdigit'.

MfG
Falk

--
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
Martin Kaul
Guest





PostPosted: Tue Feb 15, 2005 2:13 pm    Post subject: Re: [Hilfe] bei Strings benötigt! Reply with quote



Christian Moeller wrote:
Quote:
Hallo zusammen,

Folgendes Problem: Der User soll einen String eingeben und als Ausgabe soll
er eine Auflistung über die eingegebenen Buchstaben/Zahlen erhalten und
angezeigt bekommen, ob es ein Großbuchstabe, Kleinbuchstabe oder Zahl ist.
Also bei Eingabe von z.B: "Hilfe1" > H = Großbuchstabe, i =
Kleinbuchstabe....., 1 = Zahl;

wie kann ich das realisieren?
bin erst bei der Funktion.
z.B.: void listString (char * s) ?

da ja jedes Zeichen durchlaufen werden muss, brauch ich ja eine
for-Schleife,
aber wie gebe ich die Auflistung aus, ob es Groß-, Kleinbuchstabe oder eine
Zahl ist?
Das müsste doch mit switch funktionieren? Aber wie ist die "Berechnung" um
erkennen zu können, um welchen Fall es sich handelt?

Riecht nach ner Hausaufgabe - deshalb kein vollständiges Beispiel.

switch geht nicht direkt - deine Freunde sind the Funktionen
std::isdigit, std::isalpha, std::islower - alle im Include <locale> zu
finden.

- isdigit liefert true wenn das Zeichen eine Zahl ist
- isalpha liefert true wenn das Zeichen ein Buchstabe ist
- islower liefert true wenn das Zeichen ein Großbuchstabe ist

Da keine fixe Kennung über den Typ des Zeichens geliefert wird, sondern
nur true/false musst du über verschachelte If/Else Anweisungen den
konkreten Typ selbst rausfinden... Kombination von
(isalpha && islower) gibt z.B. Kleinbuchstabe (islower == false reicht
alleine nicht aus, da es sich ja auch um ne Zahl oder ein sonstiges
Zeichen handeln könnte)

Obige Funktionen funktionieren mit C++ - wenn ich dein Beispiel
anschaue, dann kommen mir Zweifel ob es sich um C++ handeln soll. Unter
C müsste es die Funktionen auch geben - ansonsten musst du sie
nachprogrammieren.

z.B. isdigit( char c )
{
return (c >= '0') && (c <='9');
}

tschaule
Martin

--
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 Mang
Guest





PostPosted: Tue Feb 15, 2005 2:24 pm    Post subject: Re: [Hilfe] bei Strings ben366tigt!n^ Reply with quote


"Christian Moeller" <allinclusive77 (AT) hotmail (DOT) com> schrieb im Newsbeitrag
news:cusps0$e3e$05$1 (AT) news (DOT) t-online.com...
Quote:
Hallo zusammen,

Folgendes Problem: Der User soll einen String eingeben und als Ausgabe
soll
er eine Auflistung über die eingegebenen Buchstaben/Zahlen erhalten und
angezeigt bekommen, ob es ein Großbuchstabe, Kleinbuchstabe oder Zahl ist.
Also bei Eingabe von z.B: "Hilfe1" > H = Großbuchstabe, i =
Kleinbuchstabe....., 1 = Zahl;

wie kann ich das realisieren?
bin erst bei der Funktion.
z.B.: void listString (char * s) ?

da ja jedes Zeichen durchlaufen werden muss, brauch ich ja eine
for-Schleife,


Warum nicht einen std::string erstellen und Iteratoren verwenden?


Quote:
aber wie gebe ich die Auflistung aus, ob es Groß-, Kleinbuchstabe oder
eine
Zahl ist?
Das müsste doch mit switch funktionieren? Aber wie ist die "Berechnung" um
erkennen zu können, um welchen Fall es sich handelt?

Es gibt in <cctype> die Funktionen isupper, islower, und isdigit (+ ein paar
andere), die genau das feststellen. Die gibt's auch in <locale>, wo sie ein
spezifisches locale als 2. Parameter nehmen (das dürfte für Dich aber
derzeit uninteressant sein).
Eine einfaches if-else if -else if-else sollte vollkommen genügen.


Thomas

--
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
Andreas Reinhardt
Guest





PostPosted: Thu Feb 17, 2005 4:04 pm    Post subject: Re: [Hilfe] bei Strings benötigt! Reply with quote


Quote:
also was schreib ich z.B für:
switch (list) {
case '1':
"Befehl"
cout << Grossbuchstabe << endl;
break;
case '2':
"Befehl"
cout << Kleinbuchstabe << endl;
break;
case '3':
"Befehl"
cout << Zahl << endl;
break;
default:
cout << "Weder Noch" << endl;



lass Dir doch mal folgendes anzeigen:

int i;
for(i=0;i<128;i++)
{
cout << i << ":" << (char) i << endl;
}

den Rest solltest Du Dir dann selber ausdenken...

Gruß,
Andreas

--
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 Mang
Guest





PostPosted: Sun Feb 20, 2005 5:07 pm    Post subject: Re: [Hilfe] bei Strings ben366tigt!n^ Reply with quote


"Andreas Reinhardt" <spam.lille70 (AT) 12move (DOT) de> schrieb im Newsbeitrag
news:cv2f9g$2psm$1 (AT) ulysses (DOT) news.tiscali.de...
Quote:

lass Dir doch mal folgendes anzeigen:

int i;
for(i=0;i<128;i++)
{
cout << i << ":" << (char) i << endl;
}


Zeige mir doch bitte mal den Code für eine selbergeschriebene islower /
isupper Funktion, oder eine die etwas ähnliches macht.


Thomas

--
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
Andreas Reinhardt
Guest





PostPosted: Mon Feb 21, 2005 7:49 am    Post subject: Re: [Hilfe] bei Strings benötigt! Reply with quote

Thomas Mang schrieb:

Quote:
Zeige mir doch bitte mal den Code für eine selbergeschriebene islower /
isupper Funktion, oder eine die etwas ähnliches macht.

Warum? Nimm doch die aus <cctype> Wink. Ich glaube aber, dass
*SELBERSCHREIBEN* exakt der Inhalt von *CHRISTIANS* Hausaufgabe ist.

Andreas

--
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 Mang
Guest





PostPosted: Mon Feb 21, 2005 9:52 am    Post subject: Re: [Hilfe] bei Strings ben366tigt!n^ Reply with quote


"Andreas Reinhardt" <spam.lille70 (AT) 12move (DOT) de> schrieb im Newsbeitrag
news:cvc3qi$1qk5$1 (AT) ulysses (DOT) news.tiscali.de...
Quote:
Thomas Mang schrieb:

Zeige mir doch bitte mal den Code für eine selbergeschriebene islower /
isupper Funktion, oder eine die etwas ähnliches macht.

Warum? Nimm doch die aus <cctype> Wink. Ich glaube aber, dass
*SELBERSCHREIBEN* exakt der Inhalt von *CHRISTIANS* Hausaufgabe ist.


Vielleicht soll er sie selberschreiben, vielleicht auch nicht. Wenn er sie
selberschreiben soll, ist die Aufgabe in meinen Augen ziemlich heftig.

Und Deine Schleife scheint mir ihn schnurgerade auf das falsche Gleis zu
führen.

Deshalb anders formuliert:
Was hat die von Dir gezeigte Schleife mit der Aufgabenstellung zu tun, ob
ein character lower oder upper-case ist?


Thomas

--
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
Andreas Reinhardt
Guest





PostPosted: Mon Feb 21, 2005 11:50 am    Post subject: Re: [Hilfe] bei Strings benötigt! Reply with quote

Thomas Mang schrieb:

Quote:
Was hat die von Dir gezeigte Schleife mit der Aufgabenstellung zu tun, ob
ein character lower oder upper-case ist?

(char)65 - (char)90 -> uppercase
(char)97 - (char)122 -> lowercase

?

Andreas

--
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
Karl Heinz Buchegger
Guest





PostPosted: Mon Feb 21, 2005 12:16 pm    Post subject: Re: [Hilfe] bei Strings benötigt! Reply with quote

Thomas Mang wrote:
Quote:

"Andreas Reinhardt" <spam.lille70 (AT) 12move (DOT) de> schrieb im Newsbeitrag
news:cvc3qi$1qk5$1 (AT) ulysses (DOT) news.tiscali.de...
Thomas Mang schrieb:

Zeige mir doch bitte mal den Code für eine selbergeschriebene islower /
isupper Funktion, oder eine die etwas ähnliches macht.

Warum? Nimm doch die aus <cctype> Wink. Ich glaube aber, dass
*SELBERSCHREIBEN* exakt der Inhalt von *CHRISTIANS* Hausaufgabe ist.

Vielleicht soll er sie selberschreiben, vielleicht auch nicht. Wenn er sie
selberschreiben soll, ist die Aufgabe in meinen Augen ziemlich heftig.

Und Deine Schleife scheint mir ihn schnurgerade auf das falsche Gleis zu
führen.

Deshalb anders formuliert:
Was hat die von Dir gezeigte Schleife mit der Aufgabenstellung zu tun, ob
ein character lower oder upper-case ist?

Ich denke das Andreas den OP auf den Umstand hinweisen wollte, das char
auch nichts anderes als ein kleiner Integer ist. D.h. man kann mit einem
char zb in ein Array indizieren, dass zb die Info haelt ob das jetzt
ein Kleinbuchstabe, Gross .... ist. Zugegeben: der Tippaufwand ist heftig,
das ganze wird nicht auf allen Systemen funktionieren, aber schwierig
ist es nicht.

Persoenlich denke ich allerdings, das sich OP's Lehrer keine Eigen-
implementierung wuenscht, sondern isupper(), islower() und Konsorten
fuer 100 Punkte sorgen werden.

--
Karl Heinz Buchegger
[email]kbuchegg (AT) gascad (DOT) at[/email]

--
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
Marc F. Neininger
Guest





PostPosted: Mon Feb 21, 2005 12:20 pm    Post subject: Re: [Hilfe] bei Strings benötigt! Reply with quote

Christian Moeller schrieb:

Quote:
Hallo zusammen,
Tach,


Quote:
Folgendes Problem: Der User soll einen String eingeben und als Ausgabe soll
er eine Auflistung über die eingegebenen Buchstaben/Zahlen erhalten und
angezeigt bekommen, ob es ein Großbuchstabe, Kleinbuchstabe oder Zahl ist.
Also bei Eingabe von z.B: "Hilfe1" > H = Großbuchstabe, i =
Kleinbuchstabe....., 1 = Zahl;

da ja jedes Zeichen durchlaufen werden muss, brauch ich ja eine
for-Schleife,
aber wie gebe ich die Auflistung aus, ob es Groß-, Kleinbuchstabe oder eine
Zahl ist?
Das müsste doch mit switch funktionieren? Aber wie ist die "Berechnung" um
erkennen zu können, um welchen Fall es sich handelt?

ich würde kein switch, sondern ein paar if-statements nehmen.

Du kannst Deine Eingabe doch beim Durchlaufen pro Character ueber den
ASCII-Wert in Gruppen einteilen.

Grossbuchstaben (ASCII 65-90)
Kleinbuchstaben (ASCII 97-122)
Zahlen (ASCII 48-57).

Das hier ist mit 7bit gedacht. Falls Du die Umlaute noch betrachten
willst, musst Du halt bis 255 gehen und die Umlaute noch dazupacken.

Solltest Du eine Statistik brauchen, wuerde ich ein Array mit 128
(alternativ eben 256) Feldern initialisieren und dann pro "getroffenem"
ASCII-Wert den Feldinhalt um eins erhoehen. Die Statistik waere dann nur
noch ein Durchlaufen des Arrays nach allen Feldern, die ungleich '0' sind.

Quote:
Vielen Dank für die Hilfe!!!

Bitteschoen

Marc

--
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 Mang
Guest





PostPosted: Mon Feb 21, 2005 1:39 pm    Post subject: Re: [Hilfe] bei Strings ben366tigt!n^ Reply with quote


"Andreas Reinhardt" <spam.lille70 (AT) 12move (DOT) de> schrieb im Newsbeitrag
news:cvchu5$1vcb$1 (AT) ulysses (DOT) news.tiscali.de...
Quote:
Thomas Mang schrieb:

Was hat die von Dir gezeigte Schleife mit der Aufgabenstellung zu tun,
ob
ein character lower oder upper-case ist?

(char)65 - (char)90 -> uppercase
(char)97 - (char)122 -> lowercase


Gut gemeint, ist aber ASCII.

Schaue Dir mal EBCDIC an - da sind die Buchstaben nicht einmal in einer
kontinuierlichen Reihenfolge festgelegt, selbst sowas:

bool isupper(char c)
{
return c >= 'A' && c <= 'Z';
}

geht da schief.

Und bezüglich selberkodieren: Da wir ja eine Sprache sprechen, wo es ü, ä, ß
etc. gibt, C++ die aber gar nicht kennt......ich glaube, es ist
undefiniertes Verhalten, die einfach so in Code einzubauen :-(



Thomas

--
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
Karl Heinz Buchegger
Guest





PostPosted: Mon Feb 21, 2005 4:44 pm    Post subject: Re: [Hilfe] bei Strings benötigt! Reply with quote

"Marc F. Neininger" wrote:
Quote:

Christian Moeller schrieb:

Hallo zusammen,
Tach,

Folgendes Problem: Der User soll einen String eingeben und als Ausgabe soll
er eine Auflistung über die eingegebenen Buchstaben/Zahlen erhalten und
angezeigt bekommen, ob es ein Großbuchstabe, Kleinbuchstabe oder Zahl ist.
Also bei Eingabe von z.B: "Hilfe1" > H = Großbuchstabe, i =
Kleinbuchstabe....., 1 = Zahl;

da ja jedes Zeichen durchlaufen werden muss, brauch ich ja eine
for-Schleife,
aber wie gebe ich die Auflistung aus, ob es Groß-, Kleinbuchstabe oder eine
Zahl ist?
Das müsste doch mit switch funktionieren? Aber wie ist die "Berechnung" um
erkennen zu können, um welchen Fall es sich handelt?

ich würde kein switch, sondern ein paar if-statements nehmen.

Du kannst Deine Eingabe doch beim Durchlaufen pro Character ueber den
ASCII-Wert in Gruppen einteilen.

Grossbuchstaben (ASCII 65-90)
Kleinbuchstaben (ASCII 97-122)
Zahlen (ASCII 48-57).

Sag mal: Hast Du die vorhergehenden Antworten gelesen?
Genau das was Du hier vorschlaegst macht man naemlich nicht!!!!

Wer sagt Dir denn, dass der Rechner auf dem das Pgm letztendlich laeuft
auch tatsaechlich ASCII benutzt?

--
Karl Heinz Buchegger
[email]kbuchegg (AT) gascad (DOT) at[/email]

--
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
Marc F. Neininger
Guest





PostPosted: Mon Feb 21, 2005 8:39 pm    Post subject: Re: [Hilfe] bei Strings benötigt! Reply with quote

Karl Heinz Buchegger schrieb:

Quote:
Sag mal: Hast Du die vorhergehenden Antworten gelesen?
Nein, die waren noch nicht da. Smile


Quote:
Genau das was Du hier vorschlaegst macht man naemlich nicht!!!!

Wer sagt Dir denn, dass der Rechner auf dem das Pgm letztendlich laeuft
auch tatsaechlich ASCII benutzt?

Hi Karl Heinz,

natuerlich hast Du recht, dass das nur fuer ASCII gilt. An der
zeitlichen Naehe kannst Du sehen, dass ich die anderen Posts ev. nicht
gelesen habe. Auch wenn die U-Bahn in Stuttgart schnell ist, fuer
Rueckwaertsreisen in der Zeit reicht's nicht ;-)

Ausserdem sieht mir diese Aufgabe nach einer Programmieraufgabe und
nicht nach einem Produktivprogramm aus. Natuerlich ist es schoen, wenn
man hier auch noch EBCDIC lernt und manche Leute wissen, dass es neben
ASCII noch eine andere Zeichentabelle gibt. Aber wenn jemand ein
Programm schreibt, mit dem er einen String in Characters zerlegt, dann
wuerde ich, ohne herablassend wirken zu wollen, dem Programmierer nicht
zutrauen, dass er weiss, dass man manche Betriebssysteme nicht bootet,
sonder ipl't. :P

Just my 2Cents

Marc

--
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
Markus Schaaf
Guest





PostPosted: Tue Feb 22, 2005 7:00 am    Post subject: Re: [Hilfe] bei Strings benötigt! Reply with quote

"Thomas Mang" <nospam (AT) nospam (DOT) prima.de> schrieb:

Quote:
Und bezüglich selberkodieren: Da wir ja eine Sprache sprechen, wo es ü, ä, ß
etc. gibt, C++ die aber gar nicht kennt......ich glaube, es ist
undefiniertes Verhalten, die einfach so in Code einzubauen Sad

Ist es nicht. Es ist "implementation defined". Übrigens: der durch
»islower« und »isupper« (in der ad-hoc-Variante) garantiert abgedeckte
Zeichenvorrat ist sogar noch geringer, als der von ASCII.

--
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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.