Sprawdzanie wielkości litery

Kategoria: Zadania z programowania

Sprawdzanie wielkości liter jest w programowaniu bardzo prostę, o ile pozna się pewne reguły. Na jednej z matur z informatyki było zadanie, w której trzeba było napisać szyfr, bazujący na sposobie pozyskiwania wielkości litery.

Sprawdzanie wielkości litery

Wszystkie litery i cyfry mają swoje określone kody ASCII. Są ona takie same na wszystkich komputerach oraz we wszystkich czcionkach. Dla przykładu, kodem ASCII litery a jest liczba 97. Cały alfabet małych liter poczynając od a ma kody ASCII kolejno coraz większe zaczynając od liczby 97.

Możesz to łatwo sprawdzić. Otwórz notatnik, naciśnij ALT a następnie trzymając wciśnięty klawisz naciśnij klawisze 97. Puść alt a Twoim oczom okaże się litera a. Tym prostym sposobem można w C++ sprawdzić, czy wpisana litera jest duża czy mała, lub czy jest cyfrą. Wynika to z faktu, że małe litery mają inne kody ASCII niż te duże.

W poniższym programie wykorzystuje odpowiednie przedziały kodów ASCII aby wykryć jaki klawisz został wciśnięty:

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    char znak;

    cout << "Wpisz dowolny znak i nacisnij enter: ";
    cin >> znak;

    if ((znak > 47) && (znak < 58)) cout << "Jest to cyfra." << endl;
    if ((znak > 96) && (znak < 123)) cout << "Jest to mala litera." << endl;
    if ((znak > 64) && (znak < 91)) cout << "Jest to duza litera." << endl;

    system("PAUSE");

    return 0;
}

Komentarze

Adam

A ja uważam, że takie elementarne wyłożenie tematu jest bardziej funkcjonalne.
Zajrzałem tu bo musiałem uzupełnić program o opcję „zaliczania testu” niezależnie czy podana odpowiedź będzie wprowadzona jako mała czy duża litera.
Tu sztuczka Mariana nie bardzo zadziała.
Program z pliku tekstowego pobiera dane wejściowe w tym „literkę” z prawidłową odpowiedzią.
Użytkownik po przeczytaniu pytania i czterech odpowiedzi (abcd) ma podać właściwą.
Otóż: if odpowiedz == prawidlowa)||(odpowiedz == prawidlowa + 32) punkt = 1 ;
W takim wypadku sprawdzenie zero jedynkowe czy liczba jest mała czy duża niewiele nam da.
Dzięki!

Marian

Niemniej panie Karolu, można zrobić to lepiej:
Pamiętaj o apostrofie (tzn nie wolno umieściś cudzysłowu)*

#include
#include

using namespace std;

int main()
{
char znak;

cout <> znak;

if ((znak >= ‚0’) && (znak <= '9')) cout << "Jest to cyfra." <= ‚a’) && (znak <= 'z')) cout << "Jest to mala litera." <= ‚A’) && (znak <= 'Z')) cout << "Jest to duza litera." << endl;

return 0;
}

Karol

Masz rację, że pomysł jest słaby. W dziale przygotowania do matury staram się wrzucać rozwiązania bez używania dodatkowych bibliotek, tak aby przeciętny Jurek umiał napisać i zrozumieć sortowanie ciągu liczb lub aby miał świadomość że każdemu znakowi odpowiada jakiś kod ASCII.

Dlatego staram się ograniczać używanie gotowych funkcji, oraz nie używam STL’a.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *