Zadanie 1. Napisz program (Pascal, aplikacja konsolowa) zapisujący w tablicy zbiór par liczb parzysta-nieparzystaNapisz program, którego zadaniem będzie zapisanie w tablicy zbioru par liczb parzysta-nieparzysta. Źródłem liczb jest kolejka utworzona przy użyciu generatora liczb pseudolosowych.
Do utworzenia par liczb należy użyć dwóch stosów. Kolejka i stosy są implementowane za pomocą list jednokierunkowych. Długość kolejki wynosi 25.
Algorytm jest podany za pomocą poniższego opisu słownego w języku naturalnym.Przy użyciu generatora liczb pseudolosowych losuje się 25 liczb z przedziału <0..1000) i umieszcza w kolejce. Kolejka stanowi źródło danych. Z kolejki pobiera się poszczególne liczby i przenosi na dwa stosy, odpowiednio na stos liczb parzystych i stos liczb nieparzystych. Po opróżnieniu kolejki pobiera się po jednej liczbie z każdego stosu i taką parę liczb zapisuje w kolejnych elementach
tablicy. Operację prowadzi się do chwili, gdy jeden ze stosów zostanie całkowicie opróżniony. Produktem algorytmu jest tablica wypełniona wartościami.
Uwaga!
Zauważ, że na jednym ze stosów pozostanie zawsze co najmniej jedna liczba, gdyż kolejka źródłowa zawiera nieparzystą (25) liczbę elementów. Jeżeli generator liczb pseudolosowych nie wygeneruje równej liczby liczb parzystych i nieparzystych, to na jednym ze stosów pozostanie
więcej niż jeden element.
Wskazówki
Aby uruchomić generator liczb pseudolosowych należy w programie wykonać instrukcję:
Randomize
Losowanie liczb całkowitych z przedziału <0,n) uzyskuje się pobierając wartość funkcji:
Random(n)
Ustawienie kursora we wskazanym miejscu ekranu:
uses CRT;
gotoXY(X,Y)
X – współrzędna pozioma ekranu
Y – współrzędna pionowa ekranu
Lewy górny róg ekranu ma współrzędne (1,1)
Przykładowa procedura wyświetlająca 10 wierszy w kolumnie na wskazanej pozycji ekranu:
program PRZYKLAD_XY;
uses CRT;
procedure Przyklad( X,Y : integer );
var i : integer;
begin
gotoXY(X,Y);
writeln( '--- PRZYKLAD ---');
Y:=Y+1;
for i:=1 to 10 do
begin
gotoXY(X,Y);
writeln( i:2,' : ','Wiersz nr ',i:2 );
Y:=Y+1
end;
begin
ClrScr;
Przyklad(50,1);
readln
end.