Wypisanie dużych liter spośród dwóch "stringów"


(rgabrysiak) #1

Witam

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


(Spam) #2

Przeleć wyrażeniem regularnym, zapisz sobie do tablicy, a potem z tą tablicą możesz robić co tylko chcesz.


(rgabrysiak) #3

Sorki ale taki dobry to ja nie jestem, mógłbym dostać odpowiedź krok po kroku


(Cieplok) #4

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.


(rgabrysiak) #5

Ale jestem "tępy"

Gdzie się mylę


(rgabrysiak) #6

Tylko się nie denerwujcie ale nasuneło mi się pytanie, jak jest z sortowaniem alfabetycznym dwóch "stringów" #-o


(Cieplok) #7

Przepraszam mój błąd jest s a ma być str ale 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 :smiley:

A porównać możesz przez funkcje strcmp z biblioteki string.h bodajze:

strcmp(str1.c_str(), str2.c_str())

(rgabrysiak) #8

Wielkie dzięki.

jestem dopiero na początku drogi w programowaniu.

Chodzi mi jeszcze po głowie sortowanie alfabetyczne "stringów" , z liczbami łatwiej to idzie #-o


(Cieplok) #9

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.


(rgabrysiak) #10

Ok napisałem to tak, oczywiście na początku mam 2 "stringi"


(rgabrysiak) #11

Coś mi się wydaje że nie potrzebnie odpalam pętlę for bez niej program działa #-o


(Fiołek) #12

Pętle for są źle napisane :wink: "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ć.