Zmienne obiektowe w pseudokodzie, notacja nawiasowa.
Niech X będzie zmienną obiektową reprezentującą obiekt z atrybutami (lub inaczej
polami):
a, b, c
do atrybutów obiektu X odwołujemy się używając notacji nawiasowej:
a[X], b[X], c[X]
Także tablice traktujemy jako zmienne obiektowe, które mogą posiadać dodatkowe
atrybuty,
przykładowo tablica A[1..n] może posiadać atrybuty:
pocz[A], kon[A]
które - przykładowo - mogą oznaczać początek i koniec pewnego "zakresu" tablicy.
Przyjmujemy że zmienne obiektowe to w rzeczywistości tzw wskazania na obiekt.
Struktury danych: stos i kolejka.
Stos to tablica S[1..n] z dodatkowym atrybutem p[S] wskazującym
wierzchołek stosu.
Na stosie można wykonywać następujące operacje:
Kolejka to tablica K[1..n], z dodatkowymi atrybutami c[K], p[K]
wskazującymi na element do odczytu oraz na wolny element do zapisu.
Na kolejce można wykonywać następujące operacje:
Uwaga: indeksy c[K] i p[K] mogą się "przewinąć" na początek tabeli!
.........................................................................................
Zadanie 100
Zaimplementuj operacje na stosie S i kolejce K.
Jeśli operacja powoduje błąd (np odczyt z pustego stosu) to użyj procedury
error "opis błędu"
Wskazówka: zwróć uwagę że w przypadku kolejki, gdy c[K]=p[K] to nie
wiadomo czy kolejka jest pusta czy pełna!
Zadanie 101
Mamy dwie kolejki K1 i K2, które zawierają posortowane elementy (tj gdybyśmy
odczytywali elementy kolejek procedurą Czytaj(K) otrzymalibyśmy posortowany ciąg
elementów). Scal kolejki, K1 i K2 a wynik umieść w kolejce K3. Czas
działania powinien być =O(LiczElem(K1)+LiczElem(K2)).
Zadanie 102
Tablica W[1..n] z atrybutem ost[W], której elementami są napisy, zawiera
wyrażenie arytmetyczne w tzw
Odwrotnej Notacji Polskiej (= ONP)
Wyrażenia te składają się z następujących elementów:
liczba, +, -, *, /
Przykład wyrażenia w ONP:
1 100 + 15 33 - *
co w zwykłej notacji wyrażeń oznacza
(1+100)*(15-33)
Napisz algorytm obliczający wartość wyrażenia zapisanego w tablicy W.
Uwaga 1: powyższe wyrażenie ONP jest pamiętane w W w następujący sposób:
W[1]="1"
W[2]="100"
W[3]="+"
W[4]="15"
W[5]="33"
W[6]="-"
W[7]="*"
ost[W]=7
Uwaga 2: dysponujemy funkcją wartość(), która zamienia napis reprezentujący liczbę na liczbę.
.......................................................................
inne zadania ...
Zadanie 103
Zapisz procedurę sortowania przez wstawianie tablicy A[1..n]
wykorzystując tzw wyszukiwanie binarne (patrz
zadanie 45). Oszacuj czas działania tej procedury sortowania gdy za operację
dominującą przyjmujemy:
.......................................................................
Zadanie domowe 104
Napisz procedurę wygrywającą (o ile to możliwe ?) w grze w "kółko i krzyżyk"
3x3.
Procedura ta powinna mieć następujący nagłówek:
procedura Ruch(var plansza, gracz)
Zadanie domowe 105
Dana jest macierz M[1..n, 1..n] reprezentująca obraz. W tablicy tej za pomocą 1
jest reprezentowany kontur, pozostałe elementy zawierają 0. Napisz algorytm
wypełniający kontur wartością 2.
Założenie upraszczające: elementy o wartości 1 stykają się bokami (a nie
narożnikami).
Uwaga: na powyższym rysunku 0 nie są zapisane.