GRY-Online.pl --> Archiwum Forum

Turbo Pascal- co jest złego w tym kodzie?

15.03.2006
00:10
[1]

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.

15.03.2006
00:14
smile
[2]

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.

15.03.2006
00:15
smile
[3]

Filevandrel [ czlowiek o trudnym nicku ]

czytania czego?

15.03.2006
00:22
[4]

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)

15.03.2006
00:26
[5]

Filevandrel [ czlowiek o trudnym nicku ]

akurat to oznacza ze wynik wypisywany bedzie na trzech polach:P

15.03.2006
00:31
[6]

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.

15.03.2006
07:35
[7]

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

15.03.2006
16:29
smile
[8]

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?

15.03.2006
16:50
[9]

Filevandrel [ czlowiek o trudnym nicku ]

up

© 2000-2025 GRY-OnLine S.A.