Mam dwa ciągi znaków i chciałbym wypisać na ekran tylko duże litery które w nich występują.
Mógłbym poprośić o wskazówkę jak to ugryźć (miałem pomysł aby skojarzyć poszczegónle litery z kodem ASCII - duże litery są od 65 do 90 ale nadal stoję w miejscu).
Z góry przepraszam za kłopot i dziękuję za wskazówki
Jeśli to C++ i chcesz to zrobić na ASCII to można tak:
//str to jeden z twoim wspomnianych ciagow znakow
for (int i = 0; i < strlen(str); i++)
{
if (str[i] >= 'A' && str[i] <= 'Z')
{
//tu wypisz na ekran lub dodaj do jakiejs listy;
cout << s[i] << "\t";
}
}
Nie wiem czy jest sens zaprzęgać wyrażenia regularne do takiego problemu.
Przepraszam mój błąd jest s a ma być strale takie błędy powinieneś sam zauważyć.
Ponadto nie wiedziałem że korzystasz z klasy string wiec powinieneś zamienić w forze strlen(str) na str.size(), ale pisałeś że masz ciagi znaków a nie stringi
A porównać możesz przez funkcje strcmp z biblioteki string.h bodajze:
No to przecież napisałem użyj to porównania funkcji strcmp. On zwraca liczbę mniejszą od zera jeśli pierwszy string jest mniejszy (bliżej alfabetycznie), 0 gdy są równe i liczbe nieujemna gdy drugi jest wiekszy. Możesz to zastosować w dowolnym algorytmie sortującym zamiast zwykłego porównania jak to robiłeś dla liczb.
Pętle for są źle napisane “str1” nie jest pojedynczym znakiem, a funkcja strcmp porównuje cały ciąg a nie pojedyncze litery więc nie ma potrzeby jej wywoływać tyle razy. Wystarczy tylko raz. W drugim if’ie jest błąd. Przypisujesz do zmiennej “z” liczbę 0, a powinieneś ją porównywać.