PODST AWY PROGRAM OWANIA

Typ tablicowy

Typ tablicowy jest typem strukturalnym (złożonym), stanowiącym skończony zbiór elementów tego samego typu, o położeniu określanym przez indeksy. Zmienna typu tablicowego odpowiada tablicy (macierzy) w sensie matematycznym.

Opis typu tablicowego ma postać:

array[lista_typów_indeksów] of typ_bazowy w której indeksy muszą być typu porządkowego (integer lub char), a typ bazowy może być dowolnym typem prostym lub strukturalnym.

Przykład 1

var

tab1: array[0.. 50] of integer; tab2, tab3: array[1.. 20, 1.. 30] of real; tablica: array[boolean, zakres, dzien_tyg] of char; Tablice posiadają wymiar zależny od liczby indeksów (1, 2, 3–wymiarowe) oraz rozmiar zależny od zakresu określoności indeksu w każdym wymiarze (np. rozmiar – 10 kolumn, 15 wierszy). Najprostsze tablice to odpowiedniki jednowymiarowych wektorów.

Zmienne tablicowe całościowe mogą być wykorzystane jedynie w operacji przypisania (przy zgodności typów), np.:

var

tab1, tab2: array [1.. 10, 1.. 20] of real; begin

...

tab1 := tab2;

...

end.

natomiast inne operacje dokonywane być mogą tylko na składowych jeśli są dozwolone dla ich typu.

Przykład 2

...

tab1[2,3] := 0. 1; {nadanie wartości elementowi tablicy}

for i := 1 to 20 do tab2[1,i] := 0. 0; {wypełnianie pierwszego wiersza zerami}

for i := 1 to 20 do tab2[i,i] := 0; {wypełnianie przekątnej głównej zerami}

for i := 1 to 20 do

for k:= 1 to 20 do tab2[i,k] := 1 {wypełnianie całej tablicy stałą wartością równą jeden}

for i := 1 to 20 do {wydruk na ekranie całej tablicy}

begin

for k:= 1 to 20 do write(tab2[i,k]:4:2); writeln

end;

...

Przykład 3

type opis = (nazw, imie);

var grupa: array[1.. 100, opis] of string[30]; i: integer;

begin

...

grupa[1, nazw] := ' Kowalski'; if grupa[i, imie] = ' Stanislaw' then writeln(grupa[i, nazw]:30, grupa[i, imie]:20);

...

end.

1

PODST AWY PROGRAM OWANIA

Typ tablicowy

Tablicę o wartościach liczbowych można wypełnić liczbami losowymi. Do otrzymania liczb losowych służy procedura randomize i funkcja random. Instrukcja wywołania bezparametrowej procedury randomize powoduje zainicjowanie wbudowanego generatora liczb losowych. Konkretne liczby losowe są otrzymywane za

pomocą

funkcji

random

lub

random

(zakres),

gdzie

zakres

jest

wyrażeniem

o wartości całkowitej typu word. Jeżeli nie podano argumentu, to wartością funkcji jest liczba typu real z przedziału jednostronnie domkniętego [0, 1), a gdy podano zakres , to wartością funkcji jest liczba całkowita z przedziału [0, zakres).

Bardzo przydatna jest procedura clrscr z modułu procedur standardowych crt, której wywołanie czyści ekran. Wywołanie tej procedury na początku programu spowoduje wyświetlanie wyników programu na czystym ekranie. Aby wywołać procedurę clrscr, trzeba na początku części opisowej programu zadeklarować moduł crt:

uses crt;

Przykład programu

program p5; {Program wypełnia losowo tablicę i wyświetla jej zawartość}

uses crt;

const m = 20;

type t = array[1..m, 1..m] of real; var tab:

t;

i, j, lw, lk: integer;

begin

clrscr;

write('Podaj liczbę wierszy: ');

readln(lw);

write('Podaj liczbę kolumn: ');

readln(lk);

writeln;

randomize; {Wypełnianie tablicy liczbami losowymi}

for i := 1 to lw do

for j := 1 to lk do

tab[i, j] := random(100);

for i := 1 to lw do

{Wyświetlanie zawartości tablicy}

begin

for j := 1 to lk do

write(tab[i, j]:8:2);

writeln;

end;

readln;

end.

Zadania

1. Napisz program, który dla pobranej od użytkownika liczby całkowitej n pobierze i wyświetli n elementów tablicy jednowymiarowej.

2. Napisz program, który dla pobranej od użytkownika liczby całkowitej n, (1≤ n ≤ 20) pobierze n elementów tablicy jednowymiarowej korzystając z funkcji random i wyświetli element maksymalny w tej tablicy.

3. Napisz program, który dla pobranej od użytkownika liczby całkowitej n, (1 ≤ n ≤ 20) pobierze n elementów tablicy jednowymiarowej korzystając z funkcji random i wyświetli elementy maksymalny i minimalny w tej tablicy.

4. Napisz program, który dla pobranej od użytkownika liczby całkowitej n, (1 ≤ n ≤ 20) pobierze n elementów tablicy jednowymiarowej korzystając z funkcji random i wyświetli elementy maksymalny i minimalny w tej tablicy oraz ich indeksy.

5. Napisz program, który pobierze od użytkownika n liczb tablicy jednowymiarowej, a następnie obliczy i wyświetli sumę i wartość średnią tych liczb.

2

PODST AWY PROGRAM OWANIA

Typ tablicowy

6. Napisz program, który wczytuje z klawiatury nazwisko użytkownika, a następnie wyprowadza je na ekran w następujących układach:

a) M a l i n o w s k i

b) M

a

l

i

n

o

w

s

k

i

c)

d)

M M

a

a

l

l

i

i

n

n

o

o

w

w

s

s

k

k

i

i

7. Napisz program, który wczytuje z klawiatury nazwisko użytkownika, a następnie wyprowadza je na ekran w następującym układzie:

Ma

li

no

ws

ki

8. Napisz program, który wczytuje z klawiatury ciąg liczb o organizacji – liczba danych (liczb), wartości danych: N, a1, a2, ..., aN (N ≤ 10), umieszcza je w wektorze i przepisuje na ekran w jednym wierszu. Następnie program porządkuje liczby w kolejności wzrastania ich wartości i wyprowadza uporządkowane na ekran.

9. Napisz program, który pobiera od użytkownika wymiar macierzy (1 ≤ n ≤ 20, 1 ≤ m ≤ 20) oraz jej elementy, a następnie wyświetla zawartość tej macierzy oraz oblicza i wyświetla iloczyn elementów na głównej przekątnej.

10. Napisz program, który pobiera od użytkownika wymiar macierzy (1 ≤ n ≤ 20, 1 ≤ m ≤ 20) oraz jej elementy (wykorzystaj funkcję random), a następnie wyświetla zawartość tej macierzy oraz oblicza i wyświetla sumę elementów na głównej przekątnej.

11. Napisz program, który dla pobranej od użytkownika liczby całkowitej n, (1 ≤ n ≤ 20) pobierze n elementów tablicy jednowymiarowej korzystając z funkcji random, a następnie wyświetli zawartość tej tablicy, element maksymalny, jego indeks oraz liczbę elementów dodatnich tej tablicy.

12. Napisz program, który dla pobranej od użytkownika liczby całkowitej n, (1 ≤ n ≤ 20) pobierze n elementów tablicy jednowymiarowej, a następnie wyświetli zawartość tej tablicy, element minimalny, jego indeks oraz liczbę elementów ujemnych tej tablicy.

3