Wykorzystanie elementów z biblioteki standardowej C++: vector, list, complex oraz string.

Podobne dokumenty
Programowanie i struktury danych

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 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

STL: Lekcja 1&2. Filozofia STL

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

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

BIBLIOTEKA STANDARDOWA C++

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

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

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Język C++ wykład VIII

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

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

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.

Wzorce funkcji (szablony)

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

STL Standardt Template Library (wprowadzenie)

Pojemniki Pojemnik to obiekt, którego zadaniem jest przechowywanie innych obiektów.

1 Podstawy c++ w pigułce.

Programowanie komputerowe. Zajęcia 5

Szablony klas, zastosowanie szablonów w programach

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

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

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Szablon klasy std::vector

Podstawy Programowania C++

Biblioteka standardowa C++

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

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

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

Podstawy programowania skrót z wykładów:

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

dr inż. Jarosław Forenc

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

Algorytmy i Struktury Danych.

Kompletna dokumentacja kontenera C++ vector w -

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

void Pobierz(Student &a); void Wypisz(Student a); void Ustaw_zaliczenia(Student t[],int r); void Wypisz_najlepszych(Student t[],int r, float prog);

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

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

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

FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1)

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

Część 4 życie programu

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

1 Podstawy c++ w pigułce.

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

XII. Warunek wielokrotnego wyboru switch... case

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

XV. Wskaźniki Odczytywanie adresu pamięci istniejących zmiennych Wskaźniki pierwsze spojrzenie.

W przypadku STL w specyfikacji nazwy pliku nagłówkowego brak rozszerzenia tj. <string> <string.h> zamiast

Przekazywanie argumentów wskaźniki

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

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

C++ Przeładowanie operatorów i wzorce w klasach

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Paradygmaty programowania

Jak Windows zarządza pamięcią?

Program 22. #include <iostream> using namespace std; struct Osoba { string Imie; string Nazwisko; char Plec; int RokUr; };

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Biblioteka STL - wstęp. Biblioteka STL - literatura. Biblioteka STL - przegląd. Biblioteka STL - kwestie techniczne

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

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

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

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

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Projektowanie klas c.d. Projektowanie klas przykład

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

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

Struktury Danych i Złożoność Obliczeniowa

Wstęp do programowania

ZASADY PROGRAMOWANIA KOMPUTERÓW

Programowanie - wykład 4

Zmienne i struktury dynamiczne

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

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

Operatory na rzecz typu TString

Programowanie komputerowe. Zajęcia 1

r. Tablice podstawowe operacje na tablicach

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

STL Standard Template Library

Mechanizm dziedziczenia

C++ wprowadzanie zmiennych

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

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

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

Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz.

Wstęp do Programowania 2

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

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

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

I - Microsoft Visual Studio C++

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

Transkrypt:

1 Wykorzystanie elementów z biblioteki standardowej C++: vector, list, complex oraz string. 1.Biblioteka standardowa w języku C++ Biblioteka standardowa to biblioteka zawierająca podstawowe funkcje i typy danych, dostarczana wraz kompilatorem lub interpreterem danego języka programowania. Dla niektórych języków, w tym C++, istnieje formalna specyfikacja zawartości i działania biblioteki standardowej. Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe do uŝycia w programach. STL jest to tzw. biblioteka generyczna, co oznacza, Ŝe jej składniki współpracują równie dobrze z typami wbudowanymi w język, z typami wbudowanymi w bibliotekę, co z typami zdefiniowanymi przez uŝytkownika, pod warunkiem, Ŝe spełniają pewne określone warunki. 2.Pojemniki (zasobniki) Jedną z najwaŝniejszych rzeczy wprowadzonych przez STL, są pojemniki, czyli obiekty zbiorcze. Jest ich kilka rodzajów, róŝnią się konstrukcją i tym samym wydajnością poszczególnych operacji. 2.1. vector Zasobnik vector jest klasą bardzo podobną do tablicy. Zawiera w sobie strukturę danych z sąsiadującym umiejscowieniem w pamięci. Jest to ulepszona wersja tablic z C lub C++. Nie jest konieczna wiedza jak duŝej tablicy potrzebujemy, kiedy deklarujemy obiekt klasy vector. MoŜemy dodawać nowe elementy na koniec obiektu - kontenera korzystając z metody push_back. Aby uŝywać klasy wektor naleŝy dodać plik nagłówkowy: #include <vector> vector jest wzorcem klasy, więc jeśli podczas deklaracji obiektu trzeba określić typ obiektów, jaki ma w sobie zawierać klasa vector. Na przykład poniŝszy kod: vector<int> v1; vector<string> v2; vector<transformator > v3; deklaruje v1 jako obiekt typu vector, która zawiera w sobie liczby całkowite, v2 jako obiekt typu vector przechowującą napisy (klasa string została omówiona w dalszej części instrukcji) oraz obiekt v3 jako obiekt typu vector przechowującą obiekty typu 1

2 Transformator (klasę zdefiniowaną przez uŝytkownika). Te deklaracje nic nie mówią na temat wielkości poszczególnych obiektów (co oznacza, Ŝe będą to wartości domyślne). MoŜna podać początkową wielkość obiektu klasy vector uŝywając deklaracji takiej jak: vector<char> v4(26); w ten sposób deklarujemy obiekt typu vector o rozmiarze początkowym 26 elementów typu char. Jest równieŝ sposób na inicjalizację elementów obiektu typu vector. Deklaracja: vector<float> v5(100,1.0); mówi o tym, Ŝe v5 jest obiektem typu vector przechowującym zmienne typu float. Obiekt ten składa się ze stu elementów i kaŝdy element jest inicjalizowany wartością 1.0 Aby dowiedzieć się ile elementów zawiera obiekt typu vector naleŝy uŝyć metodę size. Ta funkcja nie ma Ŝadnych argumentów i zwraca liczbę całkowitą, która określa ile elementów zawiera w sobie dany obiekt. Przykład uŝycia: cout << "wektor v1 ma " << v1.size() << " elementów\n"; Aby sprawdzić czy obiekt jest pusty moŝna skorzystać z metody empty. Metoda ta nie ma Ŝadnych argumentów i zwraca wartość typu bool: true (1) jeśli obiekt jest pusty lub false (0) jeśli nie jest pusty. Przykład: if( v1.empty() ) cout << "wektor pusty" << endl; else cout << "wektor NIE pusty" << endl; Dostęp do poszczególnych elementów obiektu typu vector moŝna uzyskać korzystając z operatora []. Aby wydrukować wszystkie elementy obiektu typu vector moŝna uŝyć kodu takiego jak poniŝej : for (int i=0; i<v1.size(); i++) cout << v1[i]; (ten kod jest bardzo podobny do kodu pisanego dla zwykłych tablic). Z operatora[] moŝna równieŝ korzystać Ŝeby zmienić wartość poszczególnych elementów klasy vector. for (int i=0; i<v1.size(); i++) v1[i] = 2*i; Oprócz operatora[] jest wiele sposobów na dostęp lub zmianę elementów obiektu typu vector. Funkcja push_back dodaje nowy element na końcu klasy vector. Metoda ta pobiera jeden argument typu przechowywanego w klasie vector: for (int i=0; i<10; i++) v1.push_back(i); PowyŜszy kod dodaje do tablicy v1 10 elementów o wartości od 0 do 9, za kaŝdym razem zwiększając wymiar tablicy o jeden. 2

3 Funkcja pop_back usuwa ostatni element z klasy vector. Metoda ta nie pobiera Ŝadnych argumentów. Błędem jest uŝycie pop_back na pustym obiekcie klasy vector. if(!v1.empty() ) v1.pop_back(); PowyŜszy kod dla niepustego wektora usuwa ostatni element z tablicy, zmniejszając jej wymiar o jeden. Aby zmienić rozmiar tablicy moŝna posłuŝyć się metodą resize. JeŜeli wymiar tablicy jest zwiększany, to nowe elementy są tworzone przez ich konstruktor domyślny lub jako kopia przekazanego elementu (patrz dalej). JeŜeli natomiast tablica jest zmniejszana, to zostają kasowane elementy od końca wektora. Metoda resize ma dwie postacie: a) resize( num ); Opis: Zmienia liczbę elementów na num. Jeśli wzrasta liczba elementów, to nowe elementy tworzone są poprzez ich konstruktor domyślny. b) resize( num, elem ); Opis: Zmienia liczbę elementów na num. Jeśli wzrasta liczba elementów, to nowe elementy tworzone są kopiami elementu elem.. Na przykład poniŝszy kod: std::vector<int> v1(10,0); v1.resize(15,1); utworzy tablicę 10 elementów o wartości 0, a następnie zwiększy liczbę elementów do 15, a brakujące 5 elementów będzie miało wartość 1. Funkcja insert wstawia jeden lub więcej elementów, na określoną pozycję w klasie vector. Natomiast metoda erase usuwa jeden lub więcej elementów z określonych pozycji. Obie funkcje są kosztownymi operacjami na zasobnikach typu vector. Jeśli zachodzi konieczność częstego wstawiania lub usuwania elementu na określonych pozycjach naleŝy rozwaŝyć uŝycie zasobnika list na którym operacje te są bardziej wydajne. Obie funkcje nie będą omawiane w niniejszej instrukcji, poniewaŝ wymagają one wprowadzenia i omówienia pojęcia iteratorów, kolejnego elementu biblioteki STL, co wykracza poza zakres ćwiczenia. 2.2. Tablica dwuwymiarowa Kontener vector umoŝliwia równieŝ tworzenie tablic dwu i wielowymiarowych. Koncepcja deklarowania tablicy wielowymiarowej przedstawia się następująco: Deklarowanie wektora, który będzie przechowywał inne wektory wiersze tablicy. Dostęp do elementu i,j odbywa się w ten sposób, Ŝe najpierw z pierwszego wektora naleŝy pobrać wektor z informacjami dla wiersza o indeksie i, a następnie element odpowiadający kolumnie j. Oto ilustracja graficzna powyŝszego sposobu: 3

4 Na przykład poniŝszy kod: std::vector<std::vector<double> > tab1; std::vector<std::vector< liczba_zesp > > tab2; deklaruje tab1 jako obiekt typu vector, która zawiera tablicę dwuwymiarową dla liczbami, obiekt tab2 jako tablicę dwuwymiarową przechowującą obiekty typu liczba_zesp (klasę omówioną w dalszej części instrukcji). Te deklaracje nic nie mówią na temat wielkości poszczególnych obiektów (co oznacza, Ŝe będą to wartości domyślne). Uwaga: pomiędzy double> a > MUSI być znak spacji, inaczej kompilator oznajmi błąd. Aby zadeklarować tablicę dwuwymiarową o wymiarze 10 na 10 naleŝy na przykład wpisać: vector< vector<double> > v1(10,10); Aby zmienić wymiar tablicy, naleŝy uŝyć omówionej wcześniej metody resize, co ilustruje następujący kod: v1.resize(20); for(int i=0; i<v1.size(); i++) v1[i].resize(20); Dostęp do elementu i,j moŝna uzyskać za pomocą dwukrotnego uŝycia operatora []: v1[0][0]=10.0; v1[3][3]=v1[0][0] + 123; NaleŜy oczywiście uwaŝać, aby nie próbować odczytać elementu z poza tablicy. 2.3. Inne kontenery Oprócz kontenera vector biblioteka STL wprowadza inne kontenery: a) deque Jest to kolejka o dwóch końcach. Kolejka deque jest bardzo podobna do wektora vector. RóŜnica polega na tym, Ŝe w przypadku kolejki tablica dynamiczna jest otwarta z obydwu końców. Oznacza to, Ŝe kolejka zapewnia szybkie wstawianie i usuwanie elementów zarówno na końcu, jak i na początku kontenera. 4

5 b) list Elementy listy zorganizowane są w postaci listy dwukierunkowej. Dostęp do elementów listy odbywa się poprzez przejście przez powiązania listy od początku (lub końca) do szukanego elementu. Lista ma tą zaletę, Ŝe wstawianie elementów w dowolnym miejscu listy jest duŝo szybsze niŝ w przypadku wektorów i kolejek. c) set, multiset Kontenery set (zbiór) i multiset (wielozbiór) wykonują automatyczne sortowanie swoich elementów zgodnie z określonym kryterium. RóŜnica polega na tym, Ŝe wielozbiory dopuszczają powtórzenie elementów. Największą zaletą automatycznego sortowania jest wysoka wydajność przy wyszukiwaniu elementów o określonej wartości. Automatyczne sortowanie nakłada jednak ograniczenie: nie moŝna bezpośrednio zmieniać wartości elementu, poniewaŝ mogłoby to zburzyć prawidłową kolejność. d) map, multimap Kontenery map (mapa) i multimap (multimapa) są kontenerami, których elementami są pary klucz-wartość. Ich elementy są automatycznie sortowane zgodnie z określonym kryterium sortowania, stosowanymi wobec bieŝącego klucza (jednego z elementów przechowywanej pary). 3.Klasa string 4.Klasa complex dla reprezentacji liczb zespolonych. Klasa complex powstała jako jeden z najwcześniejszych (jeśli nie liczyć iostream) części biblioteki standardowej C++. Aby móc uŝywać tej klasy, naleŝy dodać plik nagłówkowy: #include <complex> Klasa complex jest wzorcem z jednym argumentem typem pola (zazwyczaj typu zmiennoprzecinkowego), zatem aby zadeklarować zmienną tego typu naleŝy wpisać następujący kod: complex<double> z1; Nie jest to wygodne przy deklaracji wielu zmiennych oraz tablic liczb zespolonych, dlatego najlepiej posłuŝyć się instrukcją typedef, najlepiej wpisaną zaraz po dodaniu pliku nagłówkowego: #include <complex> using namespace std; typedef complex<double> liczba_zesp; Po tej instrukcji moŝna deklarować obiekty typu complex<double>. Następujący kod: liczba_zesp z1, z2; liczba_zesp *pz = &z1; liczba_zesp &ref = z2; 5

6 vector<liczba_zesp> vz(10); tworzy dwie zmienne liczby zespolone z1 i z2, tworzy wskaźnik do liczby zespolonej pz, referencję do liczby zespolonej ref oraz wektor 10 liczb zespolonych vz. Klasa liczb zespolonych ma implementować operacje na liczbach zespolonych, posiada zatem swoją część rzeczywistą i urojoną oraz róŝne operacje, które się zwykle na takich liczbach wykonuje (wraz z przeciąŝonymi operatorami). 4.1. Tworzenie obiektów typu complex Aby zadeklarować zmienną typu complex naleŝy wpisać: liczba_zesp z1 Zostanie utworzona liczba zespolona, której część rzeczywista równa się części urojonej i jest równa zero. Aby nadać wartość początkową naleŝy utworzyć obiekt poprzez konstruktor z parametrami, czyli: liczba_zesp z2(10,20); PowyŜszy kod utworzy liczbę zespoloną, dla której część rzeczywista jest równa 10, a część urojona 20. Aby zmienić wartość dla liczby zespolonej, która juŝ istnieje, naleŝy utworzyć nowy obiekt tymczasowy i posłuŝyć się operatorem podstawienia: liczba_zesp z1;... z1 = liczba_zesp(3,3); 4.2. Operatory arytmetyczne Klasa complex dostarcza podstawowe operatory arytmetyczne: +, -, *, /, które są zgodne z tym, jak się te operacje wykonuje na liczbach zespolonych. Przykład: liczba_zesp z1(10,10), z2(2,2), z3;... z3 = z1 * z2 z1 + z2/z1; Po prawej stronie operatora moŝe być zarówno typ complex, jak liczba typ parametryzujący wzorzec: liczba_zesp z1,z2; double d=10;... z2 = d * z1 + 120.0; Uwaga: MoŜna posługiwać się TYLKO typem parametryzującym wzorzec, w omawianym przypadku typem double. Ponad to w sposób jawny naleŝy wpisać, Ŝe to jest liczba typu double, czyli nie moŝna wpisywać 120, trzeba wpisać 120.0 (120 kropka 0). Inaczej kompilator zaprotestuje. 6

7 4.3. Operatory relacji Do porównania (relacji) dwóch liczb zespolonych do dyspozycji są operatory == oraz!=. (równy i róŝny). NIE istnieją operatory >, >= itp., poniewaŝ nie mają one sensu matematycznego. 4.4. Funkcje specjalizowane real, imag zarówno jako funkcje globalne z jednym argumentem, jak i metody klas complex, zwracają odpowiednio część rzeczywistą i urojoną. Przykład: cout << "część rzeczywista: " << z1.real() << endl; Za wyjątkiem tych dwóch funkcji wszystkie pozostałe są funkcjami globalnymi. abs funkcja oblicza wartość absolutna/bezwzględna/moduł czyli sqrt(re2+im2). Przykład: cout << "moduł z1: " << abs(z1) << endl; arg funkcja zwraca argument liczby zespolonej (z postaci wykładniczej liczby zespolonej). Argument jest wyraŝany w radianach. Przykład: cout << "argument z1: " << arg(z1) << endl; polar(mod,arg) funkcja słuŝy do konwersji z postaci moduł/argument na liczbę zespoloną w reprezentacji algebraicznej część rzeczywista i urojona. Argument jest wyraŝany w radianach. Przykład: liczba_zesp z1; z1 = polar(100, 3.1415/2.0); conj funkcja konwertuje podaną liczbę zespoloną na liczbę zespoloną sprzęŝoną (dla przypomnienia: jest to liczba, której część urojona ma odwrócony znak). Ponadto jest przeciąŝony operator << do wyprowadzania danych do strumienia. Wyprowadza on liczbę zespoloną w postaci "(re,im)". Jest równieŝ operator >>, który pozwala z kolei wprowadzić ze strumienia liczbę zespoloną, pod warunkiem, Ŝe jest w takiej właśnie postaci. Przykład: liczba_zesp z1(10,20); cout << "z1=" << z1; 4.5. Funkcje matematyczne Do funkcji matematycznych działających na liczbach zespolonych, to naleŝą: sin, cos, tan, sinh, cosh, tanh, exp, pow, log, log10 i sqrt. 7

8 Opracowano na podstawie: Materiały własne http://pl.wikipedia.org http://www.3miasto.net/~chq/c/howto/x1066.html http://programex.risp.pl/?strona=strukturyd_formatyp http://www.intercon.pl/~sektor/cbx/std/math.html "C++ Biblioteka standardowa. Podręcznik programisty". Nicolai M. Josuttis.Wydawnictwo Helion. ISBN: 83-7361-144-4 8