Skocz do zawartości

Pascal


SLy

Rekomendowane odpowiedzi

Mam takie proste zadanko:

Napisz program realizujący algorytm, który umożliwi wyprowadzenie na ekran monitora prostokąta o bokach n x m, składającego się z liter "A" i "B", występujących co drugi wiersz ( m - liczba znaków "A" i "B" w poziomie, n - liczba znaków "A" lub "B" w pionie).

 

Oczywiście środek też ma być zapełniony literkami.

 

No i zrobiłem - w końcu nie jest to trudne. Problem w tym, że robiłem to po swojemu i nie wiem czy da się to jakoś zoptymalizować lub zrobić w jakiś inny prostszy sposób.

U mnie wygląda to tak:

program prostokat;
uses crt;
var n,m,i,i2,j,j2:word;


procedure rysowanieAB;
begin
    for i:=1 to m div 2 do
        begin
        write('AB');
        end;
end;

procedure rysowanieBA;
begin
    for i:=1 to m div 2 do
        begin
        write('BA');
        end;
end;
begin
clrscr;
      writeln('Podaj wysokosc prostokata ');
      readln(n);
      writeln('Podaj szerokosc prostokata ');
      readln(m);
      j:=m mod 2;
      j2:=n mod 2;
      if j2=0 then
         begin
               for i2:=1 to n div 2 do
                    begin
                         if j=0 then
                            begin
                            rysowanieAB;
                            writeln;
                            rysowanieBA;
                            writeln;
                            end
                            else
                            begin
                            rysowanieAB;
                            write('A');
                            writeln;
                            rysowanieBA;
                            write('B');
                            writeln;
                            end;
                    end;
         end
         else
         begin
         for i2:=1 to n div 2 do
             begin
                  if j=0 then
                     begin
                     rysowanieAB;
                     writeln;
                     rysowanieBA;
                     writeln;
                     end
                     else
                     begin
                     rysowanieAB;
                     write('A');
                     writeln;
                     rysowanieBA;
                     write('B');
                     writeln;
                     end;
             end;
         if j=0 then
            begin
            rysowanieBA;
            end
            else
            begin
            rysowanieBA;
            write('B');
            end;
         end;
      readkey;

end.

Odnośnik do komentarza
Udostępnij na innych stronach

Hmmm a spróbuj tak:

 

for i:=1 to n do
begin
if n mod 2 = 0 then
begin
od_czego:='B';
pozniej:='A';
end
else
begin
od_czego:='A';
pozniej:='B';
end;
      for j:=1 to m do
      begin
if m mod 2 = 0 then write(od_czego) else write(pozniej);
      end;
writeln;

end;

 

Spróbuj, tak, ale pisze z pamięci, więc jak coś to pisz co nie działa ;]

 

Edit: Ups chyba pomyliłem kolejność, ale to chyba nie problem :P

Odnośnik do komentarza
Udostępnij na innych stronach

Hehe jak milo znow wrocic do korzeni :)

 

Na poczatek jedna uwaga... zauważcie, że jesli linijka konczy się na A to zaczyna się na B i odwrotnie.. nie ma wiec sensu zalozenie jesli parzysta jesli nie parzysta.. wystarczy je pisac naprzemiennie ABABABA i w odpowiednim miejscu konczyc linie ;)

 

Program kwadrat;
uses crt;
var m,n,i,j :integer;
litera : char;

Begin
clrscr;
write('Podaj liczbe wierszy : ');
readln(m);
write('Podaj liczbe kolumn : ');
readln(n);
writeln;

litera:='A';

for i:=1 to m do
begin
for j:=1 to n do
begin
write(litera);
if (litera='A') then begin litera:='B'; end else begin litera:='A'; end;
end;
writeln;
end;
readkey;
end.

 

A tak to bedzie wygladac...

 

Podaj liczbe wierszy : 4

Podaj liczbe kolumn : 5

 

ABABA

BABAB

ABABA

BABAB

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...