Zrobiłem tablicę z obliczeniami. Wg mnie powinno działać prawidłowo, nie działa jednak:
Powinno sie niżej rozwinąć do setki w prawo, by była kompletna tablica. Obrys sie rozszerzy gdy będzie reszta liczb. Od kilku godzin tworzę ten kod w ramach nauki ale nie potrafię tego przegryźć.
Kod:
P.S.
Usunąłem d:=15; i jest teraz tak:
TABL. MNOZ.
---------------------------------
| 1* 1 = 1 | 2* 1 = 2 | 3* 1 = 3 | 4* 1 = 4 | 5* 1 = 5 |
| 1* 2 = 2 | 2* 2 = 4 | 3* 2 = 6 | 4* 2 = 8 | 5* 2 = 10 |
| 1* 3 = 3 | 2* 3 = 6 | 3* 3 = 9 | 4* 3 = 12 | 5* 3 = 15 |
| 1* 4 = 4 | 2* 4 = 8 | 3* 4 = 12 | 4* 4 = 16 | 5* 4 = 20 |
| 1* 5 = 5 | 2* 5 = 10 | 3* 5 = 15 | 4* 5 = 20 | 5* 5 = 25 |
| 1* 6 = 6 | 2* 6 = 12 | 3* 6 = 18 | 4* 6 = 24 | 5* 6 = 30 |
| 1* 7 = 7 | 2* 7 = 14 | 3* 7 = 21 | 4* 7 = 28 | 5* 7 = 35 |
| 1* 8 = 8 | 2* 8 = 16 | 3* 8 = 24 | 4* 8 = 32 | 5* 8 = 40 |
| 1* 9 = 9 | 2* 9 = 18 | 3* 9 = 27 | 4* 9 = 36 | 5* 9 = 45 |
| 1* 10 = 10 | 2* 10 = 20 | 3* 10 = 30 | 4* 10 = 40 | 5* 10 = 50 |
---------------------------------
| 6* 1 = 6 | 10* 1 = 10 |
| 6* 2 = 12 | 10* 2 = 20 |
| 6* 3 = 18 | 10* 3 = 30 |
| 6* 4 = 24 | 10* 4 = 40 |
| 6* 5 = 30 | 10* 5 = 50 |
| 6* 6 = 36 | 10* 6 = 60 |
| 6* 7 = 42 | 10* 7 = 70 |
| 6* 8 = 48 | 10* 8 = 80 |
| 6* 9 = 54 | 10* 9 = 90 |
| 6* 10 = 60 | 10* 10 =100 |
---------------------------------
koniec programu
D:\>Powinno sie niżej rozwinąć do setki w prawo, by była kompletna tablica. Obrys sie rozszerzy gdy będzie reszta liczb. Od kilku godzin tworzę ten kod w ramach nauki ale nie potrafię tego przegryźć.
Kod:
USES CRT;
VAR
a,b,c,c2,d,o,x:longint;
prawo:string;
CONST
odsteppion='|';
odsteppoz='-';
label miejsce1,PETLA,PETLA2;
BEGIN
clrscr;
a:=0; {pierwsza liczba}
b:=0; {druga liczba}
c:=2; {odleglosc od lewej}
d:=4; {odleglosc od góry}
gotoxy(c+1,d-2);
writeln('TABL. MNOZ.');
{/////////////////////}
PETLA: {obrys poziomy; petla, ponieważ wzialem wartosc c z koncówki programu}
IF X=11 THEN
begin
gotoxy(2,3);
o:=0;
write(' ');
repeat
o:=o+1;
write(odsteppoz);
until o=c+14;
gotoxy(2,14);
o:=0;
write(' ');
repeat
o:=o+1;
write(odsteppoz);
until o=c+14;
gotoxy(2,25);
o:=0;
write(' ');
repeat
o:=o+1;
write(odsteppoz);
until o=c+14;
GOTO PETLA2; {powrót do koncówki programu}
end;
{/////////////////////}
miejsce1:
a:=a+1;
REPEAT
if b=10 then b:=0;
b:=b+1;
gotoxy(c,d);
write(odsteppion);
writeln(a:4,'*',b:3,' =',a*b:3,prawo);
d:=d+1; {przejscie do nowej linii}
UNTIL b=10;
if a<5 then
begin
if (a>=1) and (a<5) then
begin
c:=c+17; {dodaj 17 do odleglosci od lewej}
d:=4; {przyjecie odleglosci 4 od góry, dla kazdej nowej
osobnej kolumny}
end;
if a=4 then prawo:=' |';
end;
{ODTĄD JEST COŚ ŹLE:}
if a>4 then
begin
d:=15;
c:=2;
if a>5 then
begin
c:=c+17;
end;
if a=9 then prawo:=' |';
end;
if a<10 then goto miejsce1;
{DO TĄD. Miał ten kawałek kodu rozpisać drugą, dolną połowę tablicy}
{////////////////////////}
X:=11;
GOTO PETLA; {po wykonaniu tablicy skok w górę,
można obrysować też z tego miejsca ale dla ćwiczeń tam obrysowałem}
PETLA2:
gotoxy(2,26);
writeln('koniec programu');
{////////////////////////}
END.P.S.
{ODTĄD JEST COŚ ŹLE:}
if a>4 then
begin
c:=2;
d:=15;
if (a>5) and (a<10) then
begin
c:=c+17;
end;
if a=9 then prawo:=' |';
end;
if a<10 then goto miejsce1;
{DO TĄD. Miał ten kawałek kodu rozpisać drugą, dolną połowę tablicy}Usunąłem d:=15; i jest teraz tak:
TABL. MNOZ.
----------------
| 1* 1 = 1 | 2* 1 = 2 | 3* 1 = 3 | 4* 1 = 4 | 5* 1 = 5 |
| 1* 2 = 2 | 2* 2 = 4 | 3* 2 = 6 | 4* 2 = 8 | 5* 2 = 10 |
| 1* 3 = 3 | 2* 3 = 6 | 3* 3 = 9 | 4* 3 = 12 | 5* 3 = 15 |
| 1* 4 = 4 | 2* 4 = 8 | 3* 4 = 12 | 4* 4 = 16 | 5* 4 = 20 |
| 1* 5 = 5 | 2* 5 = 10 | 3* 5 = 15 | 4* 5 = 20 | 5* 5 = 25 |
| 1* 6 = 6 | 2* 6 = 12 | 3* 6 = 18 | 4* 6 = 24 | 5* 6 = 30 |
| 1* 7 = 7 | 2* 7 = 14 | 3* 7 = 21 | 4* 7 = 28 | 5* 7 = 35 |
| 1* 8 = 8 | 2* 8 = 16 | 3* 8 = 24 | 4* 8 = 32 | 5* 8 = 40 |
| 1* 9 = 9 | 2* 9 = 18 | 3* 9 = 27 | 4* 9 = 36 | 5* 9 = 45 |
| 1* 10 = 10 | 2* 10 = 20 | 3* 10 = 30 | 4* 10 = 40 | 5* 10 = 50 |
----------------|
| 6* 2 = 12 |
| 6* 3 = 18 |
| 6* 4 = 24 |
| 6* 5 = 30 |
| 6* 6 = 36 |
| 6* 7 = 42 |
| 6* 8 = 48 |
| 6* 9 = 54 |
| 6* 10 = 60 |
| 7* 1 = 7 |
----------------| 7* 2 = 14 |
| 7* 3 = 21 | koniec programu
| 7* 4 = 28 |
:\> | 7* 5 = 35 |
| 7* 6 = 42 |
| 7* 7 = 49 |
| 7* 8 = 56 |
| 7* 9 = 63 |
| 7* 10 = 70 |
| 8* 1 = 8 |
| 8* 2 = 16 |
| 8* 3 = 24 |
| 8* 4 = 32 |
| 8* 5 = 40 |
| 8* 6 = 48 |
| 8* 7 = 56 |
| 8* 8 = 64 |
| 8* 9 = 72 |
| 8* 10 = 80 |
| 9* 1 = 9 |
| 9* 2 = 18 |
| 9* 3 = 27 |
| 9* 4 = 36 |
| 9* 5 = 45 |
| 9* 6 = 54 |
| 9* 7 = 63 |
| 9* 8 = 72 |
| 9* 9 = 81 |
| 9* 10 = 90 |
| 10* 1 = 10 |
| 10* 2 = 20 |
| 10* 3 = 30 |
| 10* 4 = 40 |
| 10* 5 = 50 |
| 10* 6 = 60 |
| 10* 7 = 70 |
| 10* 8 = 80 |
| 10* 9 = 90 |
| 10* 10 =100 |