Lab Pascal zadanie 1

Zadanie 1 z laboratorium programowania na Informatyce UW. Zadanie 1 (termin wysylania rozwiazan: 18 I 2008, godz. 23:59) (Lamiglowka “Pietnascie”) Dana jest plansza o rozmiarach cztery na cztery, na ktorej znajduje sie pietnascie “klockow” oznaczonych duzymi literami. W pierwszym wierszu planszy sa cztery klocki: “A”, “B”, “C” i “D”, w drugim “E”, “F”, “G” i…

Zadanie 1 z laboratorium programowania na Informatyce UW.

 Zadanie 1 (termin wysylania rozwiazan: 18 I 2008, godz. 23:59)

(Lamiglowka "Pietnascie")

Dana jest plansza o rozmiarach cztery na cztery, na ktorej znajduje sie
pietnascie "klockow" oznaczonych duzymi literami. W pierwszym wierszu
planszy sa cztery klocki: "A", "B", "C" i "D", w drugim "E", "F", "G" i
"H", w trzecim "I", "J", "K", "L", w czwartym "M", "N", "O". Pole
w czwartym wierszu i czwartej kolumnie jest puste.

Klocek mozna przesunac na sasiadujace z nim wolne pole, zwalniajac tym
samym pole, na ktorym klocek znajdowal sie do tej pory.

W kazdej chwili na planszy jest co najwyzej jeden klocek, ktory mozna
przesunac w dol (ten, ktory znajduje sie nad pustym polem), co najwyzej
jeden, ktory mozna przesunac w prawo itd.

Napisz program, ktory umozliwi przesuwanie klockow na planszy i bedzie
wypisywal na wyjscie wynik.

Program wczyta z wejscia ciag liter ze zbioru {'l', 'p', 'g', 'd'}
zakonczony znakiem, ktory do tego zbioru nie nalezy. Kazda litera
jest poleceniem przesuniecia klocka na planszy:

'l' - w lewo
'p' - w prawo
'g' - w gore
'd' - w dol

Program wypisze na wyjscie stan poczatkowy planszy, a nastepnie dla kazdej
litery z wejscia bedzie probowal wykonac reprezentowane przez nia
przesuniecie klocka. Jesli przesuniecie nie bedzie mozliwe, bo np. puste
pole jest w ostatnim wierszu planszy, a wczytana litera to 'g', stan planszy
sie nie zmieni. Dla kazdej litery wczytanej z wejscia, niezaleznie od tego,
czy spowodowala ona przesuniecie klocka, wypisujemy wynikowy stan planszy.

Stan planszy wypisujemy w pieciu wierszach. W czterech pierwszych podajemy
znaki z klockow znajdujacych w kolejnych wierszach planszy, oznaczajac
spacja miejsce puste; piaty wiersz ma byc pusty.

Np. dla danych, znajdujacych sie w dolaczonym do tresci tego zadania pliku
zsi07z01.dane, program powinien wypisac to, co jest w pliku zsi07z01.wynik.

I oto rozwiązanie:

program zad1;
//Program napisany na zajęcia z Laboratorium Języka Pascal i C. Zadania nr 1.
var znak:char;
//W x i y przechowujemy pozycję pustego pola.
x,y:integer;
plansza : array [1..4,1..4] of char;

procedure wypisz;
//Wypisuje naturalnie zawartosc tablicy.
var i,j:integer;
begin
for i:=1 to 4 do
begin
for j:=1 to 4 do
begin
write(plansza[i,j]);
end;
writeln('');
end;
writeln('');
end;

begin

//Inicjujemy tablice.

plansza[1,1]:='A';
plansza[1,2]:='B';
plansza[1,3]:='C';
plansza[1,4]:='D';
plansza[2,1]:='E';
plansza[2,2]:='F';
plansza[2,3]:='G';
plansza[2,4]:='H';
plansza[3,1]:='I';
plansza[3,2]:='J';
plansza[3,3]:='K';
plansza[3,4]:='L';
plansza[4,1]:='M';
plansza[4,2]:='N';
plansza[4,3]:='O';
plansza[4,4]:=' ';

//Wolne pole jest na pozycji 4,4
x:=4;
y:=4;

//Wczytujemy znaki z wejscia
wypisz;

while not eof() do
begin
read(znak);

if znak='l' then
begin
//Jeśli jest cos na prawo.
if x1 then
begin
//Przesuwamy litere
plansza[y,x]:=plansza[y,x-1];
//Wstawiamy puste pole
x:=x-1;
plansza[y,x]:=' ';
end
end
else if znak='g' then
begin
//Jeśli jest cos na dole.
if y1 then
begin
//Przesuwamy litere
plansza[y,x]:=plansza[y-1,x];
//Wstawiamy puste pole
y:=y-1;
plansza[y,x]:=' ';
end
end
else
break;

wypisz;

end;

end.


Follow the thread

Start here

Eight essays connecting disciplines, useful progress, and deliberate choices.

Writing archive

Browse the complete archive, including technical, personal, travel, and book writing.

Projects

Tools and experiments where the ideas meet practical work.

Leave a Reply

Discover more from Artur Piszek

Subscribe now to keep reading and get access to the full archive.

Continue reading