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



Podobne dokumenty
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.

Programowanie i struktury danych

DYNAMICZNE PRZYDZIELANIE PAMIECI

Jak Windows zarządza pamięcią?

Zadania z podstaw programowania obiektowego

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

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

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

Zaawansowane programowanie w języku C++ Biblioteka standardowa

STL: Lekcja 1&2. Filozofia STL

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

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Zmienne i struktury dynamiczne

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

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

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

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

ZASADY PROGRAMOWANIA KOMPUTERÓW

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

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

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

//zmienne globalne int *pa, *pb; //wskaźniki globalne void main(void) { clrscr(); printf("\n podaj wartosc liczby a\n"); scanf("%d",&a); pa=&a;

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:

Programowanie komputerowe. Zajęcia 5

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

Programowanie i struktury danych

Język C++ wykład VIII

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

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

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

Programowanie w języku C++

Wzorce funkcji (szablony)

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

r. Tablice podstawowe operacje na tablicach

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

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

Lab 9 Podstawy Programowania

Projektowanie klas c.d. Projektowanie klas przykład

Część 4 życie programu

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

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

tablica: dane_liczbowe

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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

Stałe, tablice dynamiczne i wielowymiarowe

Szablony klas, zastosowanie szablonów w programach

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:

4) Operacje na tablicy dwuwymiarowej bez wykorzystywania indeksów liczbowych:

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

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

O podstawowych operacjach na tablicach. Mateusz Ziółkowski, MBiU II

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

Podstawy programowania komputerów

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

Wskaźniki. Informatyka

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

Język C++ zajęcia nr 2

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

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

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

Deklaracja struktury w C++

Podstawy obiektowości

Szablon klasy std::vector

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

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

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

PARADYGMATY PROGRAMOWANIA Wykład 3

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

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Wprowadzenie do programowania i programowanie obiektowe

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

STL Standardt Template Library (wprowadzenie)

dr inż. Jarosław Forenc

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe

Programowanie Procedurale

Algorytmy i Struktury Danych.

Operatory na rzecz typu TString

Alokacja pamięci dla tablicy dwuwymiarowej

Wskaźniki. Programowanie Proceduralne 1

Kurs programowania. Wykład 9. Wojciech Macyna

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

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.

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Programowanie obiektowe W3

Algorytmy i język C++

Wstęp do programowania

Podstawy programowania w języku C++

Podstawy programowania w języku C++

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

Wstęp do programowania

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Tablice, funkcje - wprowadzenie

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

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

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

Transkrypt:

Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza (b) kolumny. Tak uzyskane tablice wpisać do plików wynikowych. wczytujący zestawy 10 2, 10 3, 10 4, 10 5, linii z dowolnego pliku tekstowego do zmiennej reprezentującej dwuwymiarowy wektor, przy czym każdy wiersz jest wektorem utworzonym z kolejnych słów wczytanej linii. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego wiersza rosnąco. Uzyskaną zawartość wpisać do plików, Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce. Tablica : pojemnik na dane identycznego typu. Dostęp do poszczególnych danych jest bezpośredni poprzez ich numer w tablicy. Dynamiczny przydział pamięci tablicy liczby Statyczny przydział pamięci dla tablicy znaków nazwa_pliku 1

Statyczny przydział pamięci : pamięć przydzielana jest przed rozpoczęciem działania programu i pozostaje przydzielona do zakończenia jego wykonywania. double statyczna_tablica2d[5][10]; // 5 wierszy o 10 elementach każdy Dynamiczny przydział pamięci : pamięć przydzielana jest w trakcie wykonywania programu co umożliwia przydzielenie pamięci o takiej wielkości jaka jest aktualna potrzebna. double **dynamiczna_tablica2d; pamięć na wskaźniki do 5 wierszy *dynamiczna_tablica = new double [5]; for (int i=0; i<5;++i) *dynamiczna_tablica[i]= new double [10]; pamięć na 10 elementów każdego wiersza Dostęp do danych jest poprzez wskazanie numeru wiersza i kolumny: statyczna_tablica 2D[3][8] =32.2; dynamiczna_tablica 2D[3][8]= statyczna_tablica 2D[3][8]; Ale w C++ : char c_slowo[10]; string s_slowo ; Czym się roznią? //Program kopiuje linia po linii zadany plik do wektora lancuchow //wprowadza obiekt klasy vector #include <string> #include <fstream> int main() { biblioteka funkcji obsługujących kontener vector vector <string> wektor_lancuchow; ifstream plik_do_czytania("wektor.cpp"); // plik do przeczytania Obiekty klasy vector tak, jak tablice zajmują ciągły obszar pamięci. Pamięć jest przydzielana dynamicznie, zazwyczaj większa niż deklarowana, aby uniknąć drogiej czasowo alokacji. Przy inicjowaniu obiektu nie trzeba podawac rozmiaru. string linia; while(getline(plik_do_czytania, linia)) wektor.push_back(line); // Dopisz linie na koncu wektora // wydrukuj dodajac numer wiersza: for(int i = 0; i < wektor_lancuchow.size(); i++) // wektor_lancuchow.size() ilośc ilementow wektora cout << i << ": " << wektor_lancuchow[i] << endl; Wektor. cpp 2

Deklaracja obiektu kontenera vector vector<type> variable_name (number_of_elements); vector<type> variable_name; Przykład: Wektor ma number_of_elements składowych zainicjowanych 0!! Wektor vector<int> stopnie (5); // deklaracja wektora z 5 int vector<double> wartosci (20,0); // deklaracja wektora z danymi typu double, o // rozmiarze 20 i wartosciach zaincjowanych 0 vector<string> nazwa; // deklaracja wektora z łańcuchami // na razie pusty (zawiera 0 łańcuchów) int main(){ vector<double> stopnie_studentow(20); // znamy ilosc studentow do obsluzenia for (vector<double>::size_type i = 0; i < 20; i++) // aby być pewnym, ze nie będzie // bledu zakresu indeksow { cout << wprowadz oceny studenta # " << i+1 << ": " ; cin >> stopnie_studentow[i]; return 0; Mało wydajne!!! Jeśli nie znamy ilości studentów, to mamy metodę dodawania do końca: push_back(). Jest tez metoda ucinania wektora od końca pop_back() Są metody do wstawiania w dowolne miejsce wektora insert() i kasowania z dowolnego miejsca remove(). 3

//kopiuj okreslona liczbe linii z okreslonej ksiązki do wektora lancuchow #include <string> #include <fstream> #define SIZE 50 void czytaj_ksiazke(ifstream &, int, vector<string> & ); int main() { char book_name[size]="thinkinginc++2vone.txt"; int ILE=22; vector<string> wektor_linii; // wektor lancuchow ifstream plik_do_czytania(book_name); if (plik_do_czytania.is_open()) czytaj_ksiazke(input, ILE, wektor_linii); czytaj.dev cout <<"wektor ma "<< wektor_linii.size() << " linii ksiazki" << book_name <<" \n" ; for(int i = 0; i < how_many; i++) cout << i+1 << ": " << wektor_linii[i] << endl; cin.get(); void czytaj_ksiazke(ifstream & wejscie, int ile_linii, vector<string> & wynik){ string line; for (int i=0; i<ile_linii; i++) { getline(wejscie, line); wynik.push_back(line); // Dopisz linie na koncu wektora Iterator: alternatywny dostęp do elementów wektora vector<int>::iterator it; Iterator trzeba zadeklarować. Iterator ten obsługuje dowolna zmienna typu vector<int> Iterator wskazuje na it-ty element wektora. vector<int> values; //... (ustalenie własnosci wektora) for (vector<int>::iterator it = values.begin(); it!= values.end(); ++it) { cout << *it << endl; // it to jakby wskaźnik do i-tego elementu wektora values 4

Przykłady standardowych funkcji z biblioteki <algorithm> działających na obiektach klasy vector sort ( values.begin(), values.end()); //sortuje wartości wektora od początku //do końca reverse (values.begin(), values.end()); // odwraca kolejność elementów w //wektorze random_shuffle (values.begin(), values.end()); // tasuje losowo wartości //wektora const int num_zeros = count (values.begin(), values.end(), 0); // zlicza ile jest 0 wśród wartości wektora Przygotuj_pliki. dev 5