problem tryb graficzyny

0

Otóż robię program w którym: podaje się najpierw ilość kroków, a następnie program w pierwszym kroku rysuje kwadrat w 2 rysuje na środku zamalowany kwadrat, potem na środku każdej ćwiartki czyli 4 kwadraty potem następne 16, 32 itd. zależnie od liczby kroków. Program już zrobiłem nawet rysuje kwadraty poprawnie, problem w tym, że rysuje te kwadraty niezależnie od tego ile razy miały być one narysowane, z pętli wychodzi znacznie później. pierwsze 2 kroki rysuje bez problemu bo nie są zawarte w pętli przy 3 i więcej się gubi

oto treść programu

program kwadraty;
uses crt,graph;
var y,krok,j,poz,pio,m,i,f:integer;
sterownik, tryb:integer;

begin
clrscr;
j:=2;
i:=2;

writeln('wprowadź liczbę kroków');
readln(krok);

sterownik:=detect;
InitGraph(sterownik, tryb,'c:\tp\bgi');

repeat
setfillstyle(1,white);
setcolor(white);

if krok>0 then rectangle(1,1,getmaxy,getmaxy);
if krok>1 then bar((getmaxy div 5)*2,(getmaxy div 5)*2,(getmaxy div 5)*3,(getmaxy div 5)*3);


if krok>2 then
        begin
                repeat

                f:=0;
                poz:=0;
                pio:=1;
                y:=1;
                i:=i+i;

                repeat
                        f:=f+1;
                        if (f div 2)*2<f then
                                begin
                                m:=getmaxy div (i*2);
                                bar(f*m-(m div 5),y*m-(m div 5),f*m+(m div 5),y*m+(m div 5));
                                poz:=poz+1
                                end;

                        if poz=i then
                                begin
                                repeat y:=y+1 until (y div 2)*2<y;
                                pio:=pio+1;
                                poz:=0;
                                f:=0;

                                end;

                until pio=i+1;

                j:=j+1;

                until j>=krok;



        end;

until(keypressed);
end.
0

poprawiłem program i działa ale teraz zorientowałem się, że przy 8 kroku rysuje nie wszystkie kwadraty i tu już nie mam pojęcia o co chodzi do 8 kroku tyle już razy zmieniają się te wartości, że to nie na mój mózg już.

program kwadraty;
uses crt,graph;
var y,krok,j,poz,pio,m,i,f,x:integer;
sterownik, tryb:integer;

begin
clrscr;

writeln('wprowadź liczbę kroków');
readln(krok);

sterownik:=detect;
InitGraph(sterownik, tryb,'c:\tp\bgi');

repeat

setfillstyle(1,white);
setcolor(white);

x:=getmaxy div 2;
if krok>0 then rectangle(1,1,getmaxy,getmaxy);
if krok>1 then bar(x-(x div 5),x-(x div 5),x+(x div 5),x+(x div 5));

j:=2;
i:=1;
if krok>2 then

    begin
            repeat

            f:=0;
            poz:=0;
            pio:=1;
            y:=1;
            i:=i+i;

            repeat
                    f:=f+1;
                    if (f div 2)*2<f then
                            begin
                            m:=getmaxy div (i*2);
                            bar(f*m-(m div 5),y*m-(m div 5),f*m+(m div 5),y*m+(m div 5));
                            poz:=poz+1
                            end;

                    if poz=i then
                            begin
                            repeat y:=y+1 until (y div 2)*2<y;
                            pio:=pio+1;
                            poz:=0;
                            f:=0;

                            end;

            until pio=i+1;

            j:=j+1;

            until j>=krok;



    end;

until(keypressed);
end.

0

już nie mam pojęcia o co chodzi do 8 kroku tyle już razy zmieniają się te wartości, że to nie na mój mózg już.

No to zajmij się czymś łatwiejszym np. zostań operatorem koparki.

Btw. Słyszał o czymś takim co się nazywa znacznikami i w co się opatula kod?

repeat y:=y+1 until (y div 2)*2<y; - bardzo śmieszne.

Ogarnij debugger, przestań używać TP i naucz się debuggować to może to ogarniesz. A jak nie to zapostuj informacje z debuggera, call stack etc. etc. etc. Obrazki też mile widziane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1