Kezdőoldal » Számítástechnika » Programozás » Egy tömbben megadott elemeket...

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?

Figyelt kérdés

Í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.



2015. ápr. 28. 16:03
1 2 3
 21/24 SimkoL ***** válasza:

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.

2015. ápr. 29. 17:50
Hasznos számodra ez a válasz?
 22/24 A kérdező kommentje:
Igen, ezt terveztem tovább írni most délután, csak már nem jött be az oldal, nagyon köszönöm, hogy ide másoltad.
2015. ápr. 29. 17:55
 23/24 A kérdező kommentje:

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

2015. ápr. 29. 18:47
 24/24 SimkoL ***** válasza:
{$MODE DELPHI} vagy {$mode objfpc}{$H+} kapcsoló, ezzel működnie kell, a 'régi pascal'-nál a függvény neve tehát szambe := szam;
2015. ápr. 29. 21:49
Hasznos számodra ez a válasz?
1 2 3

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!