Anfängerfrage
-
Hallo,
ich lerne gerade mit Hilfe eines Übungsbuches C++. Dort wird folgende Frage gestellt:
"Definieren Sie eine Funktion isLetter(), die prüft, ob es sich bei einem Zeichen um Groß- oder Kleinbuchstaben handelt. Die Funktion ewartet ein Argument vom Typ char und liefert einen booleschen Wert."
Die Lösung ist laut Buch:
bool is Letter (char c)
{ return (islower(c) || isupper(c));
}Ich habe als Lösung folgendes geschrieben:
bool isLetter( char ch )
{
if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')
return true;
else return false;
}Könnte man das in dieser Art auch schreiben??
Vielen Dank schon mal im voraus!
-
Du prüfst, ob es sich um einen Buchstaben handelt, und nicht, ob es ein Klein- oder Großbuchstabe ist. Insofern hast du die Aufgabenstellung knapp verfehlt.

-
_matze schrieb:
Du prüfst, ob es sich um einen Buchstaben handelt, und nicht, ob es ein Klein- oder Großbuchstabe ist. Insofern hast du die Aufgabenstellung knapp verfehlt.

Diese kann man auch so verstehen, dass es entweder ein Klein- oder Grossbuchstabe ist, und falls eine dieser Bedingungen zutrifft,
truezurückgegeben werden soll. Wäre jedenfalls logischer im Zusammenhang mit dem FunktionsnamenIsLetter...
-
Nexus schrieb:
Wäre jedenfalls logischer im Zusammenhang mit dem Funktionsnamen
IsLetter...... und auch, wenn man sich die Buchlösung anschaut ...
-
Upps! Da habt ihr natürlich Recht, hab ich zunächst falsch verstanden...

-
Schlimm, dass das Buch, was wohl ein C++ Buch sein soll, eine C Lösung vorschlägt, statt die C++ Möglichkeiten aus
<locale>zu nehmen:
http://www.cplusplus.com/reference/std/locale/isupper/
http://www.cplusplus.com/reference/std/locale/islower/@creative09,
Deine Lösung ist allerdings so oder so falsch. In C++ gibt es keine Garantie, dass die Werte der Buchstaben 'A' bis 'Z' und 'a' bis 'z' wirklich hintereinander liegen. Es gibt keine Festlegung, welcher Zeichensatz verwendet werden soll.Grüssli
-
Dravere schrieb:
@creative09,
Deine Lösung ist allerdings so oder so falsch.Sagen wir mal vielleicht für das gegebene System nicht falsch, aber auf keinen Fall portabel
