Typ znakowy – char Łańcuchy znaków – typ string
Transkrypt
Typ znakowy – char Łańcuchy znaków – typ string
Język C++ Typ znakowy – char Typ char jest typem jednobajtowym służącym do przechowywania znaków Deklaracja zmiennej typu char char znak; znak=’A’; // dla zmiennej char znak musi być ujęty w apostrofy W zmiennej char jest przechowywany tak naprawdę kod ASCII każdego znaku. Kod ASCII jest to pewne umowne przyporządkowanie w którym liczbom naturalnym z zakresu 0… 255 odpowiadają znaki i na odwrót. Np. znak ‘A’ ma numer o kodzie 65, ‘B’ – 66,… ‘Z’ – 90, ‘a’ – 97, etc Więc zapis znak=’A’ jest równoważny zapisowi znak=65, zwiększenie zmiennej znak np. o jeden powoduje zamianę na znak będący o jedno miejsce dalej od aktualnego. Przydatną rzeczą podczas pisania programów jest możliwość konwersji znaków ‘0’, ‘1’, …, ‘9’ do liczb (cyfr), którą wykonuje się w sposób następujący: char Ccyfra; int Icyfra; … Icyfra=Ccyfra-'0'; I odwrotnie zamiana cyfry (zmienna int) na znak (zmienna char) wygląda następująco: Ccyfra=ICyfra+'0'; Łańcuchy znaków – typ string Do przechowywania napisów służy specjalny typ danych o nazwie string. Możemy sobie go wyobrazić jako tablicę znaków, której ostatni element zakończony jest znakiem specjalnym „\0” oznaczającym koniec słowa. Deklaracja zmiennej typu string string nazwa_zmiennej; Przykład 1 string slowo; slowo=”Programowanie”; //Koniecznie wprowadzany napis musi być ujęty w cudzysłowia Do poszczególnych liter w słowie odwołujemy się tak samo jak do elementów tablicy podając numer indeksu znaku, do którego chcemy mieć dostęp, np. slowo[0] == ‘P’ ; slowo[5]==’a’; Aby wyznaczyć długość napisu możemy użyć metody o nazwie length(), np.: int x; x=slowo.length(); Konkatenacja (łączenie) napisów Jeśli chcemy połączyć ze sobą dwa lub więcej napisów możemy skorzystać z operatora +, np.: string napis1, napis2, napis3; napis1=”Ala ”; napis2=”ma kota”; napis3=napis1+napis2; W zmiennej napis3 otrzymamy zdania: „Ala ma kota” -1Rafaello Język C++ Zadania Zadanie 1 KiM Napisz program, który wczyta imię użytkownika i stwierdzi, czy jest on kobietą, czy mężczyzną. Uwaga: Przyjmij, że tylko imiona żeńskie kończą się na literę ‘a’. Wejście Pierwszy wiersz wejścia zawiera napis – imię użytkownika Wyjście Na wyjściu powinien pojawić się napis „Kobieta”, bądź „Mężczyzna” Przykład Dla danej wejściowej: Alicja poprawną odpowiedzią jest: Kobieta Zadanie 2 Wspak Napisz program, który wczyta podane przez użytkownika słowo i wypisze je wspak Wejście Pierwszy wiersz wejścia zawiera dowolne słowo Wyjście Pierwszy wiersz wyjścia zawiera słowo zapisane wspak Przykład Dla danej wejściowej: informatyka poprawną odpowiedzią jest wynik: akytamrofni Zadanie 3 Palindrom Utwórz program z użyciem funkcji, który sprawdzi, czy podane słowo jest palindromem. Palindromem nazywamy słowo, które czytane „od lewej do prawej:” i „od prawej do lewej” jest takie same, np. słowa kajak, ala są palindromami Wejście Pierwszy wiersz wejścia zawiera dowolne słowo Wyjście W pierwszym wierszu wyjścia ma pojawić się napis TAK lub NIE. Przykład Dla danej wejściowej: programista poprawną odpowiedzią jest napis NIE Zadanie 4 Małe litery Napisz program, w którym zdefiniujesz funkcję: string male_litery(string napis), która będzie zmieniała wszystkie duże litery podanego napisu na małe. Wejście Pierwszy wiersz zawiera dowolne słowo nie zawierające białych znaków Wyjście To samo słowo, w którym wszystkie litery zamienione są na małe Przykład Dla słowa: InFOrmatykA poprawną odpowiedzią jest napis: informatyka -2Rafaello Język C++ Zadanie 5 Duże litery Napisz program, w którym zdefiniujesz funkcję: string duze_litery(string napis), która będzie zmieniała wszystkie małe litery podanego napisu na duże. Wejście Pierwszy wiersz zawiera dowolne słowo nie zawierające białych znaków Wyjście To samo słowo, w którym wszystkie litery zamienione są na małe Przykład Dla słowa: InFOrmatykA poprawną odpowiedzią jest napis: INFORMATYKA Zadanie 6 Szyfr płotkowy Napisz program, który podane słowo zaszyfruje metodą płotu o dwóch rzędach. Metoda Płotu: Dla słowa szyfrowanie s y z r f w o n a e i Otrzymujemy zaszyfrowane słowo: syrwnezfoai Wejście Pierwszy wiersz wejścia zawiera słowo, które chcemy zaszyfrować Wyjście Słowo po zaszyfrowaniu Przykład Dla słowa szkola Poprawną odpowiedzią jest sklzoa Zadanie 7 Podzielność przez 3 Dana jest liczba całkowita dodatnia mająca maksymalnie 250 cyfr. Napisz program, który sprawdzi czy podana liczba jest podzielna przez 3. Przykład Dla liczby: 123456789123456789 123456789123456789 123456789123456789 123456789123456789 Poprawną odpowiedzią jest napis: TAK Zadanie 8 Szyfr Cezara Przypuśćmy, że mamy tekst zapisany za pomocą 26 liter alfabetu łacińskiego: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z i chcemy ten tekst zaszyfrować. W tym celu utożsamiamy zbiór liter z liczbami z zakresu { 0 .. 25 }: a = 0, b = 1, c = 2, ..., z = 25, wybieramy dwie liczby a, b z przedziału od 0 do 25, tak że NWD(a,26) = 1, i szyfrujemy litera po literze według wzoru C(x) = ax+b (mod 26). Wejście W pierwszym wierszu standardowego wejścia zapisano trzy wartości L, a i b. L (2 ≤ L ≤ 200) jest liczbą wierszy do zakodowania, natomiast a, b są współczynnikami równania do kodowania. W następnych L wierszach zapisane są ciągi znaków do zakodowania Wyjście W L wierszach standardowego wyjścia zapisane są ciągi znaków nie dłuższe niż 250 znaków zakodowanych równaniem liniowym o wczytanych współczynnikach z zachowaniem kolejności wczytania ze standardowego wejścia. Przykład Dla danych 1 23 20 matematyka poprawna odpowiedź to: kupikupaqu -3Rafaello Język C++ Zadanie 9 Deszyfrowanie liniowe (zadanie trudniejsze) Przypuśćmy, że mamy tekst zapisany za pomocą 26 liter alfabetu łacińskiego: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z i chcemy ten tekst zaszyfrować. W tym celu utożsamiamy zbiór liter z liczbami z zakresu { 0 .. 25 }: a = 0, b = 1, c = 2, ..., z = 25, wybieramy dwie liczby a, b z przedziału od 0 do 25, tak że NWD(a,26) = 1, i szyfrujemy litera po literze według wzoru C(x) = ax+b (mod 26). Wejście W pierwszym wierszu standardowego wejścia zapisano trzy wartości L, a i b. L (2 ≤ L ≤ 200) jest liczbą wierszy do rozkodowania, natomiast a, b są współczynnikami równania do kodowania. W następnych L wierszach zapisane są ciągi znaków zakodowanych tym równaniem. Wyjście W L wierszach standardowego wyjścia zapisane są ciągi znaków nie dłuższe niż 250 znaków rozkodowanych równaniem liniowym o wczytanych współczynnikach z zachowaniem kolejności wczytania ze standardowego wejścia. Przykład Dla danych 2 23 20 kupikupaqu pagu poprawna odpowiedź to matematyka tywa Zadanie 10 Własna arytmetyka – dodawanie Opracuj program wczytujący ze standardowego wejścia dwie liczby, oblicza ich sumę, którą zapisuje do standardowego wyjścia. Wejście W pierwszym wierszu zapisano liczbę do 200 cyfr. W drugim wierszu zapisano drugą liczbę do 200 cyfr. Wyjście Na wyjściu zapisano sumę wczytanych liczb. Przykład Dla danych 123 232 poprawna odpowiedź to 355 Zadanie 11 Ciężarówki Mamy do dyspozycji n ciężarówek. Każda ciężarówka jest opisana za pomocą napisu złożonego z co najmniej 1 i co najwyżej 250 małych liter alfabetu angielskiego (od a do z). Masa ciężarówki jest podana jako długość napisu. Wszystkie ciężarówki różnią się masami. Opracuj program, który wczytuje ze standardowego wejścia liczbę ciężarówek oraz ich opis każdy w oddzielnym wierszu i zapisuje ten opis do standardowego wyjścia w kolejności rosnącej. Przykład Dla danych poprawną 4 odpowiedzią jest aabbcc klm z ns z ns klm aabbcc -4Rafaello