7.3 Tablice jednowymiarowe dynamiczne
|
|
- Józef Rosiński
- 4 lat temu
- Przeglądów:
Transkrypt
1 7.3 Tablice jednowymiarowe dynamiczne Tablice statyczne nie daj nam mo»liwo±ci decydowania o ich wymiarach podczas dziaªania programu. Oznacza to»e musimy zna wielko± tablicy na poziomie tworzenia aplikacji. Przykªadowo, poni»szy kod tworzy tablic o rozmiarze n, chocia» si skompiluje, nie jest zgodny ze standardem j zyka C (poniewa» rozmiar tablicy nie byª znany w czasie kompilowania programu, a dopiero w czasie jego uruchomienia): 3 i n t main ( i n t argc, char ** argv ) 5 i n t n, i ; 7 printf ( "Podaj n : \ n> " ) ; 8 scanf ( "%d", &n ) ; 9 10 i n t tab [ n ] ; 11 1 f o r ( i=0; i<n ; i++) 13 { 14 tab [ i ] = ( i+1) ; 15 printf ( " tab[%d ] = %d\n", i, tab [ i ] ) ; 1 } return 0 ; 19 } Nale»y unika sytuacji takich, jak powy»sza. Aby tworzy tablic, której rozmiar poznamy dopiero na etapie uruchomienia programu, nale»y wykorzysta dynamiczny przydziaª pami ci oraz wska¹niki. Dynamiczna alokacja pami ci pozwala na przydzielenie odpowiedniej ilo±ci pami ci, a tak»e zwolnienie jej od razu, gdy nie b dzie ju» potrzebna. Mówi c inaczej, dynamiczna alokacja pami ci pozwala» cznie«i zarz dza. Do zarz dzania pami ci w j zyku C wykorzystujemy wska¹niki, oraz poni»sze 4 funkcje z biblioteki stdlib.h (nale»y doª czy nagªówek #include <stdlib.h>) oraz operator sizeof: Nazwa funkcji Zadanie funkcji Nagªówek funkcji malloc() Przydziela pami void *malloc(size_t size) calloc() Przydziela pami i wypeªnia tablic zerami void *calloc(size_t nitems, size_t size) free() Zwalnia poprzednio przydzielon pami void free(void *ptr) realloc() Zmienia rozmiar poprzednio przydzielonej pami ci void *realloc(void *ptr, size_t size) Tablicy dynamicznej u»ywamy tak samo, jak zwykª, poznan wcze±niej tablic statyczn. Nie trzeba na takiej tablicy operowa wska¹nikami, wska¹niki potrzebne s tylko przy jej deklaracji (chocia» mo»na na niej operowa za pomoc wska¹ników, ale do tego przejdziemy pó¹niej.) Mo»liwo± ta wynika z faktu, ¹e tablica statyczna to te» wska¹nik, tylko nie jest to do ko«ca widoczne Operator sizeof Zanim nauczymy si tworzy dynamiczne tablice jednowymiarowe, musimy najpierw pozna dziaªanie operatora sizeof. Operator sizeof inaczej nazywany jest operatorem rozmiaru - operator ten dost pny jest w j zyku C i C++. Operatora u»ywamy podobnie jak funkcji, która jako argument pobiera (w naszym przypadku) nazw typu danych, którego rozmiar chcemy pozna, oraz zwraca jego rozmiar w bajtach. Przykªadowe u»ycie operatora zaprezentowano poni»ej: 158
2 3 i n t main ( ) 5 i n t rozmiar = s i z e o f ( i n t ) ; printf ( " Int zajmuje %d bajty w pamieci RAM\n", rozmiar ) ; 7 return 0 ; 8 } 7.3. Tworzenie i usuwanie jednowymiarowej dynamicznej tablicy Do utworzenia jednowymiarowej dynamicznej tablicy potrzebna nam b dzie funkcja malloc, która przydziela pami (a mówi c dokªadniej: okre±lon liczb bajtów) i zwraca wska¹nik do pierwszego bajtu przydzielonej pami ci tak,»eby±my mieli dost p do wszystkich jej elementów. 1 i n t * tab = malloc ( s i z e o f ( i n t ) * n ) ; W powy»szym przykªadzie tworzony jest wska¹nik (tablica) tab, której dynamicznie przydzielana jest pami. Chcemy stworzy tablic o n elementach, gdzie ka»dy z elementó b dzie liczb caªkowit. W takim wypadku musimy powiedzie, ile bajtów potrzebujemy na tablic. Skoro rozmiar jednego inta mo»emy sprawdzi za pomoc operatora sizeof, to wiemy, ile miejsca w bajtach b dziemy potrzebowa na tablic : sizeof(int) * n, bo mamy n intów, z których ka»dy zajmuje sizeof(int) bajtów. Dwa poni»sze programy robi to samo - tworz tablic liczb caªkowitych o rozmiarze 100, zeruj j, a nast pnie usuwaj za pomoc funkcji free: 3 i n t main ( i n t argc, char ** argv ) 7 // d e f i n i c j a t a b l i c y 8 i n t * tab ; 9 // p r z y d z i e l e n i e pamieci na 100 elementow typu i n t 10 tab = malloc ( s i z e o f ( i n t ) * 100) ; 11 1 f o r ( i=0; i <100; i++) 13 tab [ i ] = 0 ; // z w o l n i e n i e pamieci 159
3 1 free ( tab ) ; 17 tab = NULL ; return 0 ; 0 } 3 i n t main ( i n t argc, char ** argv ) 7 // d e f i n i c j a t a b l i c y i p r z y d z i e l e n i e pamieci na 100 elementow typu i n t 8 i n t * tab = malloc ( s i z e o f ( i n t ) * 100) ; 9 10 f o r ( i=0; i <100; i++) 11 tab [ i ] = 0 ; 1 13 // z w o l n i e n i e pamieci 14 free ( tab ) ; 15 tab = NULL ; 1 17 return 0 ; 18 } Przeanalizujmy poni»szy przykªad. Zaªó»my,»e chcemy stworzy dynamiczn, jednowymiarow tablic o ilo±ci elementów (rozmiarze) podanym przez u»ytkownika. Aby to zrobi, na pocz tku wczytujemy rozmiar tablicy, nast pnie przydzielamy dla niej pami... : 1 i n t n ; scanf ( "%d", &n ) ; 3 i n t * wski = NULL ; 4 wski = ( i n t *) malloc ( n * s i z e o f ( i n t ) ) ; Dost p do elementów dynamicznej tablicy jednowymiarowej... zerujemy tablic, wy±wietlamy jej zawarto± (czyli uzyskujemy dost p do elmentów tablicy): 1 f o r ( i=0; i<n ; i++) wski [ i ] = 0 ; 3 4 f o r ( i=0; i<n ; i++) 5 printf ( "%d ", wski [ i ] ) ; printf ( "\n" ) ; Usuwanie dynamicznej tablicy jednowymiarowej... i usuwamy przydzielon pami : 1 free ( wski ) ; wski = NULL ; Tworzenie, dost p do elementów oraz usuwanie dynamicznej tablicy jednowymiarowej Wszystkie powy»sze operacje, aby mogªy dziaªa jako program, zostaªy zebrane na listingu poni»ej. Zaprezentowany kod: 10
4 1. Wczytuje od u»ytkownika ilo± elementów tablicy. Deniuje wska¹niki na typy danych int, float, double, char 3. Korzystaj c ze wska¹ników przydziela pami dla ka»dej tablicy (dla tablicy elementów typu int, float, double, char) 4. Wypeªnia ka»d z tablic 5. Wy±wietla ka»d z tablic. Zwalnia pami na ka»d z przydzielonych tablic Podsumowuj c, na poni»szych przykªadach widzimy schematy tworzenia dynamicznych tablic jednowymiarowych o n elementach, dla ka»dego typu danych: 3 i n t main ( ) 7 /* i l o s c elementow t a b l i c y */ 8 i n t n ; 9 /* wczytanie i l o s c i elementow t a b l i c y */ 10 printf ( "Podaj i l o s c elementow t a b l i c y : \ n> " ) ; 11 scanf ( "%d", &n ) ; 1 13 /* wskaznik na zmienna typu i n t */ 14 i n t * wski = NULL ; 15 1 /* p r z y d z i e l e n i e pamieci na n elemenotwa t a b l i c e intow */ 17 wski = malloc ( n * s i z e o f ( i n t ) ) ; /* wyzerowanie t a b l i c y dynamicznej */ 0 f o r ( i=0; i<n ; i++) 1 wski [ i ] = 0 ; 3 /* w y s w i e t l e n i e t a b l i c y */ 4 f o r ( i=0; i<n ; i++) 5 printf ( "%d ", wski [ i ] ) ; printf ( "\n" ) ; 7 8 /* z w o l n i e n i e pamieci p r z y d z i e l o n e j na t a b l i c e */ 9 free ( wski ) ; 30 wski = NULL ; 31 3 return 0 ; 33 } 3 i n t main ( ) 7 /* i l o s c elementow t a b l i c y */ 8 i n t n ; 9 /* wczytanie i l o s c i elementow t a b l i c y */ 10 printf ( "Podaj i l o s c elementow t a b l i c y : \ n> " ) ; 11 scanf ( "%d", &n ) ; 1 13 /* wskaznik na zmienna typu f l o a t */ 14 f l o a t * wsk = NULL ; 11
5 15 1 /* p r z y d z i e l e n i e pamieci na n elemenotwa t a b l i c e f l o a t */ 17 wsk = malloc ( n * s i z e o f ( f l o a t ) ) ; /* wyzerowanie t a b l i c y dynamicznej */ 0 f o r ( i=0; i<n ; i++) 1 wsk [ i ] = 0 ; 3 /* w y s w i e t l e n i e t a b l i c y */ 4 f o r ( i=0; i<n ; i++) 5 printf ( "%.1 f ", wsk [ i ] ) ; printf ( "\n" ) ; 7 8 /* z w o l n i e n i e pamieci p r z y d z i e l o n e j na t a b l i c e */ 9 free ( wsk ) ; 30 wsk = NULL ; 31 3 return 0 ; 33 } 3 i n t main ( ) 7 /* i l o s c elementow t a b l i c y */ 8 i n t n ; 9 /* wczytanie i l o s c i elementow t a b l i c y */ 10 printf ( "Podaj i l o s c elementow t a b l i c y : \ n> " ) ; 11 scanf ( "%d", &n ) ; 1 13 /* wskaznik na zmienna typu double */ 14 double * wsk = NULL ; 15 1 /* p r z y d z i e l e n i e pamieci na n elemenotwa t a b l i c e double */ 17 wsk = malloc ( n * s i z e o f ( double ) ) ; /* wyzerowanie t a b l i c y dynamicznej */ 0 f o r ( i=0; i<n ; i++) 1 wsk [ i ] = 0 ; 3 /* w y s w i e t l e n i e t a b l i c y */ 4 f o r ( i=0; i<n ; i++) 5 printf ( "%.1 f ", wsk [ i ] ) ; printf ( "\n" ) ; 7 8 /* z w o l n i e n i e pamieci p r z y d z i e l o n e j na t a b l i c e */ 9 free ( wsk ) ; 30 wsk = NULL ; 31 3 return 0 ; 33 } 3 i n t main ( ) 7 /* i l o s c elementow t a b l i c y */ 8 i n t n ; 9 /* wczytanie i l o s c i elementow t a b l i c y */ 10 printf ( "Podaj i l o s c elementow t a b l i c y : \ n> " ) ; 11 scanf ( "%d", &n ) ; 1 1
6 13 /* wskaznik na zmienna typu char */ 14 char * wsk = NULL ; 15 1 /* p r z y d z i e l e n i e pamieci na n elemenotwa t a b l i c e char */ 17 wsk = malloc ( n * s i z e o f ( char ) ) ; /* wyzerowanie t a b l i c y dynamicznej */ 0 f o r ( i=0; i<n ; i++) 1 wsk [ i ] = ' 0 ' ; 3 /* w y s w i e t l e n i e t a b l i c y */ 4 f o r ( i=0; i<n ; i++) 5 printf ( "%c ", wsk [ i ] ) ; printf ( "\n" ) ; 7 8 /* z w o l n i e n i e pamieci p r z y d z i e l o n e j na t a b l i c e */ 9 free ( wsk ) ; 30 wsk = NULL ; 31 3 return 0 ; 33 } 7.3. Tablice jednowymiarowe dynamiczne jako argumenty funkcji Tablice jednowymiarowe mog by przekazywane do funkcji jako jej argumenty. Wraz z przekazaniem do funkcji tablicy, nale»y do funkcji, jako kolejny jej argument, przekaza liczb elementów tablicy. Do funkcji mo»emy przekaza pojedynczy element z tablicy, lub te» wszystkie jej elementy - czyli caª jednowymiarow tablic. Istniej 3 sposoby na przekazanie do funkcji caªej jednowymiarowej tablicy (wszystkich jej elementów). Wa»ne informacje dotycz ce funkcji i tablic dynamicznych: ˆ mo»na napisa funkcj zwracaj c tablic dynamiczn ˆ tablica dynamiczna do funkcji jest zawsze przekazywana przez jej adres, oznacza to, i» je±li przeka»emy do funkcji dynamiczn, jednowymiarow tablic, funkcja b dzie j mogªa zmodykowa (b dzie mogªa zmienia jej elementy, poniewa» pracuje na oryginale tablicy) - inaczej, ni» w przypadku zmiennych, które przekazywane s do funkcji przez warto±, dzi ki czemu funkcja pracuje na ich kopiach ˆ Nale»y zawsze po zako«czeniu korzystania z tablicy dynamicznej zwolni przydzielon dla niej pami Przykªad Przekazywanie do funkcji pojedynczego elementu tablicy: prze±led¹my poniszy przykªad. Funkcja suma pobiera argumenty - liczby caªkowite, oraz zwraca jako wynik ich sum. Do funkcji mo»emy przekaza zmienne (linia 17), dowolne liczby (linia 0), czwarty element tablicy (czyli jedn warto± ) oraz zmienn (linia 3), czwarty element tablicy (czyli jedn warto± ) oraz liczb (linia ) lub czwarty element tablicy (czyli jedn warto± ) oraz pierwszy element tablicy (czyli jedn warto± ) (linia 9). Jak wynika z ponizszego kodu, je±li przeka»emy do funkcji pojedynczy element tablicy, jest on w funkcji traktowany jako zwykªa zmienna przekazana do niej: warto± danego elementu tablicy jest KOPIOWANA do funkcji, dzi ki czemu funkcja pracuje na kopii elementu tablicy, tak, jak dzieje si to w przypadku zwykªych zmiennych. 3 i n t suma ( i n t a, i n t b ) 5 return a+b ; } 7 8 i n t main ( ) 13
7 9 { 10 i n t i ; 11 i n t * tab = malloc ( s i z e o f ( i n t ) * 5) ; 1 f o r ( i=0; i<5; i++) 13 tab [ i ] = ( i *) ; i n t n = 5, m =, wynik ; 1 17 wynik = suma ( n, m ) ; 18 printf ( "wynik = %d\n", wynik ) ; 19 0 wynik = suma (, 4) ; 1 printf ( "wynik = %d\n", wynik ) ; 3 wynik = suma ( tab [ 3 ], n ) ; 4 printf ( "wynik = %d\n", wynik ) ; 5 wynik = suma ( tab [ 3 ], 3) ; 7 printf ( "wynik = %d\n", wynik ) ; 8 9 wynik = suma ( tab [ 3 ], tab [ 0 ] ) ; 30 printf ( "wynik = %d\n", wynik ) ; 31 3 free ( tab ) ; 33 tab = NULL ; return 0 ; 3 } Przykªad Jak wspomniano wcze±niej, istnieje mo»liwo± przekazania do funkcji caªej tablicy, dzi ki czemu funkcja ma dost p do wszystkich jej elementów i MO E JE MODYFIKOWA w takim sensie, i» zmiany przeprowadzone na tablicy wewn trz funkcji, s widoczne PO wyj±ciu z funkcji. Przekazywanie do funkcji wszystkich elementów statycznej dynamicznej tablicy (caªej tablicy): 3 void fun1 ( i n t * tab, i n t n ) f o r ( i=0; i<n ; i++) 7 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 8 printf ( "\n" ) ; 9 } void fun ( i n t tab [ ], i n t n ) 1 { 13 i n t i ; 14 f o r ( i=0; i<n ; i++) 15 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 1 printf ( "\n" ) ; 17 } void fun3 ( i n t tab [ 5 ] ) 0 { 1 i n t i ; f o r ( i=0; i<5; i++) 3 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 4 printf ( "\n" ) ; 5 } 7 i n t main ( ) 8 { 9 i n t i ; 30 i n t * tab = malloc ( s i z e o f ( i n t ) * 5) ; 31 f o r ( i=0; i<5; i++) 14
8 3 tab [ i ] = ( i *) ; i n t n = 5 ; 35 3 fun1 ( tab, n ) ; 37 fun ( tab, n ) ; 38 fun3 ( tab ) ; free ( tab ) ; 41 tab = NULL ; 4 43 return 0 ; 44 } Omówmy i przeanalizujmy ka»d z 3 funkcji z powy»szego programu. Funkcja pierwsza, tj. fun1: ˆ pobiera argumenty (z funkcji main mo»emy przesªa do niej, przekaza jej argumenty): caª, jednowymiarow tablic liczb caªkowitych tab, oraz ilo± jej elementów n ˆ jednowymiarowa tablica przekazywana jest z funkcji main do funkcji fun1 za pomoc wska¹nika (b dziemy o nich mówi pó¹niej) ˆ funkcja nie zwraca warto±ci, jej typ zwracany to void ˆ funkcja wy±wietla wszystkie elementy tablicy ˆ w funkcji main, aby przekaza tablic do funkcji fun1 podczas wywoªania nale»y poda nazw funkcji, przekaza jako argument jedynie nazw tablicy (tutaj kompilator ju» sam wie,»e skoro funkcja pobiera jako pierwszy argument tablic, to przekazana jest jej tablica, wystarczy wi c poda jedynie nazw tablicy podczas wywoªania) oraz ilo± jej elementów ˆ funkcja fun1 jest uniwersalna, poniewa» dziaªa dla dowolnie du»ej tablicy - dla tablicy o n elementach Funkcja druga, tj. fun: ˆ pobiera argumenty (z funkcji main mo»emy przesªa do niej, przekaza jej argumenty): caª, jednowymiarow tablic liczb caªkowitych tab, oraz ilo± jej elementów n ˆ jednowymiarowa tablica przekazywana jest z funkcji main do funkcji fun za pomoc nazwy tablicy, bez podania ilo±ci elementów - przekazywana jest caªa tablica, bez podania ilo±ci jej elementów (tzw. unsized array) ˆ funkcja nie zwraca warto±ci, jej typ zwracany to void ˆ funkcja wy±wietla wszystkie elementy tablicy ˆ w funkcji main, aby przekaza tablic do funkcji fun podczas wywoªania nale»y poda nazw funkcji, przekaza jako argument jedynie nazw tablicy (tutaj kompilator ju» sam wie,»e skoro funkcja pobiera jako pierwszy argument tablic, to przekazana jest jej tablica, wystarczy wi c poda jedynie nazw tablicy podczas wywoªania) oraz ilo± jej elementów ˆ funkcja fun jest uniwersalna, poniewa» dziaªa dla dowolnie du»ej tablicy - dla tablicy o n elementach Funkcja trzecia, tj. fun3: ˆ pobiera argumenty (z funkcji main mo»emy przesªa do niej, przekaza jej argumenty): caª, jednowymiarow tablic liczb caªkowitych tab, oraz ilo± jej elementów n 15
9 ˆ jednowymiarowa tablica przekazywana jest z funkcji main do funkcji fun3 za pomoc nazwy tablicy, wraz z podaniem ilo±ci przekazywanych elementów tablicy - funkcja przyjmuje wi c tablic o okre±lonej liczbie elementów - tutaj funkcja mo»e przyj jedynie tablic, która ma 5 elementów (sized array) ˆ funkcja nie zwraca warto±ci, jej typ zwracany to void ˆ funkcja wy±wietla wszystkie 5 elementów tablicy ˆ w funkcji main, aby przekaza tablic do funkcji fun3 podczas wywoªania nale»y poda nazw funkcji, przekaza jako argument jedynie nazw tablicy (tutaj kompilator ju» sam wie,»e skoro funkcja pobiera jako pierwszy argument tablic, to przekazana jest jej tablica, wystarczy wi c poda jedynie nazw tablicy podczas wywoªania), nie trzeba ju» podawa ilo±ci elementów tablicy ˆ funkcja fun3 jest NIE JEST uniwersalna, poniewa» dziaªa jedynie dla 5 elementowej tablicy - dla tablicy o 5 elementach, wi c nie jest zbyt u»yteczn funkcj Przykªad Kolejny przykªad pokazuje, i» przekazuj c do funkcji tablic w jakikolwiek z 3 poznanych sposobów i modykuj c warto±ci jej elementów w funkcji, po wyj±ciu z niej i powrocie do funkcji main zmiany naniesione w funkcji w main s widoczne. W poni»szym przykªadzie mamy funkcj o nazwie dosth, która pobiera jako argument dynamiczn tablic liczb caªkowitych, oraz jej rozmiar n. W funkcji nie musimy ju» dynamicznie tworzy tablicy, poniewa» zostaªa ona stworzona i wypeªniona w gªownej funkcji programu - funkcji main. Po utworzeniu i wypeªnieniu tablicy, zostaªa ona przekazana do funkcji dosth, która to funkcja wykonaªa na wszystkich jej elementach pewne dzia- ªanie. Po wyj±ciu z funkcji widzimy,»e modykuj c w funkcji przekazan do niej jako argument tablic, zmiany mo»emy zobaczy w gªownej funkcji naszego programu. Dzieje si tak poniewa» tablica do funkcji przekazywana jest jako oryginaª, nie jako kopia (funkcja pracuje na oryginalnej, utworzonej w mainie tablicy), jak ma to miejsce w przypadku zwykªych zmiennych: 3 void dosth ( i n t * tab, i n t n ) 5 i n t i=0; while ( i<n ) 7 { 8 tab [ i ] = tab [ i ] * tab [ i ] ; 9 i++; 10 } 11 } 1 13 i n t main ( ) 1 15 i n t * tab = malloc ( s i z e o f ( i n t ) * 3) ; 1 tab [ 0 ] = 1 ; 17 tab [ 1 ] = ; 18 tab [ ] = 3 ; 19 0 i n t n = 3, i ; 1 printf ( "PRZED WYKONANIEM FUNKCJI: \ n\n" ) ; 3 f o r ( i=0; i<n ; i++) 4 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 5 printf ( "\n" ) ; 7 dosth ( tab, n ) ; 8 9 printf ( "PO WYKONANIU FUNKCJI: \ n\n" ) ; 30 f o r ( i=0; i<n ; i++) 31 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 3 printf ( "\n" ) ; 1
10 33 34 free ( tab ) ; 35 tab = NULL ; 3 37 return 0 ; 38 } Powy»szy program wy±wietli: Tablice jednowymiarowe dynamiczne jako typ zwracany funkcji Tablice mog by równie» typem zwracanym funkcji, mówimy wówczas,»e funkcja zwraca tablic (wªa- ±ciwie: wska¹nik do tablicy). Taka tablica powinna by dynamicznie utworzona (za pomoc wska¹nika i funkcji malloc) w funkcji, która j zwraca, a nast pnie pami jej przydzielona powinna zosta zwolniona w funkcji wywoªuj cej dan funkcj (najcz ±ciej w funkcji main). Poni»ej znajduj si przykªady nagªówków funkcji, które zwracaj dynamiczne tablice jednowymiarowe: 1 i n t * funkcja1 ( i n t a, i n t b, char c ) ; 3 char * funkcja ( double d ) ; 4 5 f l o a t * funkcja3 ( ) ; 7 double * funkcja4 ( i n t i, f l o a t f, double *d ) ; Na poni»szym przykªadzie mo»emy zobaczy zwracanie tablicy z funkcji. Nale»y pami ta,»eby typ zwracany funkcji zgadzaª si z warto±ci, któr faktycznie zwracamy. Nasza funkcja tworzy dynamiczn tablic o rozmiarze podanym jako jej argument, wypeªnia j zerami, a nast pnie zwraca. W funkcji main wy±wietlamy stworzon tablic, i po zako«czeniu korzystania z niej, zwalniamy pami : 3 f l o a t * create_array ( i n t n ) f l o a t * tab = malloc ( s i z e o f ( f l o a t ) * n ) ; 7 8 f o r ( i=0; i <10; i++) 9 tab [ i ] = 0. 0 ; 17
11 10 11 return tab ; 1 } i n t main ( i n t argc, char ** argv ) 15 { 1 i n t * tab ; 17 i n t n = 1 0 ; // utworzenie t a b l i c y w f u n k c j i i p r z y p i s a n i e zwroconej t a b l i c y 0 // do t a b l i c y utworzonej w f u n k c j i main 1 tab = create_array ( n ) ; 3 // w y s w i e t l e n i e t a b l i c y 4 i n t i ; 5 f o r ( i=0; i<n ; i++) printf ( " tab[%d ] = %. f \n", i, tab [ i ] ) ; 7 8 // z w o l n i e n i e pamieci 9 free ( tab ) ; 30 tab = NULL ; 31 3 return 0 ; 33 } 18
12 7.4 Zadania do wykonania Zadanie 1 Napisz funkcj, która przyjmuje jako argument rozmiar tablicy n, a nast pnie tworzy dynamiczn tablic liczb typu f loat i wypeªnia j zerami. Funkcja ma zwróci wska¹nik do dynamicznie utworzonej tablicy. Przetestuj napisan funkcj w mainie, wy±wietl zawarto± tablicy i usu«pami przydzielon na tablic. Zadanie Napisz program, który wczyta od u»ytkownika liczb caªkowit n, dynamicznie zaalokuje tablic n liczb zmiennoprzecinkowych, wczyta je wszystkie od u»ytkownika, wypisze ich maksimum, minimum, ±redni i sum, a nast pnie zwolni pami zajmowan przez t tablic. Zadanie 3 Napisz funkcj, która przyjmuje jako argumenty dynamicznie utworzon tablic liczb caªkowitych, oraz rozmiar tablicy. Funkcja powinna wy±wietli tylko parzyste elementy tablicy. W funkcji main stwórz dynamiczn tablic, wypeªnij j liczbami a nast pnie przeka» do funkcji. Po wykonaniu funkcji (gdy ju» nie korzystasz z dynamicznie utworzonej tablicy) zwolnij przydzielon pami. Zadanie 4 Napisz funkcj, która przyjmuje jako argumenty dynamicznie utworzon tablic liczb caªkowitych, oraz rozmiar tablicy. Funkcja powinna wy±wietli tylko te elementy tablicy, które znajduj si pod jej nieparzystymi indeksami. W funkcji main stwórz dynamiczn tablic, wypeªnij j liczbami a nast pnie przeka» do funkcji. Po wykonaniu funkcji (gdy ju» nie korzystasz z dynamicznie utworzonej tablicy) zwolnij przydzielon pami. Zadanie 5 Napisz funkcj o nazwie przepisz_pn, która przyjmuje 3 tablice typu int i liczb caªkowit n. Pierwsza tablica ma rozmiar n, a dwie pozostaªe maj rozmiar n. Funkcja ma skopiowa wszystkie elementy drugiej tablicy na parzyste miejsca w tablicy pierwszej i wszystkie elementy tablicy trzeciej na nieparzyste miejsca w tablicy pierwszej. Wszystkie tablice utwórz dynamicznie w funkcji main, wypeªnij je liczbami, a nast pnie przeka» do funkcji przepisz_pn. Po wywoªaniu funkcji zwolnij pami przydzielon na tablice. Zadanie Napisz funkcj, która otrzymuje dwa parametry: liczb n oraz n-elementow tablic tab o elementach typu int i zwraca indeks najwi kszego elementu tablicy tab. W funkcji main stwórz dynamiczn tablic, wypeªnij j liczbami a nast pnie przeka» do funkcji. Po wykonaniu funkcji (gdy ju» nie korzystasz z dynamicznie utworzonej tablicy) zwolnij przydzielon pami. Zadanie 7 Napisz funkcj, która dostaje jako parametry tablic tab liczb caªkowitych, jej rozmiar n oraz warto± x. Funkcja nadaje warto± 0 wszystkim komórkom tablicy tab, które zawieraj warto± x. (czyli zeruje wszystkie wyst pienia danej warto±ci x). Dodatkowo, funkcja powinna zwraca liczb, ile razy w tablicy dokonaªa podmiany warto±ci x na 0. W funkcji main stwórz dynamiczn tablic, wypeªnij j liczbami a nast pnie przeka» do funkcji. Po wykonaniu funkcji (gdy ju» nie korzystasz z dynamicznie utworzonej tablicy) zwolnij przydzielon pami. Przykªad We: tab = {1,, 4, 5, 3,, 8, 7, 3,, 3, 0, 9, 3, 3}, n = 15, x = 3, Wy: tab = {1,, 4, 5, 0,, 8, 7, 0,, 0, 0, 9, 0, 0}, liczba podmian to 5. Zadanie 8 Napisz funkcj, która przyjmuje wska¹niki do 3 tablic liczb caªkowitych tab1, tab, tab3 oraz jeden argument n b d cy dªugo±ci tablic (wszystkie tablice maj t sam dªugo± ). Funkcja ma za zadanie zaalokowa now tablic tab4 tej samej dªugo±ci, do której pod i-tym indeksem ma wpisa liczb kryj c si pod tym samym indeksem z tab lub tab3 w zale»no±ci od warto±ci znajduj cej si pod i-tym indeksem w tablicy tab1. Je±li w tab1 warto± jest wi ksza lub równa 0, to ma wybra warto± z tab, w przeciwnym razie z tab3. Funkcja ma zwróci wska¹nik do tablicy tab4 (inaczej mówi c, ma zwróci tablic tab4). Wszystkie tablice (tab1, tab, tab3) utwórz dynamicznie w funkcji main, wypeªnij je liczbami, a nast pnie przeka» do funkcji. Po wywoªaniu funkcji wy±wietl zawarto± tablicy tab4, i zwolnij pami przydzielon na wszystkie tablice. Przykªad We: tab1 = { 1, 0, 3, 4, 10}, tab = {1,, 3, 4, 5}, tab3 = {10, 11, 1, 13, 14}, Wy: tab4 = {10,, 3, 13, 5}. 19
13 Zadanie 9 Napisz funkcj, która przyjmuje rozmiar n i trzy tablice jednowymiarowe liczb caªkowitych (dwie pierwsze maj rozmiar n, a ostatnia rozmiar n). Funkcja ma podstawi warto±ci z dwóch pierwszych tablic do trzeciej tablicy wedªug reguªy: tab1 = {3, 3, 3}, tab = {4, 4, 4} tab3 = {3, 4, 3, 4, 3, 4}. Wszystkie tablice (tab1, tab) utwórz dynamicznie w funkcji main, wypeªnij je liczbami, a nast pnie przeka» do funkcji. Po wywoªaniu funkcji wy±wietl zawarto± tablicy tab3, i zwolnij pami przydzielon na wszystkie tablice. Zadanie 10 Napisz funkcj, która dostaje w argumentach tablic liczb caªkowitych oraz liczb jej elementów n i wypisuje najwi ksz sum dwóch s siednich elementów tablicy. Na przykªad dla tablicy o elementach 1, 4, 3, 8, 5, 0 poprawna odpowied¹ to 13. W funkcji main stwórz dynamiczn tablic, wypeªnij j liczbami a nast pnie przeka» do funkcji. Po wykonaniu funkcji (gdy ju» nie korzystasz z dynamicznie utworzonej tablicy) zwolnij przydzielon pami. Zadanie 11 Napisz funkcj, która jako argumenty pobiera tablic liczb caªkowitych tab oraz liczb caªkowit n b d c ilo±ci elementów tablicy a tak»e liczb caªkowit m. Funkcja ma za zadanie zwróci informacj o tym, ile razy liczba m pojawiªa si w tablicy tab. W funkcji main stwórz dynamiczn tablic, wypeªnij j liczbami a nast pnie przeka» do funkcji. Po wykonaniu funkcji (gdy ju» nie korzystasz z dynamicznie utworzonej tablicy) zwolnij przydzielon pami. Zadanie 1 Napisz funkcje, która jako argumenty dostaje tablice liczb caªkowitych tab oraz jej rozmiar n i wyswietla na standardowym wyjsciu srednia arytmetyczna nieujemnych elementów tablicy tab oraz srednia arytmetyczna ujemnych elementów tab. W funkcji main stwórz dynamiczn tablic, wypeªnij j liczbami a nast pnie przeka» do funkcji. Po wykonaniu funkcji (gdy ju» nie korzystasz z dynamicznie utworzonej tablicy) zwolnij przydzielon pami. Przykªad We: n = 7, tab = { 3, 3, 4, 5, 4, 5, 3, 0}, Wy: sr. arytm. elem. nieujemnych: 3., sr. arytm. elem. ujemnych: 3 Zadanie 13 Napisz funkcje, która na wejsciu otrzyma tablice z wartosciami rzeczywistymi i ich rozmiar. Funkcja ma wymienic miedzy tablicami elementy o jednakowych indeksach tak, aby element wiekszy znalazª sie w tablicy pierwszej. Wszystkie tablice (tab1, tab) utwórz dynamicznie w funkcji main, wypeªnij je liczbami, a nast pnie przeka» do funkcji. Po wywoªaniu funkcji wy±wietl zawarto± tablicy tab3, i zwolnij pami przydzielon na wszystkie tablice. Przykªad Zadanie 14 Napisz funkcj, która jako argumenty dostaje tablic liczb caªkowitych oraz jej rozmiar. Zakªadamy,»e w tablicy na pewno tylko jedna komórka ma warto± 0 i nie jest ona ani na pocz tku, ani na ko«cu tablicy. Funkcja ma wy±wietli na standardowym wyj±ciu dwie ±rednie arytmetyczne: liczb przed w/w komórk i po niej. W funkcji main stwórz dynamiczn tablic, wypeªnij j liczbami a nast pnie przeka» do funkcji. Po wykonaniu funkcji (gdy ju» nie korzystasz z dynamicznie utworzonej tablicy) zwolnij przydzielon pami. Przykªad We: tab = {5, 3, 1, 0, 3, 3, 4, 4}, n = 8, Wy: 3, 3.5 Zadanie 15 Napisz funkcj, która dostaje jako argumenty trzy tablice liczb caªkowitych tab1, tab i tab3, z których dwie ostatnie zapeªnione s zerami oraz liczb n b d c ich rozmiarem, a nast pnie przepisuje do tablicy tab kolejno elementy nieparzyste z tab1, a do tab3 kolejno elementy parzyste z tab1. Wszystkie tablice (tab1, tab, tab3) utwórz dynamicznie w funkcji main, wypeªnij je liczbami, 170
14 a nast pnie przeka» do funkcji. Po wywoªaniu funkcji wy±wietl zawarto± wszystkich tablic, i zwolnij pami przydzielon na wszystkie tablice. Przykªad We: tab1 = {1,, 4, 5, 7, 8, }, n = 8, Wy: tab = {1, 5, 7, 0, 0, 0, 0}, tab3 = {, 4, 8,, 0, 0, 0}. Zadanie 1 Wykonaj wszystkie zadania z tablic statycznych (lab.pdf) zast puj c je tablicami dynamicznymi (w zadaniu zamiast tablicy statycznej (inaczej: automatycznej) wykorzystaj poznane tablice dynamiczne). 171
ˆ tablice statyczne (o staªej ilo±ci elementów) ˆ tablice dynamiczne (o zmiennej ilo±ci elementów) 7.1 Tablice jednowymiarowe statyczne
Rozdziaª 7 Tablice W niniejszym rozdziale zostan omówione tablice. Zostan zaprezentowane kody ¹ródªowe programów w j zyku C, pokazuj ce ich wykorzystanie w praktyce. Istnieje kilka rodzajów tablic w C,
Bardziej szczegółowoWska¹niki, tablice dynamiczne wielowymiarowe
Rozdziaª 11 Wska¹niki, tablice dynamiczne wielowymiarowe 11.1 Wst p Identycznie, jak w przypadku tablic statycznych, tablica dynamiczna mo»e by tablic jedno-, dwu-, trójitd. wymiarow. Tablica dynamiczna
Bardziej szczegółowoWska¹niki, tablice dynamiczne jednowymiarowe, staªe
Rozdziaª 9 Wska¹niki, tablice dynamiczne jednowymiarowe, staªe 9.1 Wst p Czym w C jest wska¹nik? Wska¹nik jest zmienn, która zawiera adres (wskazanie) innej zmiennej lub adres dowolnego obszaru w pami
Bardziej szczegółowoWskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17
Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8
Bardziej szczegółowoP tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);
Rozdziaª 4 P tle 4.1 Wst p Niniejszy rozdziaª zawiera opis p tli w j zyku C, wraz z przykªadowymi programami oraz ich obja±nieniem. 4.2 P tle P tla to element j zyka programowania, pozwalaj cy na wielokrotne,
Bardziej szczegółowoCo to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
Bardziej szczegółowowykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,
, Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer
Bardziej szczegółowo1. Wprowadzenie do C/C++
Podstawy Programowania :: Roman Grundkiewicz :: 014 Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub
Bardziej szczegółowoVincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java
J zyk programowania JAVA c 2011 Vincent Van GOGH: M»czyzna pij cy li»ank kawy Zadanie 6. Napisz program, który tworzy tablic 30 liczb wstawia do tej tablicy liczby od 0 do 29 sumuje te elementy tablicy,
Bardziej szczegółowo1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.
1 Klasy. Klasa to inaczej mówi c typ który podobnie jak struktura skªada si z ró»nych typów danych. Tworz c klas programista tworzy nowy typ danych, który mo»e by modelem rzeczywistego obiektu. 1.1 Denicja
Bardziej szczegółowo1. Wprowadzenie do C/C++
Podstawy Programowania - Roman Grundkiewicz - 013Z Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub
Bardziej szczegółowoTemat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoDYNAMICZNE PRZYDZIELANIE PAMIECI
DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne
Bardziej szczegółowoLekcja 9 - LICZBY LOSOWE, ZMIENNE
Lekcja 9 - LICZBY LOSOWE, ZMIENNE I STAŠE 1 Liczby losowe Czasami spotkamy si z tak sytuacj,»e b dziemy potrzebowa by program za nas wylosowaª jak ± liczb. U»yjemy do tego polecenia: - liczba losowa Sprawd¹my
Bardziej szczegółowoLekcja 12 - POMOCNICY
Lekcja 12 - POMOCNICY 1 Pomocnicy Pomocnicy, jak sama nazwa wskazuje, pomagaj Baltiemu w programach wykonuj c cz ± czynno±ci. S oni szczególnie pomocni, gdy chcemy ci g polece«wykona kilka razy w programie.
Bardziej szczegółowoWskaźniki w C. Anna Gogolińska
Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik
Bardziej szczegółowoWskaźniki. Informatyka
Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą
Bardziej szczegółowoRekurencyjne struktury danych
Andrzej Jastrz bski Akademia ETI Dynamiczny przydziaª pami ci Pami, która jest przydzielana na pocz tku dziaªania procesu to: pami programu czyli instrukcje programu pami statyczna zwi zana ze zmiennymi
Bardziej szczegółowoListy i operacje pytania
Listy i operacje pytania Iwona Polak iwona.polak@us.edu.pl Uniwersytet l ski Instytut Informatyki pa¹dziernika 07 Który atrybut NIE wyst puje jako atrybut elementów listy? klucz elementu (key) wska¹nik
Bardziej szczegółowo1 Wska¹niki. 1.1 Wska¹nik typu VOID. Wska¹nik jest obiektem przechowuj cym adres (z pami ci) przypisanej do niego zmiennej.
1 Wska¹niki. Wska¹nik jest obiektem przechowuj cym adres (z pami ci) przypisanej do niego zmiennej. int a; int *b; a = 11; cout
Bardziej szczegółowoWskaź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 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: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja
Bardziej szczegółowo> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki
> C++ dynamiczna alokacja/rezerwacja/przydział pamięci Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1429536600 > Dzisiejsze zajęcia sponsorują słówka: new oraz delete
Bardziej szczegółowoProgramowanie wspóªbie»ne
1 Zadanie 1: Bar Programowanie wspóªbie»ne wiczenia 6 monitory cz. 2 Napisz monitor Bar synchronizuj cy prac barmana obsªuguj cego klientów przy kolistym barze z N stoªkami. Ka»dy klient realizuje nast
Bardziej szczegółowoKompilowanie programów
Rozdziaª 2 Kompilowanie programów 2.1 Wst p 2.2 Kompilatory, IDE Zacznijmy od podania kilku podstawowych informacji: ˆ Program - to ci g polece«(instrukcji) do wykonania dla komputera ˆ Program to algorytm
Bardziej szczegółowoTablice, funkcje - wprowadzenie
Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład
Bardziej szczegółowoUzupełnienie dot. przekazywania argumentów
Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;
Bardziej szczegółowoZestaw 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.
ZESTAWY A Zestaw 1 Organizacja plików: Wszystkie pliki oddawane do sprawdzenia nale»y zapisa we wspólnym folderze o nazwie b d cej numerem indeksu, umieszczonym na pulpicie. Oddajemy tylko ¹ródªa programów
Bardziej szczegółowo1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami
1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.
Bardziej szczegółowoKURS C/C++ WYKŁAD 6. Wskaźniki
Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można
Bardziej szczegółowoPodstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
Bardziej szczegółowoMetody dowodzenia twierdze«
Metody dowodzenia twierdze«1 Metoda indukcji matematycznej Je±li T (n) jest form zdaniow okre±lon w zbiorze liczb naturalnych, to prawdziwe jest zdanie (T (0) n N (T (n) T (n + 1))) n N T (n). 2 W przypadku
Bardziej szczegółowoLekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz
Lekcja 8 - ANIMACJA 1 Polecenia Za pomoc Baltiego mo»emy tworzy animacj, tzn. sprawia by obraz na ekranie wygl daª jakby si poruszaª. Do animowania przedmiotów i tworzenia animacji posªu» nam polecenia
Bardziej szczegółowowykł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
i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje
Bardziej szczegółowoWskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Bardziej szczegółowoWskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres
Bardziej szczegółowoPodziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie
Cz ± II Podziaª pracy 1 Tablica sortuj ca Kolejka priorytetowa to struktura danych udost pniaj ca operacje wstawienia warto±ci i pobrania warto±ci minimalnej. Z kolejki liczb caªkowitych, za po±rednictwem
Bardziej szczegółowoLekcja 9 Liczby losowe, zmienne, staªe
Lekcja 9 Liczby losowe, zmienne, staªe Akademia im. Jana Dªugosza w Cz stochowie Liczby losowe Czasami potrzebujemy by program za nas wylosowaª liczb. U»yjemy do tego polecenia liczba losowa: Liczby losowe
Bardziej szczegółowoJęzyki i metodyka programowania. Wskaźniki i tablice.
Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana
Bardziej szczegółowoStałe, tablice dynamiczne i wielowymiarowe
Stałe, tablice dynamiczne i wielowymiarowe tylko do odczytu STAŁE - CONST tablice: const int dni_miesiaca[12]=31,28,31,30,31,30,31,31,30,31,30,31; const słowo kluczowe const sprawia, że wartość zmiennej
Bardziej szczegółowoO pewnym zadaniu olimpijskim
O pewnym zadaniu olimpijskim Michaª Seweryn, V LO w Krakowie opiekun pracy: dr Jacek Dymel Problem pocz tkowy Na drugim etapie LXII Olimpiady Matematycznej pojawiª si nast puj cy problem: Dla ka»dej liczby
Bardziej szczegółowoPodstawy programowania komputerów
Podstawy programowania komputerów Wykład 10: Sterowanie pamięcią w C Pamięć na stosie!każdy program napisany w języku C ma dostęp do dwóch obszarów pamięci - stosu i sterty, w których może być przechowywana
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
Bardziej szczegółowoProgramowanie i struktury danych 1 / 44
Programowanie i struktury danych 1 / 44 Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje
Bardziej szczegółowoA = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.
Logika i teoria mnogo±ci, konspekt wykªad 12 Teoria mocy, cz ± II Def. 12.1 Ka»demu zbiorowi X przyporz dkowujemy oznaczany symbolem X obiekt zwany liczb kardynaln (lub moc zbioru X) w taki sposób,»e ta
Bardziej szczegółowoLekcja 6 Programowanie - Zaawansowane
Lekcja 6 Programowanie - Zaawansowane Akademia im. Jana Dªugosza w Cz stochowie Wst p Wiemy ju»: co to jest program i programowanie, jak wygl da programowanie, jak tworzy programy za pomoc Baltiego. Na
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne
Bardziej szczegółowoFunctionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ
w C Zak lad Chemii Teoretycznej UJ 30 listopada 2006 1 2 3 Inicjalizacja zmiennych Zmienne jednowymiarowe można inicjować przy ich definicji. #include i n t x = 1 ; l o n g day = 1000L * 60L
Bardziej szczegółowoANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15
ANALIZA NUMERYCZNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Metoda Eulera 3 1.1 zagadnienia brzegowe....................... 3 1.2 Zastosowanie ró»niczki...................... 4 1.3 Output do pliku
Bardziej szczegółowoLaboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski
Laboratorium 6: Dynamiczny przydział pamięci dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 15 maja 2015 1. Wprowadzenie Instrukcja poświęcona jest dynamicznemu przydziałowi i zwalnianiu pamięci w
Bardziej szczegółowo2 Skªadnia polece«w pliku
Interpreter opisu dziaªa«platformy mobilnej wtyczki 1 Ogólny opis zadania Nale»y napisa program, który b dzie w stanie przeczyta z pliku tekstowego sekwencj polece«ruchu, a nast pnie zasymulowa dziaªanie
Bardziej szczegółowoPowyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci.
1. Tablice dynamiczne Początkowa zadeklarowana wielkość tablicy czasami może okazać niewystarczająca, lub nadmierna. Dynamiczna alokacja pamięci wykorzystywana jest w celu otrzymania bądź zwolnienia pamięci
Bardziej szczegółowoMacierze i Wyznaczniki
dr Krzysztof yjewski Mechatronika; S-I.in». 5 pa¹dziernika 6 Macierze i Wyznaczniki Kilka wzorów i informacji pomocniczych: Denicja. Tablic nast puj cej postaci a a... a n a a... a n A =... a m a m...
Bardziej szczegółowo1 Metody iteracyjne rozwi zywania równania f(x)=0
1 Metody iteracyjne rozwi zywania równania f()=0 1.1 Metoda bisekcji Zaªó»my,»e funkcja f jest ci gªa w [a 0, b 0 ]. Pierwiastek jest w przedziale [a 0, b 0 ] gdy f(a 0 )f(b 0 ) < 0. (1) Ustalmy f(a 0
Bardziej szczegółowoProgramowanie wspóªbie»ne
1 Zadanie 1: Programowanie wspóªbie»ne wiczenia 12 Przestrzenie krotek cz. 2 Przychodnia lekarska W przychodni lekarskiej pracuje L > 0 lekarzy, z których ka»dy ma jedn z 0 < S L specjalno±ci, przy czym
Bardziej szczegółowoTABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;
Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst
Bardziej szczegółowoTypy danych i formatowanie
Typy danych i formatowanie Elwira Wachowicz elwira@ifd.uni.wroc.pl 28 marca 2013 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Typy danych i formatowanie 28 marca 2013 1 / 16 Sªowa kluczowe typów danych Pierwotne
Bardziej szczegółowoProgramowanie wspóªbie»ne
1 Programowanie wspóªbie»ne wiczenia 5 monitory cz. 1 Zadanie 1: Stolik dwuosobowy raz jeszcze W systemie dziaªa N par procesów. Procesy z pary s nierozró»nialne. Ka»dy proces cyklicznie wykonuje wªasnesprawy,
Bardziej szczegółowowiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe
wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe 1 Wprowadzenie 1.1 rodowisko programistyczne NetBeans https://netbeans.org/ 1.2 Dokumentacja j zyka Java https://docs.oracle.com/javase/8/docs/api/
Bardziej szczegółowoTablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1
Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).
Bardziej szczegółowo1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem.
Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem. 2018/2019 1. Odcienie szaro±ci Model RGB jest modelem barw opartym na wªa±ciwo±ciach odbiorczych
Bardziej szczegółowoListy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.
Wydziaª Matematyki, Fizyki i Informatyki 10 marca 2008 Spis tre±ci Listy 1 Listy 2 3 Co to jest lista? Listy List w Mathematice jest wyra»enie oddzielone przecinkami i zamkni te w { klamrach }. Elementy
Bardziej szczegółowoJęzyk ANSI C tablice wielowymiarowe
Język ANSI C tablice wielowymiarowe Gdy tablica wielowymiarowa jest parametrem funkcji, to w standardzie ANSI C konieczne jest podanie wszystkich wymiarów poza pierwszym. Przykład. Napisać program wczytujący
Bardziej szczegółowoWstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
Bardziej szczegółowoLekcja 3 Banki i nowe przedmioty
Lekcja 3 Banki i nowe przedmioty Akademia im. Jana Dªugosza w Cz stochowie Banki przedmiotów Co ju» wiemy? co to s banki przedmiotów w Baltie potramy korzysta z banków przedmiotów mo»emy tworzy nowe przedmioty
Bardziej szczegółowotablica: dane_liczbowe
TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica
Bardziej szczegółowoRozwi zania klasycznych problemów w Rendezvous
Cz ± I Rozwi zania klasycznych problemów w Rendezvous 1 Producenci i konsumenci Na pocz tek rozwa»my wersj z jednym producentem i jednym konsumentem, dziaªaj cymi w niesko«czonych p tlach. Mechanizm komunikacji
Bardziej szczegółowoProgramowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Bardziej szczegółowox y x y x y x + y x y
Algebra logiki 1 W zbiorze {0, 1} okre±lamy dziaªania dwuargumentowe,, +, oraz dziaªanie jednoargumentowe ( ). Dziaªanie x + y nazywamy dodawaniem modulo 2, a dziaªanie x y nazywamy kresk Sheera. x x 0
Bardziej szczegółowoRelacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.
Relacje 1 Relacj n-argumentow nazywamy podzbiór ϱ X 1 X 2... X n. Je±li ϱ X Y jest relacj dwuargumentow (binarn ), to zamiast (x, y) ϱ piszemy xϱy. Relacj binarn okre±lon w zbiorze X nazywamy podzbiór
Bardziej szczegółowoARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15
ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych
Bardziej szczegółowoUkªady równa«liniowych
dr Krzysztof yjewski Mechatronika; S-I 0 in» 7 listopada 206 Ukªady równa«liniowych Informacje pomocnicze Denicja Ogólna posta ukªadu m równa«liniowych z n niewiadomymi x, x, x n, gdzie m, n N jest nast
Bardziej szczegółowoCzęść 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Bardziej szczegółowoPrzetwarzanie sygnaªów
Przetwarzanie sygnaªów Laboratorium 1 - wst p do C# Dawid Poªap Przetwarzanie sygnaªów Pa¹dziernik, 2018 1 / 17 Czego mo»na oczekiwa wzgl dem programowania w C# na tych laboratoriach? Dawid Poªap Przetwarzanie
Bardziej szczegółowoZbiór zada«do przedmiotu Podstawy programowania
Zbiór zada«do przedmiotu Podstawy programowania mgr in». Anna Šupi«ska Dubicka Wydziaª Informatyki Politechnika Biaªostocka Spis tre±ci 1 Instrukcje wej±cia-wyj±cia. Instrukcje warunkowe i wyboru 2 2 Instrukcje
Bardziej szczegółowoMetodydowodzenia twierdzeń
1 Metodydowodzenia twierdzeń Przez zdanie rozumiemy dowolne stwierdzenie, które jest albo prawdziwe, albo faªszywe (nie mo»e by ono jednocze±nie prawdziwe i faªszywe). Tradycyjnie b dziemy u»ywali maªych
Bardziej szczegółowoTablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ
Zak lad Chemii Teoretycznej UJ 26 listopada 2007 wielowymiarowe 1 2 wielowymiarowe 3 Typ tablicowy Plan wielowymiarowe Tablica Zajmujacy spójny obszar w pamieci zestaw zmiennych (obiektów) tego samego
Bardziej szczegółowoc Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach
12: w sieciach Spis zagadnie«sieci przepªywowe przepªywy w sieciach ±cie»ka powi kszaj ca tw. Forda-Fulkersona Znajdowanie maksymalnego przepªywu Zastosowania przepªywów Sieci przepªywowe Sie przepªywowa
Bardziej szczegółowoX WARMI SKO-MAZURSKIE ZAWODY MATEMATYCZNE 18 maja 2012 (szkoªy ponadgimnazjalne)
X WARMI SKO-MAZURSKIE ZAWODY MATEMATYCZNE 18 maja 2012 (szkoªy ponadgimnazjalne) Zadanie 1 Obecnie u»ywane tablice rejestracyjne wydawane s od 1 maja 2000r. Numery rejestracyjne aut s tworzone ze zbioru
Bardziej szczegółowoJęzyk C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
Bardziej szczegółowoTablice, funkcje, wskaźniki - wprowadzenie
Tablice, funkcje, wskaźniki - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 4 19 listopada 2018 (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada 2018 1 / 37 Outline 1 Tablice
Bardziej szczegółowoBash i algorytmy. Elwira Wachowicz. 20 lutego
Bash i algorytmy Elwira Wachowicz elwira@ifd.uni.wroc.pl 20 lutego 2012 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 1 / 16 Inne przydatne polecenia Polecenie Dziaªanie Przykªad
Bardziej szczegółowoPrzykªadowe tematy z JiMP
Przykªadowe tematy z JiMP 1. Prosz napisa program, który dokona konwersji swojego argumentu wywoªania z punktw na centymetry, (77.27 pt = 1 cal = 2.54 cm) tzn. np. wywoªanie: c:\>pkt 144.54 = 5.08 cm spowoduje
Bardziej szczegółowoWskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
Bardziej szczegółowoMacierze i Wyznaczniki
Macierze i Wyznaczniki Kilka wzorów i informacji pomocniczych: Denicja 1. Tablic nast puj cej postaci a 11 a 12... a 1n a 21 a 22... a 2n A =... a m1 a m2... a mn nazywamy macierz o m wierszach i n kolumnach,
Bardziej szczegółowoWykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.
Wykªad jest prowadzony w oparciu o podr cznik Analiza matematyczna 2. Denicje, twierdzenia, wzory M. Gewerta i Z. Skoczylasa. Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych. Denicja Mówimy,»e funkcja
Bardziej szczegółowomain( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!
Funkcja wysoce niezależny blok definicji i instrukcji programu (podprogram) Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu
Bardziej szczegółowoJęzyk C, tablice i funkcje (laboratorium, EE1-DI)
Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowo1 Bª dy i arytmetyka zmiennopozycyjna
1 Bª dy i arytmetyka zmiennopozycyjna Liczby w pami ci komputera przedstawiamy w ukªadzie dwójkowym w postaci zmiennopozycyjnej Oznacza to,»e s one postaci ±m c, 01 m < 1, c min c c max, (1) gdzie m nazywamy
Bardziej szczegółowoModel obiektu w JavaScript
16 marca 2009 E4X Paradygmat klasowy Klasa Deniuje wszystkie wªa±ciwo±ci charakterystyczne dla wybranego zbioru obiektów. Klasa jest poj ciem abstrakcyjnym odnosz cym si do zbioru, a nie do pojedynczego
Bardziej szczegółowoISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Bardziej szczegółowo// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.
Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy
Bardziej szczegółowoALGORYTMY SORTOWANIA DANYCH
ALGORYTMY SORTOWANIA DANYCH W zagadnieniu sortowania danych rozpatrywa b dziemy n liczb caªkowitych, b d cych pierwotnie w losowej kolejno±ci, które nale»y uporz dkowa nierosn co. Oczywi±cie sortowa mo»emy
Bardziej szczegółowoInformatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk
Informatyka Wy-03 Dynamiczna alokacja pamięci, wyjątki mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 13.03.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konsultacje Piątek 13:00
Bardziej szczegółowoPROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec
PROE wykład 7 kontenery tablicowe, listy dr inż. Jacek Naruniec Prosty kontener oparty na tablicach Funkcja dodawanie pojedynczego słonia do kontenera: 1 2 3 4 5 6 7 11 12 13 14 15 16 17 21 22 23 24 25
Bardziej szczegółowoŸ1 Oznaczenia, poj cia wst pne
Ÿ1 Oznaczenia, poj cia wst pne Symbol sumy, j, k Z, j k: k x i = x j + x j+1 + + x k. i=j Przykªad 1.1. Oblicz 5 i=1 2i. Odpowied¹ 1.1. 5 i=1 2i = 2 1 + 2 2 + 2 3 + 2 4 + 2 5 = 2 + 4 + 8 + 16 + 32 = 62.
Bardziej szczegółowo