• Nie Znaleziono Wyników

Programowanie I C / C++ laboratorium 04 — tablice

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie I C / C++ laboratorium 04 — tablice"

Copied!
11
0
0

Pełen tekst

(1)

Tablice w C (wersja nieinwazyjna) Tablice „wielowymiarowe”

Programowanie I C / C++

laboratorium 04 — tablice

Jarosław Piersa

Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika

2013-03-06

(2)

Tablice

Tworzenie niezainicjowanej tablicy:

int n = 1 0 ; int a[ n ];

a[0] = 2;

a[1] = 3;

p r i n t f (" % d \ n ", a[ 2 ] ) ;

tablice w C są indeksowane od zera

(3)

Tablice w C (wersja nieinwazyjna) Tablice „wielowymiarowe”

Tablice int Tablice char

Tablice - alokacja w miejscu

Inicjowanie tablicy w miejscu:

int a[] = { 9 , 3 , 4 , 8 , 1};

p r i n t f (" % d % d \ n ", a[0] , a[ 4 ] ) ;

odwołanie się do elementu poza tablicą daje się skompilować ale może powodować błędy

pisanie do elementu poza tablicą powoduje segmentation fault Ćwiczenie: napisz program który wczyta n liczb użytkownika i wypisze je w odwrotnej kolejności

(4)

Tablice znaków

Tworzenie stałej napisowej (tablicy znaków):

c h a r a[] = " Ala ma k o t a ";

p r i n t f (" % c % c % c % c \ n ", a[10] , a[9] , a[8] , a[7] );

p r i n t f (" **% c \ n ** ", a[ 1 1 ] ) ;

napis w C jest tablicą znaków

(5)

Tablice w C (wersja nieinwazyjna) Tablice „wielowymiarowe”

Tablice int Tablice char

Tablice znaków

Alokowanie miejsca na napis (bez inicjalizacji!)

c h a r a[ 1 0 ] ;

a[0] = a[2] = ’ a ’; a[1] = ’ l ’;

p r i n t f (" % s \ n ", a );

a[3] = ’ \0 ’;

p r i n t f (" % s \ n ", a);

napis jest terminowany za pomocą znaku'\0'

(6)

Jak sprawdzić długość napisu?

# include< s t d i o . h >

# include< s t r i n g . h >

int m a i n (){

c h a r a [ 1 0 ] ; g e t s ( a );

p r i n t f (" % d \ n ", s t r l e n( a ));

r e t u r n 0;

} // m a i n

Ćwiczenie: napisz program który wczyta napis i sprawdzi czy jest on palimdromem

(7)

Tablice w C (wersja nieinwazyjna) Tablice „wielowymiarowe”

Tablice „wielowymiarowe”

Tablica argumentów programu

Tablice wielowymiarowe

Tablica zaalokowana i zainicjowana

# include< s t d i o . h >

int m a i n (){

int a[ 2 ] [ 3 ] = {{2 , 3 , 4} , {7 , 8 , 3 } } ; p r i n t f (" % d \ n ", a[ 0 ] [ 0 ] ) ;

r e t u r n 0;

} // m a i n

„Tablic wielowymiarowych w C nie ma... ale można tworzyć tablice tablic...” 1

(8)

Tablice wielowymiarowe

Tablica zaalokowana ale nie zainicjowana

int a[ 2 ] [ 3 ] [ 4 ] ; a[ 1 ] [ 2 ] [ 1 ] = -2;

p r i n t f (" % d \ n % d \ n ", a[ 0 ] [ 0 ] [ 0 ] , a[ 1 ] [ 2 ] [ 1 ] ) ;

Ćwiczenie: Zapisz (i wyświetl) w tablicy dwuwymiarowej tabliczkę mnożenia do 10

(9)

Tablice w C (wersja nieinwazyjna) Tablice „wielowymiarowe”

Tablice „wielowymiarowe”

Tablica argumentów programu

Tablice napisów

// W e r s j a n i e z b y t e l e g a n c k a :

// c h a r a [ 3 ] [ 5 ] = {" ala " , " ma " , " k o t a "};

// w e r s j a z n a c z n i e l a d n i e j s z a :

c h a r *a[] = {" ala ", " ma ", " k o t a "};

p r i n t f (" % s \ n ", a[ 1 ] ) ; p r i n t f (" % c \ n ", a[ 0 ] [ 1 ] ) ;

(10)

Tablice napisów

# include< s t d i o . h >

# d e f i n e N 10

# d e f i n e M 255

int m a i n (){

c h a r a[ N ][ M ];

int i ;

for ( i =0; i < N ; i ++ )

s c a n f (" % s ", a[ i ]);

for ( i = N ; i > = 0 ; i - - )

p r i n t f (" % s \ n ", a[ i ]);

r e t u r n( 0 ) ;

} // m a i n ()

(11)

Tablice w C (wersja nieinwazyjna) Tablice „wielowymiarowe”

Tablice „wielowymiarowe”

Tablica argumentów programu

Tablice argumentów programu

# include< s t d i o . h >

int m a i n (int argc, c h a r * a r g v[ ] ) { int i ;

for ( i =0; i <a r g c; i ++ )

p r i n t f (" % s \ n ", a r g v[ i ]);

r e t u r n( 0 ) ;

} // m a i n ()

./a.out ala ma kota

Zadanie: napisz program, który posumuje liczby podane jako argumenty wywołania (wsk. do parsowania liczb z napisu można

Cytaty

Powiązane dokumenty

Napisać program, który wczytuje tablicę 8 liczb rzeczywistych i wypisuje jej elementy na ekranie monitora. Następnie program oblicza sumę tych elementów tablicy, które należą

Funkcja szuka pierwszego wystąpienia łańcucha sub w podanym łańcuchu s Zwraca wskaźnik na znalezioną pozycję wystąpienia lub adres NULL. „ string

Warta omówienia jest definicja tablicy nazwisko: zostało powiedziane, że przy definicji tablicy konieczne jest podanie ilości jej elementów, tutaj zaś nie podano jawnie

VPN do sieci wydziałowej w przypadku pracy z zewnątrz serwis hostujący repozytoria (publiczne za darmo, prywatne są płatne) https://github.com/.

• struktura może być argumentem funkcji oraz wartością zwracaną z

[r]

Jednak język programowania wysokiego poziomu nie jest jasny dla komputera, który rozumie jedynie ciągi zer i jedynek. Dlatego musimy posłużyć się aplikacją,

Wykorzystywanie tablic jest o tyle wygodne, że w przypadku jeżeli nie znamy liczby zmiennych , które mogą zostać wykorzystane możemy użyć np.. tablicy z utworzonymi 1000