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, true zurückgegeben werden soll. Wäre jedenfalls logischer im Zusammenhang mit dem Funktionsnamen IsLetter ...



  • 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... 🤡


  • Administrator

    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 🙂


Anmelden zum Antworten