poniedziałek, 4 lutego 2008

Tablice

Tym razem krócej, dziś na infie było zadanie następującej treści....

Napisz program, który zapełni tablicę 20liczbami losowymi z zakresu 1 do 10, a następnie sprawdzi czy występuje wśród nich liczba wczytana z klawiatury.

Na podstawie tego polecenia stworzyłem 5 sic! programów:

v1- zapełniamy tablicę i wypisujemy wartości;
v2- zapełniamy tablicę, pytamy o liczbę, wyświetlamy ilość wystąpień;
v3- zapełniamy tablicę, pytamy o liczbę, wyświetlamy ilość wystąpień, i wszystkie wartości tablicy - tak dla sprawdzenia;p;
v4- zapełniamy tablicę, i wypisujemy ilość wystąpień każdej wartości 1..10;
v5- zapełniamy tablicę, i wypisujemy ilość wystąpień każdej wartości 1..10, dodatkowo wyświetla zawartość całej tablicy;

Wszystko do pobrania stąd: http://bzyx90.googlepages.com/tablica.zip

Licencja: http://creativecommons.org/licenses/by/2.5/pl/

Pozwolę zamieścić program początkowy, i program spełniający wszystkie wymagania, polecenia:

Na coś takiego, można zużyć 45 min lekcji ;]

program tablica_v1;
var
tablica:array[1..20] of byte; {Definujemy tablicę o 20 komórakch,czyli 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
i,a:byte; {Zmienne pomocnicze}
begin
Randomize; {Inicjalizacja generatora liczb losowych}
for i:=1 to 20 do {Dzięki tej pętli nasze działania opierają się na całej tablicy}
tablica[i]:=random(10)+1; {pierwsza cześć w trakcie działania wygląda następująco }
{tablica[1], tablica[2]...tablica[20] są to kolejne komórki tablicy}
{część 2 przypisuje loswową liczbę z zakresu 1 do 11}
for i:=1 to 20 do {j.w}
writeln(tablica[i]); {wypisywanie wartości kolejnych komórek}
readln; {to tylko 'blokuje' ekran po wypisaniu}
end.

Jednak, ażeby program spełniał wymagania musi wyglądać mniej więcej tak:

program tablica_v2;
var
tablica:array[1..20] of byte; {Definujemy tablicę o 20 komórakch,czyli 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
i,a,k:byte; {Zmienne pomocnicze}
begin
k:=0; {tak będzie bezpieczniej}
Randomize; {Inicjalizacja generatora liczb losowych}
for i:=1 to 20 do {Dzięki tej pętli nasze działania opierają się na całej tablicy}
tablica[i]:=random(10)+1; {pierwsza cześć w trakcie działania wygląda następująco }
{tablica[1], tablica[2]...tablica[20] są to kolejne komórki tablicy}
{część 2 przypisuje loswową liczbę z zakresu 1 do 11}
write('Podaj wartość elementu jaki chcesz znaleść(min.1 max.10) '); {Chyba rozumimy}
readln(a); {odczytujemy wartość jaką chcemy zmaleść}
for i:=1 to 20 do {j.w}
if tablica[i]=a then {sprawdzamy czy komórka tablicy jest 'równa' naszej magicznej licznie}
k:=k+1; {Prosty trik, jeżeli liczba występuje zwiększamy licznik o 1}
writeln('Liczba ',a, ' występuje ',k, ' razy.'); {to chyba wiadome}
readln; {to tylko 'blokuje' ekran po wypisaniu}
end.
No cóż, polecam pobrać wszystko zaznajomić się z wszystkimi programami i ich źródłami, jak zwykle zachęcam do komentarzy.

Brak komentarzy: