Filevandrel [ czlowiek o trudnym nicku ]
Turbo Pascal- co jest złego w tym kodzie?
Problem jest następujący. Mam napisać program ktory bedzie liczył n sumns kolumnowych kwadratu magicznego. Kwadrat ma tyle kolumn i wierszy liczb ile wynosi stała n. Napisałem program wsyzstko sie ładnie skompilowało, ale program nie chce dzialac jak należy. MOżecie mi powiedzieć co jest złego w tym kodzie?
program magiczny;
uses crt;
const n=3;
VAR x:array[1..n,1..n] of integer;tab:array[1..n*n of integer;
Procedure kwadrat;
var,i,j,e:integer;
begin
e:=1;
for j:= to n do
for i:=1 to n do
begin
x[i,j]:=e;
inc(e);
end;
end;
Procedure losuj;
var e,i,j,q,w,a,k,los:integer;
begin
a:=1;
for j:=1 to n do
begin
e:=1;
for q:=1 to n do
begin
for w:=1 to n do
begin
x[w,q]:=e
inc(e);
end;
end;
for i:=1 to n do
begin
repeat
los:=x[random(n)+1,i];
until los<>0;
tab[a]:=los;
for k:=1 to n do
begin
x[los,k]:=0;
end;
inc(a);
end;
end;
end;
procedure wypisz;
var i,j:integer;
begin
for j:=1 to n do;
begin
for i:=1 to n do write (x[i,j]:3);
writeln;
end;
writeln;
for j:=1 to (n*n) do
begin
write (tab[j]:3);
end;
end;
BEGIN
randomize;
ClrScr;
kwadrat;
losuj;
kwadrat;
wypisz;
Readkey;
END.
Gwoli jasnoci- na ekranie nie pojawia sie nic.... Bede dozgonnie wdizeczny za kazda pomoc.

Tomus665 [ Legend ]
Jak na moje to nie masz tutaj podanego polecenia ( wczytaj ) więc nie masz co się dziwić, że program Ci nie pokazuje się na ekranie.

Filevandrel [ czlowiek o trudnym nicku ]
czytania czego?
Tańczący na Zgliszczach [ Anioł Czeluści ]
na pierwszy rzut oka "x[i,j]:3"
nie ma w pascalu znaku dzielenia takiego jak w matematyce ":"
musisz stosowac znak "/" dla dzielenia liczb rzeczywistych (real)
lub
operator "mod" dla liczb calkowitych (naprzyklad a := x mod 2)
Filevandrel [ czlowiek o trudnym nicku ]
akurat to oznacza ze wynik wypisywany bedzie na trzech polach:P
Tańczący na Zgliszczach [ Anioł Czeluści ]
co racja, to racja. zwracam honor, moje przeoczenie.
"for j:= to n do"
zgubiles cyferke po =
"for w:=1 to n do
begin
x[w,q]:=e"
po e zgubiles ;
wiecej nie chce mi sie doszukiwac, nie mam kompilatora pascala pod reka zeby to sprobowac skopilowac i sie przyjzec dokladniej. ale moze to te bledy CI wywalalo.
kastore [ Troll Slayer ]
procedure wypisz;
var i,j:integer;
begin
for j:=1 to n do; <----- dałeś tutaj średnik, oznacza że ta pętla bedzie sobie wykonywać nic od 1 do n
begin
jak robisz pętle z begin end naucz sie pisac
for x:=1 to n do begin
.......
end;
a unikniesz takich sytuacji

Filevandrel [ czlowiek o trudnym nicku ]
A czy da sie zrobić cos takiego, że w pętli repeat until po "until" czyli w warunku zamieszczam petle "for"?
Chialbym zrobic cos takiego
until for k:=1 to i e<>z[k];
Jak to zapisac poprawnie?
Filevandrel [ czlowiek o trudnym nicku ]
up