To, co Ci wyskakuje to nie jest błąd kompilacji, program powinien działać bez większych problemów; Mniejszym problemem jest losowanie liczb, w którym może wystąpić błąd; Zwróć uwagę na deklaracje macierzy:
Kopiuj
var tab:array[1..20] of integer;
a losowanie indeksu elementu w macierzy:
Zadeklarowana macierz przechowuje elementy indeksowane w przedziale 1 .. 20, a Ty losujesz z przedziału 0 .. 9; Nie dość, że jak generator wylosuje 0 to wyjdziesz poza zakres macierzy, to jeszcze nigdy nie wyświetlisz wartości elementów z przedziału 10 .. 20; Nie wiem, czy takie jest założenie programu, czy nie, więc nie będę Cię poprawiał; W każdym razie aby można było wylosować indeks każdego elementu z macierzy, powinieneś to zrobić w ten sposób:
Kopiuj
var
Tab: array [0 .. 19] of Integer;
{...}
I := Random(20);
i będzie wszystko działać;
Kolejnym problemem jest brak inicjacji zmiennej licznik - przed pętlą przypisz jej wartość początkową, np. 0 (powinieneś dostać ostrzeżenie o tym);
Czyli Twój program mógłby wyglądać tak:
Kopiuj
uses
Crt;
var
Tab: array [0 .. 19] of Integer;
I, Licznik: Byte;
begin
Randomize;
Licznik := 0;
repeat
I := Random(20);
WriteLn(Tab[I]);
Inc(Licznik);
until Licznik = 10;
ReadLn;
end.
dzięki temu żadnego błędu nie uświadczysz; Popracuj nad formatowaniem kodu - styl wielbłądzi się kłania;