Zajęcia 4 procedury i funkcje



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

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

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

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

Rekurencja (rekursja)

Programowanie komputerowe. Zajęcia 3

C++ wprowadzanie zmiennych

Zajęcia 6 pliki tekstowe

Programowanie komputerowe. Zajęcia 4

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

Podstawy programowania w języku C++

Zajęcia 6 wskaźniki i tablice dynamiczne

Algorytmy i język C++

Podstawy Programowania

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

Podstawy programowania

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

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

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

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

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zadania z podstaw programowania obiektowego

Programowanie komputerowe. Zajęcia 5

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Programowanie - wykład 4

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

Zajęcia 6 wskaźniki i tablice dynamiczne

Programowanie w języku Java

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Programowanie 2 - Tablice i łańcuchy

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

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

dr inż. Jarosław Forenc

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

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Egzamin z Podstaw informatyki i programowania 2007/2008

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

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

Liczby całkowite i rzeczywiste

Część 4 życie programu

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

ALGORYTMY I STRUKTURY DANYCH

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Zasady programowania Dokumentacja

Lekcja 6: Pascal. Procedura i funkcja

Grzegorz Paweł Korbaś. Podstawy C++ Zbiór zadań z rozwiązaniami. Opole 2011 wydanie pierwsze wydawnictwo czytnia.pl

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Pytania sprawdzające wiedzę z programowania C++

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Podstawy programowania w języku C++

1 Powtórzenie wiadomości

Wprowadzenie do języka Java

4. Funkcje. Przykłady

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

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

lekcja 8a Gry komputerowe MasterMind

Struktury, unie, formatowanie, wskaźniki

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

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

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

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Tablice, funkcje - wprowadzenie

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

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

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

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Lista 2. int porownaj_liczby_normalnie(const int a, const int b) { if(a==b) return 0; if(a>b)return1; return-1; }

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

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

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Języki programowania imperatywnego

STL: Lekcja 1&2. Filozofia STL

Przeciążanie funkcji. Przykład 1: #include <iostream> using namespace std; double srednia(double n1, double n2) { return ((n1 + n2)/2.

Pliki wykład 2. Dorota Pylak

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

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

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Szablony funkcji i klas (templates)

Język ludzki kod maszynowy

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

Instrukcje sterujące

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Projektowanie klas c.d. Projektowanie klas przykład

Klasy: String, Random, Math. Korzystanie z dokumentacji.

Wartości domyślne, przeciażenia funkcji

DYNAMICZNE PRZYDZIELANIE PAMIECI

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

Transkrypt:

Zajęcia 4 procedury i funkcje 1. Napisz funkcję, która dokonuje dodania dwóch liczb przekazanych jako parametry. Następnie: zmień wartości zmiennych przekazanych jako parametry wewnątrz tej funkcji, ustaw jeden z parametrów do przekazywania przez wartość, a drugi przez referencję, wyświetl wartości obydwóch zmiennych w programie, w którym wywołana została funkcja. Na ekranie należy wypisać wartość zwróconą przez funkcję oraz wartości parametrów przed i po wywołaniu funkcji. intsuma(inta,int&b);//gdziebprzekazanejestprzezreferencję 2. Napisz funkcję, która zwraca wartość n-tego wyrazu ciągu Fibonacciego. Funkcja powinna być napisana w dwóch wersjach: iteracyjnej i rekurencyjnej. unsigned fib(unsigned n); unsigned fibrekurencyjna(unsigned n); 3. Napisz funkcję, która zwraca wartość silni dla podanej liczby n. Funkcja powinna być napisana w dwóch wersjach: iteracyjnej i rekurencyjnej. long silnia(long n); long silniarekunrencja(long n); 4. Napisz program, który umożliwia szyfrowanie i deszyfrowanie podanego ciągu znaków przy użyciu szyfru Cezara(który jest szczególnym przypadkiem szyfru podstawieniowego monoalfabetycznego). Szyfrowanie ma realizować funkcja szyfruj, która przyjmuje 2 parametry: pierwszy to łańcuch znaków, natomiast drugi 6

to przesunięcie alfabetu. Zamianie mają podlegać jedynie litery alfabetu angielskiego. Wynikiem funkcji ma być zaszyfrowany tekst. string szyfruj(string tekst, unsigned int przesuniecie); string deszyfruj(string tekst, unsigned int przesuniecie); Przykład: Szyfr Cezara z przesunięciem 1 dokonuje zamiany wg. schematu: a->b b->c... z->a Szyfr Cezara z przesunięciem 3 dokonuje zamiany wg. schematu: a->d b->e... z->d 5. Napisz program obliczający wartość wielomianu stopnia n. Przykład deklaracji funkcji: double obl_wiel(double x, int n,...) W związku ze zmienną liczbą parametrów przydatne będą makra z biblioteki cstdarg: va_list... va_start(...,...) wsp=va_arg(...,...) va_end(...) 6. Napisz funkcję strfind, która szuka w tekście(pierwszy parametr) podanej frazy (drugi parametr). Wynikiem funkcji ma być indeks znaku, od którego podana fraza zaczyna się w tekście lub-1, jeżeli tekst nie zawiera szukanej frazy. Wielkość liter w podanych ciągach nie ma znaczenia. Przykład: Dla podanego fragmentu programu: char zdanie[] ="Jutro jest egzamin z programowania."; char fraza[] ="Program"; cout<<"szukamw\""<<zdanie<<"\""<<endl; 7

cout<<"\t\""<<fraza<<"\":"<<strfind(zdanie,fraza)<<endl; cout <<"\t\"jutro JEST\":" << strfind(zdanie,"jutro JEST") << endl; cout <<"\t\"wdi\":" << strfind(zdanie,"wdi") << endl; cout<<"szukamw\""<<fraza<<"\""<<endl; cout<<"\t\""<<zdanie<<"\":"<<strfind(fraza,zdanie)<<endl; cout<<"\t\""<<fraza<<"\":"<<strfind(fraza,fraza)<<endl; na ekranie powinno zostać wyświetlone: Szukam w"jutro jest egzamin z programowania." "Program":21 "jutrojest":0 "WDI":-1 Szukam w"program" "Jutro jest egzamin z programowania.":-1 "Program":0 8

Zajęcia 5 łańcuchy znaków(char[]) 1. Zdefiniować funkcję strpos(char str[], char z), która zwraca indeks na którym znajdujesięznak z wpodanymłańcuchu str Jeżeliznak z niewystępujew łańcuchu to funkcja powinna zwrócić-1. int strpos(char str[], char z) 2. Zdefiniować funkcję strint(char 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 strint( -13krowa ) wynikiem powinno być-13. int strint(char str[]) strint("+12")-wynik12 strint("0001")-wynik1 strint("991-234-23")- wynik 991 strint("-12e5")- wynik-12*10^5 =-120000 strint("-12e-5")-wynik-12 strint("+zonk")-wynik0 strint("")-wynik0 3. Zdefiniować funkcję strfind(char gdzie[], char 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ńcuchy gdzie. Jeżeli nie udało się znaleźć łańcucha to wtedy wynikiem ma być-1. int strfind(char gdzie[], char co[]) 9

strfind("alamakota","ma")-wynikto4 strfind("alamakota","alamakota")-wynikto0 strfind("alamakota","")-wynikto0,bopustyłańcuchjest podłańcuchem każdego innego łańcucha strfind("pies","jakis napis")- wynik to-1 strfind("ala ma kota","pies")- wynik to-1 4. Zdefiniować procedurę strcut(char lan[], int od, int ile), która wycina z podanego łańcucha wszystko co znajduje się poza podanym zakresem. Po zakończeniu działania łańcuch lan zawiera tylko to, co pierwotnie znajdowało się na pozycjach od -od+ile. W procedurze można wykorzystać gotową funkcję: strcpy(landoc, lanzr), która kopiuje zawartość łańcucha lanzr do łańcucha landoc, należy pamiętać o odpowiednim przydziale pamięci. void strcut(char lan[], int od, int ile) strcut("alamakota",1,2)-wynikto"la" strcut("alamakota",5,4)-wynikto"ako" 5. Zdefiniować funkcję strprefix(char str1[], char str2[]), która sprawdza, czy łańcuch str2 jest prefiksem łańcucha str1. bool strprefix(char str1[], char str2[]) strprefix("alibaba","ali")- wynik true, ponieważ wyraz "Alibaba" zaczyna się wyrazem"ali". strprefix("alibaba","alibaba")- wynik true, ponieważ wyraz jest zawsze swoim prefiksem. strprefix("kot","pies")- wynik false, ponieważ wyraz"pies" nie jest prefiksem wyrazu"kot" 6. Zdefiniować funkcję strcountfind(char gdzie[], char co[]), która zlicza wystąpienia łańcucha co w łańcuchu gdzie, jej wynikiem jest wyznaczona liczba wystąpień. Jeżelinieudałosięznaleźćłańcuchatowtedywynikiemmabyć0. W funkcji można wykorzystać gotową funkcję: strcpy(landoc, lanzr), która kopiuje zawartość łańcucha lanzr do łańcucha landoc, należy pamiętać o odpowiednim przydziale pamięci. 10

int strcountfind(char gdzie[], char co[]) strcountfind("ala ma kota","ma")- wynik to 1 strcountfind("mama ma kota","ma")- wynik to 3 strcountfind("ala mmaa ma kota","ma")- wynik to 2 strcountfind("ala ma kota","asia")- wynik to 0 7. 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 strint(). Ł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 11