Algorytmy w C++ dla opornych!

Podobne dokumenty
STL: kontenery. STL: kontenery. STL: kontenery. Typy kontenerów STL. STL: kontenery. STL: kontenery. multimap. Kontener map: przykład zadanie:

Definicja szablonu klasy. Korzystanie z szablonu. Specjalizacja metody szablonu.

Programowanie współbieżne i rozproszone

Programowanie Obiektowo Zorientowane w języku C++ Biblioteka STL

Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące

Programowanie i struktury danych

Język C++ wykład VIII

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Część 4 życie programu

STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Wstęp do programowania

Algorytm selekcji Hoare a. Łukasz Miemus

Paradygmaty programowania

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

Programowanie - wykład 4

STL: kontenery C++: STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. Fabryka obiektów. Fabryka obiektów

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Funkcje matematyczne w C. Programowanie w C Marek Pudełko

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Wykład 4. Klasa List Kolejki Stosy Słowniki

STL: Lekcja 1&2. Filozofia STL

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Wyrażenia arytmetyczne

PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

1. Wypisywanie danych

Funkcje. czyli jak programować proceduralne. Programowanie Proceduralne 1

Algorytmy i Struktury Danych, 2. ćwiczenia

I - Microsoft Visual Studio C++

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

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

Algorytmy, iteratory, kolekcje niestandardowe

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

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

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Programowanie komputerowe. Zajęcia 1

Inicjacja tablicy jednowymiarowej

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Programowanie w języku Java. Kolekcje

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

Programowanie Proceduralne

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Program 14. #include <iostream> #include <ctime> using namespace std;

Paradygmaty programowania

Algorytmy sortujące i wyszukujące

Jak Windows zarządza pamięcią?

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

5. Rekurencja. Przykłady

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

Java Collections Framework

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

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

Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji

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

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

1 Podstawy c++ w pigułce.

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 1. Wprowadzenie, środowisko programistyczne, pierwsze programy

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

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Wstęp do programowania

Funkcje. czyli jak programować proceduralne. Programowanie Proceduralne 1

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

I. Podstawy języka C powtórka

Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.)

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Akademia ETI Marcin Jurkiewicz

Wykład 3 Składnia języka C# (cz. 2)

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

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

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Wstęp do Informatyki

dr inż. Jarosław Forenc

Stałe. Funkcje standardowe. Niektóre stałe i funkcje z pliku nagłówkowego math.h. M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2

(3 kwiecień 2014) Marika Pankowska Kamila Pietrzak

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Metody Metody, parametry, zwracanie wartości

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

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

Krótkie wprowadzenie do STL. XIV LO im. S. Staszica, K06 D

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Wstęp do programowania

Sortowanie przez scalanie

Funkcja (podprogram) void

Transkrypt:

Algorytmy w C++ dla opornych! 02.10.2011 Opracował: Krzysztof Rudlicki W-ce przewodniczący SKN TeamBit krudlicki@future-processing.com

O czym będę przynudzał: O - Dlaczego będę przynudzał? O - Vector A co to takiego? I po co mi to? O - cmath Kilka ciekawostek O - algorithm Czy potrzebne mi książki? O - numeric czy ktoś to zna? O - Odpowiedź na pierwsze pytanie! O - Chyba koniec... chyba...

Dlaczego będę przynudzał? O Staropolskie przysłowie głosi: Lepiej nosić niż się prosić

Nie Nosimy! #include <cstdio> #include <vector> #include <algorithm> #include <cmath> #include <numeric> using namespace std; double l[11]; int solve(int a, int b) { if(b == 1) return a; if(a == 1) return 1; int main() { for(int i=1; i<11; ++i) l[i] = log10(i); } while(true){ int a, b; scanf("%d%d", &a, &b); if(a == 0 && b == 0) break; printf("%d\n", solve(a,b)); } return 0; double x = l[a] * (double)b; x = x - floor(x); for(int i=1; i<10; ++i){ if(x < l[i+1]) return i; } } return 9;

#include <Vector> O Rozbudowana wersja standardowej tablicy! O Dowolność typów O Większe możliwości! O Kilka rodzajów konstruktorów. O Obudowane mechanizmy modyfikujące! O Clear(); O Swap(); O Itp. O Łatwość w użyciu O vector < int > tab(20);

#include <vector> - przyłady Int n; vector<int> tab; // deklaracja vektora cin >> n; for( int i = 0; i < n; ++i ) { int element; cin >> element; tab.push_back(element); // dodanie elementu na koniec tablicy }

#include <vector>

#include <vector> Dostęp: Inne:

Pobudka!!! Nie spać!!!

#include <cmath> O Biblioteka oferuje zestaw funkcji służących do wykonywania operacji matematycznych. Do używania funkcji zawartych w tej bibliotece potrzebny jest nagłówek. #include <cmath>

#include <cmath> O Ceil () zaokrąglenie liczby w górę O Floor() zaokrąglenie liczby w dół O Round() zaokrąglenie naturalne. O Fabs() wartość bezwzględna z double. O Pow() podnosi do potęgi O fmod() zwraca resztę z dzielenia x przez y O Makra O M_E - Stała Eulera e. O M_PI - Stała matematyczna pi (π).

Przykłady wykorzystania

Pobudka!!! Nie spać!!!

#include <algorithm> O Operacje Niemodyfikujące O Operacje Szukające O Operacje Modyfikujące O Operacje Zmieniające Kolejność O Operacje Sortujące O Operacje na zbiorze O Operacje Min Max O Operacje Numeryczne

Operacje Niemodyfikujące O for_each wykonuje operację na każdym elemencie ciągu O count liczy ilość wystąpień danej wartości w ciągu O count_if zlicza w ciągu ilość wystąpień wartości spełniających warunek O equal określa czy dwa zbiory elementów są takie samea

Przykład wykorzystania

Operacje Szukające O O O O O O O mismatch znajduje pierwszą parę różnych elementów dwóch ciągów O find znajduje pierwsze wystąpienie wartości w ciągu find_if znajduje w ciągu pierwsze wystąpienie wartości spełniającej warunek find_end znajduje ostatnie wystąpienie ciągu jako podciągu find_first_of znajduje jakikolwiek element ze zbioru w danym ciągu adjacent_find znajduje sąsiadującą parę wartości search znajduje pierwsze wystąpienie ciągu jako podciągu search_n znajduje pierwsze wystąpienie ciągu n-tu wartości w ciągu

Przykład wykorzystania

Operacje Modyfikujące O copy kopiuje elementy jednego ciągu do drugiego O fill zastępuje elementy ciągu podaną wartością O generate zastępuje elementy ciągu wartościami będącymi wynikiem funkcji O transform wykonuje podaną funkcję dla argumentów ze zbioru i zapisuje wyniki w nowym ciąg O remove usuwa elementy o podanej wartości O remove_if usuwa elementy spełniające warunek O replace zastępuje elementy o danej wartości inną wartością O replace_if zastępuje elementy spełniające warunek

Przykład wykorzystania

Operacje Zmieniające Kolejność O partition umieszcza elementy spełniające warunek przed tymi które go nie spełniają O random_shuffle w losowy sposób zmienia kolejność elementów ciągu O reverse odwraca kolejność elementów w ciągu O rotate dokonuje rotacji elementów ciągu O unique usuwa powtórzenia, w taki sposób że wśród sąsiadujących elementów nie ma dwóch takich samych O swap zamienia ze sobą dwa elementy

Przykład wykorzystania

Operacje Sortujące O sort sortuje ciąg rosnąco O partial_sort sortuje pierwsze N najmniejszych elementów w ciągu O nth_element ciąg jest podzielony na dwie nieposortowane części elementów mniejszych i większych od wybranego elementu

Przykład wykorzystania

Operacje na zbiorze O merge łączy dwa posortowane ciągi O includes zwraca prawdę jeśli pierwszy ciąg jest podciągiem drugiego O set_difference tworzy różnicę dwóch zbiorów O set_intersection tworzy przecięcie dwóch zbiorów (część wspólna) O set_symmetric_difference tworzy zbiór złożony z elementów niepowtarzających się w obu ciągach O set_union tworzy sumę zbiorów

Przykład wykorzystania

Operacje Min Max O max zwraca większy z dwoch elementów O max_element zwraca największy z elementów w ciągu O min zwraca mniejszy z elementów O min_element zwraca najmniejszy z elementów w ciągu O Operacje tworzące leksykograficzne permutacje ale tego nie będę tłumaczył za trudne!

Przykład wykorzystania

Operacje Numeryczne O accumulate sumuje ciąg elementów O inner_product oblicza iloczyn skalarny na elementach dwóch ciągów O adjacent_difference oblicza różnice pomiędzy sąsiadującymi elementami w ciągu O partial_sum oblicza sumy częściowe ciągu elementów( 1 + 2 + 3 + 4 + 5)

Przykład wykorzystania

Dlaczego przynudzałem??? O Nie nosimy! O Zamiast nosić wiemy z czego możemy skorzystać O Jesteśmy sprytniejsi od tych co noszą kiążki O Co za tym idzie mamy więcej siły O Oszczędzamy czas! O Mamy gotowe rozwiązanie w pełni zoptymalizowane gotowe do użycia!

Pytania!?

Koniec pierwszej części

Dziękuję za uwagę