Egy tömbben megadott elemeket miként lehet átrakni mátrixba úgy, hogy a program figyeljen rá: hány elemet adtak meg és ha kevesebbet mint amivel a mátrixot ki lehetne tölteni akkor ne tegye bele?
Írtam egy példaprogramot is, amivel kapcsolatban azt szeretném kérdezni, hogy miként lehet a kérdésben szereplő problematikát megoldani.
Például ha megadnak neki csak húsz elemet, akkor ismerje fel, hogy hányszor tudja feltölteni a mátrixot a tömbből a megadott elemek száma szerint és a maradékkal ne próbálkozzon...
A példaprogramnak az a nagy baja, hogy valamiért kétszer kell beírni az adott elemet, hogy tovább menjen a másikra, nem tudom, miért...
Program Tomb_Matrix;
var
t : array [0..60] of integer;
m : array [1..6] of integer;
i,j : byte;
elem : integer;
begin
i:=0;
elem:=4;
while (elem<>0) do
begin
writeln;
write('Kérem az ',i,' elemet : ');readln(t[i]);
readln(elem);
t[i]:=elem;
inc(i);
end;
end.
Mivel az atw csak folyamatba helyezte a visszaállítást, így ide másolom az én verziómat:
program project1;
var
t : array of integer;
m : array [1..6, 1..6] of integer;
i, n, k, tujmeret, meretx, merety : integer;
function szambe(hanyadik: integer) : integer;
var s: string;
szam, hiba: integer;
begin
hiba := -1;
while hiba <> 0 do
begin
Write('Kerem a(z) ', hanyadik, '. szamot: ');
ReadLn(s);
Val(s, szam, hiba);
end;
Result := szam;
end;
begin
meretx := Length(m);
merety := Length(m[0]);
i := 0;
repeat
Inc(i);
SetLength(t, i);
t[i - 1] := szambe(i);
until (t[i - 1] = 0);
Dec(i);
tujmeret := meretx * merety;
SetLength(t, tujmeret);
if tujmeret > i then
begin
n := 0;
while i + n < tujmeret do
begin
t[i + n] := t[n];
Inc(n);
end;
end;
k := 0;
for i := 1 to meretx do
for n := 1 to merety do
begin
m[i, n] := t[k];
Inc(k);
end;
SetLength(t, 0);
for i := 1 to meretx do
begin
for n := 1 to merety do Write(m[i, n]:10);
WriteLn;
end;
ReadLn;
end.
Mi az, ami nem tetszhet neki a kódban?
A result-nak egy rendszerváltozónak kellene lennie, vagy deklarálni kellene? (én csak "IOResult"-ot ismerek).
Free Pascal Compiler version 2.6.4 [2014/03/06] for i386
Copyright (c) 1993-2014 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling dtomb.txt
dtomb.txt(19,8) Error: Identifier not found "Result"
dtomb.txt(24,20) Warning: range check error while evaluating constants
dtomb.txt(57,4) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!