Zajęcia 5 łańcuchy znaków (ciąg dalszy) i funkcje

Podobne dokumenty
Zajęcia 4 procedury i funkcje

Zajęcia 6 pliki tekstowe

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Ćwiczenie 8 Kolory i znaki specjalne


Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy.

1. Napisz program wypisujący w kolejnych wierszach standardowego wyjścia pojedyncze słowa następującego napisu Bardzo dlugi napis. 2.

Zajęcia 6 wskaźniki i tablice dynamiczne

Zajęcia 6 wskaźniki i tablice dynamiczne

Rekurencja (rekursja)

Algorytmy sortujące i wyszukujące

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Języki formalne i automaty Ćwiczenia 6

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

ALGORYTMY I STRUKTURY DANYCH

Inicjacja tablicy jednowymiarowej

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Programowanie 3 - Funkcje, pliki i klasy

1 Powtórzenie wiadomości

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%.

Stałe oznaczane są słowem kluczowym final. Do stałej wartość można przypisać tylko raz. Dobrą konwencją jest nazywanie stałych wielkimi literami

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Podstawy Programowania

ŁAŃCUCHY W JĘZYKU C/C++

I. Podstawy języka C powtórka

Podstawy obiektowości

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Zasady programowania Dokumentacja

lekcja 8a Gry komputerowe MasterMind

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

I znowu można jak w C, za pomocą starych struktur i metod:

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 2017/18. Informatyka Etap III

Programowanie w języku Java

do instrukcja while (wyrażenie);

Programowanie 2 - Tablice i łańcuchy

Języki programowania obiektowego Nieobiektowe elementy języka C++

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Pliki. Informacje ogólne. Obsługa plików w języku C

Podstawy programowania w języku C++

Pomorski Czarodziej 2016 Zadania. Kategoria C

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

GRUPA ĆWICZENIOWA (ZAKREŚL ODPOWIEDNIĄ): MG8 MG13 MB13 MD13 BT13

Tablice, funkcje - wprowadzenie

142 Egzamin maturalny. Informatyka. Poziom rozszerzony. Zbiór zadań

Programowanie w języku Java

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

Zestaw 2 Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp)!!!

Języki programowania imperatywnego

Lekcja 6: Pascal. Procedura i funkcja

Rekurencja. Przykład. Rozważmy ciąg

Prawidłowa konstrukcja (3 x 4) char** tab = new char*[3]; for (size_t i = 0; i < 3; i++) tab[i] = new char[4];

> C++ typy wyliczeniowe, struktury, unie, konwersje napis <-> liczba, formatowanie wyjścia

Podstawy i języki programowania

4. Funkcje. Przykłady

Zadanie 1. Potęgi (14 pkt)

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Programowanie obiektowe - zadania

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Algorytmy i struktury danych. Wykład 4

Laboratorium 10: Maszyna stanów

Ściągawka z funkcji i właściwości systemowych VBA. Opis działania i parametrów. Nazwa funkcji. Składnia zwracanej wartości

Podstawy Programowania Podstawowa składnia języka C++

Pytanie 1. Pytanie 2. Pytanie 3 WOJEWÓDZKI KONKURS INFORMATYCZNY. Treść pytania

Funkcje wbudowane PHP

Podstawy programowania

Zadania z podstaw programowania obiektowego

Ćwiczenie: JavaScript Cookies (3x45 minut)

Liga zadaniowa - Informatyka. Zad 1. (Python lub Logomocja)

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Algorytmika i programowanie

WYPEŁNIA KOMISJA KONKURSOWA

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Metody numeryczne Laboratorium 2

Numeracja dla rejestrów zewnętrznych

Struktury, unie, formatowanie, wskaźniki

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

1. Wprowadzenie do języka PHP

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

VII. Ciągi znaków łańcuchy

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Zestaw 1-1 Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp)!!!

Programowanie w języku Java

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Palindromy. Przykładowe rozwiązanie

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Funkcje Typy wyliczeniowe Struktury, unie Scanf / printf Wskaźniki

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Transkrypt:

Zajęcia 5 łańcuchy znaków (ciąg dalszy) i funkcje 1. Napisz funkcję, która zwraca wartość silni dla podanej liczby n. Funkcja powinna być napisana w dwóch wersjach: iteracyjnej i rekurencyjnej. 2. Napisz funkcję, która zwraca wartość n-tego wyrazu ciągu Fibonacciego. Funkcja powinna być napisana w dwóch wersjach: iteracyjnej i rekurencyjnej. Ciąg Fibonacciego dany jest wzorem: 1 gdy n = 0, F n = 2 gdy n = 1, F n 2 + F n 1 gdy n > 1. 3. Zdefiniować funkcję int strpos(string text, char z), która zwraca indeks na którym znajduje się znak z (drugi parametr) w podanym łańcuchu text. Jeżeli znak z nie występuje w łańcuchu, to wynikiem funkcji powinno być -1. Uwaga - pozycje znaków numerujemy począwszy od 0. 4. Napisać funkcję String flipcase(string text), która zamieni małe litery na duże i odwrotnie w łańcuchu podanym jako parametr. Wynikiem ma być łańcuch znaków zawierający kopię łańcucha po zmianie wielkości liter. 5. Zdefiniować funkcję boolean startswith(string str1, String str2), która sprawdza, czy łańcuch str2 jest prefiksem łańcucha str1. startswith("alibaba", "Ali") - wynik, ponieważ wyraz "Alibaba" zaczyna się wyrazem "Ali". startswith("alibaba", "Alibaba") - wynik, ponieważ wyraz jest zawsze swoim prefiksem. startswith("kot", "Pies") - wynik false, ponieważ wyraz "Pies" nie jest prefiksem wyrazu "Kot" 6. Zdefiniować funkcję int strtoint(string str), która zamienia liczbę całkowitą zapisaną w postaci łańcucha na liczbę całkowitą typu int. Funkcja powinna przerywać konwersję w momencie napotkania pierwszego znaku nie należącego do zapisu liczby, zatem np. dla strtoint("-13krowa") wynikiem powinno być -13. Pozostałe przykłady: 12

strtoint("+12") - wynik 12 strtoint("0001") - wynik 1 strtoint("991-234-23") - wynik 991 strtoint("+zonk") - wynik 0 strtoint("") - wynik 0 strtoint("-12e5") - wynik -12*10^5 = -120000 strtoint("-12e-5") - wynik -12, tylko dodatnie wykładniki są rozpatrywane 7. Zdefiniować funkcję int strfind(string gdzie, String co), która szuka łańcucha co w łańcuchu gdzie i jeżeli go znajdzie, to jej wynikiem jest pozycja, na której ten łańcuch zaczyna się w łańcuchu gdzie. Jeżeli nie udało się znaleźć łańcucha to wtedy wynikiem ma być -1. strfind("ala ma kota", "ma") - wynik to 4 strfind("ala ma kota", "Ala ma kota") - wynik to 0 strfind("ala ma kota", "") - wynik to 0, bo pusty łańcuch jest podłańcuchem każdego innego łańcucha strfind("pies", "jakis napis") - wynik to -1 strfind("ala ma kota", "pies") - wynik to -1 8. Napisać funkcję int wordcount(string text), której wynikiem jest liczba wszystkich słów występujących w podanym jako parametr tekście. Do sprawdzania, czy dany znak tekstu jest białym znakiem można zastosować metodę Character.isWhitespace. Za słowo przyjmujemy każdy ciąg znaków niezawierający białego znaku. 9. Napisać funkcję String[] podzielnaslowa(string tekst), która dzieli podany tekst na słowa i zapisuje je w tablicy. Wynikiem funkcji jest tablica zawierające kolejno słowa z tekstu. Za słowo przyjmujemy każdy ciąg znaków niezawierający białego znaku. 10. Zdefiniować funkcję int strfindandcount(string gdzie, String co), która zlicza wystąpienia łańcucha co w łańcuchu gdzie. Jej wynikiem jest wyznaczona liczba wystąpień. Jeżeli nie udało się znaleźć łańcucha, to wtedy wynikiem jest, oczywiście, 0. strfindandcount("ala ma kota", "ma") - wynik to 1 strfindandcount("mama ma kota", "ma") - wynik to 3 strfindandcount("ala mmaa ma kota", "ma") - wynik to 2 strfindandcount("ala ma kota", "Asia") - wynik to 0 13

11. Zdefiniować procedurę String strcut(string str, int start, int ile), która wycina z podanego łańcucha wszystko co znajduje się w podanym zakresie. Wynikiem funkcji powinien być łańcuch bez znaków znajdujących się na pozycjach od start do start+ile-1. strcut("ala ma kota", 4, 3) - wynik to "Ala kota" strcut("ala ma kota", 0, 4) - wynik to "ma kota" strcut("ala ma kota", 0, 11) - wynik to "" 12. Napisać program, który wykorzystując część z zaimplementowanych wcześniej funkcji wyznacza: Sumę wszystkich liczb znajdujących się w tablicy (jako liczbę traktuje się łańcuch, którego początkiem jest liczba - format jak w funkcji strtoint(). Łańcuch będący połączeniem wszystkich komórek tablicy, których wartość łańcucha nie jest liczbą (definicja liczby analogiczna do pkt. 1). Liczbę wystąpień określonej frazy we wszystkich komórkach nieliczbowych tablicy. Liczbę wystąpień określonej frazy w łańcuchu, o którym mowa w pkt. 2. Stosunek wystąpień frazy w komórkach tablicy (pkt. 3) do liczby wystąpień w powstałym łańcuchu (pkt. 4). Przykład: Tablica, o której mowa w zadaniu: zadania[n][m]={"mamla", " mama ", "+12", "0001", "991-234-3", "-12e5", "-12e-5", "+zonmakm", "ax2", "amakotma"}; // gdzie N=M=10; Szukana fraza: f[n]="ma"; Wynik wyświetlony na konsolę: Pkt. 1: -1199008 Pkt. 2: mamla mama +zonmakmax2amakotma Pkt. 3: 6 Pkt. 4: 7 Pkt. 5: 0.857143 13. Napisać funkcję String poprzestawiaj(string tekst, int [] kolejnosc), której wynikiem jest łańcuch złożony ze znaków w zmiennej tekst ułożonych wg kolejności podanej w tablicy kolejnosc, tzn. i-ty znak tekstu powinien znaleźć się w wynikowym łańcuchu na pozycji kolejnosc[i]. Przykład, dla poniższego wywołania funkcji: 14

String tekst = "Egzamin"; int [] kol = { 0, 1, 4, 3, 2, 6, 5 }; System.out.println(poprzestawiaj(tekst, kol)); wynikiem powinien być łańcuch: Egmazni 14. Napisać funkcję boolean czyanagram(string t1, String t2), która sprawdza, czy łańcuch t2 jest anagramem tekstu t1, czyli czy składa się z tych samych znaków, ale ustawionych niekoniecznie w tej samej kolejności Uwaga, należy sprawdzać jedynie małe i duże litery alfabetu angielskiego, jednak bez względu na ich wielkość, tzn. zarówno małe a jak i duże A liczone są tak samo. Pozostałe znaki nie są sprawdzane, a więc nie mają wpływu na to, czy słowo będzie uznane za anagram innego. Przykładowo, dla poniższego fragmentu programu: System.out.println(czyAnagram("kolej", "olejk")); System.out.println(czyAnagram("kolej", "kole")); System.out.println(czyAnagram("kolej", "K O L E J")); System.out.println(czyAnagram("Gregory House", "Huge ego, sorry")); na ekranie powinno zostać wyświetlone: false 15. W języku HTML oraz kaskadowych arkuszach stylów (CSS) powszechne jest ustalanie kolorów elementów w postaci łańcucha #RRGGBB, gdzie RR jest dwucyfrową liczbą (od 0x0 do 0xFF) w kodzie szesnastkowym oznaczającą ile czerwieni jest w wynikowym kolorze. Analogicznie GG oznacza nasycenie zieleni, a BB niebieskiego. Napisać funkcję int [] HTMLColor2RGB(String color), która jako parametr przyjmuje łańcuch postaci #RRGGBB i zwraca tablicę 3 liczb całkowitych w systemie 10 oznaczających nasycenie poszczególnych składowych. Przykład Wynikiem HTMLColor2RGB("#FF0050") powinna być tablica { 255, 0, 80 }. Wynikiem HTMLColor2RGB("#001020") powinna być tablica { 0, 16, 32 }. 15

16. Dywan Sierpińskiego to fraktal otrzymany z kwadratu poprzez podzielenie go na dziewięć (3 3) mniejszych kwadratów i usunięcie środkowego kwadratu. Procedura ta stosowana jest rekurencyjnie do ośmiu powstałych w ten sposób mniejszych kwadratów. Napisać funkcję rekurencyjną, która wyznacza tekstowo graficzną reprezentację dywanu Sierpińskiego po n krokach. Należy przyjąć, że rysowanie odbywa się w tablicy znaków o wymiarach n 3 n 3. Jeżeli dane pole ma być zamalowane wstawiany jest symbol #, w przeciwnym razie spacja. Powstałą w ten sposób tablicę znaków należy wypisać na ekranie. Przykład wykonania dla kolejnych wartości n. Dla n = 1: # Dla n = 2: # ## ## # ### ### # # # # ### ### # ## ## # Dla n = 3: # # # ## # # ## # # # # ## ## # # ## ## # ### ### ### ### # # # # # # # # ### ### ### ### # ## ## # # ## ## # # # # ## # # ## # # # 16