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.
> 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?
Két szám összehasonlítása a feladat. If-és kacsacsőr.
> hogy hányszor tudja feltölteni a mátrixot...maradékkal ne próbálkozzon
Egészosztás és maradék (div és mod) operátorok a barátaid. De ha velük nem találkoztál még, a 4 alapművelet és a ciklusok segítenek megoldani a feladatot egy alternatív módon.
Köszönöm.
A beolvasásnál mit rontok el, hogy kétszer kell entert ütni minden tag után?
> write('Kérem az ',i,' elemet : ');readln(t[i]);
> readln(elem);
2 db readln-od van. :)
'write('Kérem az ',i,' elemet : ');readln(t[i]);
readln(elem); '
Szerinted hány read.... van
Egyenlőre ennyi, a kód pocsék.
Ha van kedved, leírhatnád a megoldást. :-)
Olyan megoldás érdekelne, ami mondjuk akár többszáz elemű tömbön is működne, ha megvan az elemszám, hogy hányat adtak meg...
Igen, sajnos bennefelejtettem a másik readln-t. :S
Az esztétikára nem ügyeltem, sajnos. :(
Mármint hogy a kód esztétikusan nézzen ki.
Program Tomb_Matrix;
var
t : Array [0..60] of Integer;
m : Array [1..6,1..6] of Integer;
i,j,k : Byte;
elem : Integer;
begin
i := 0;
elem := 4;
While (elem <> 0) do
begin
WriteLn(#10#13,'Kérem az ',i,' elemet : ');
ReadLn(elem);
t[i] := elem;
Inc (i);
end;
k := i;
elem :=0;
For i := 1 to k Div 6 do
begin
for j := 1 to k Div 6 do
begin
m[i,j]:=t[elem];
inc(elem);
end;
end;
end.
Házi vagy csak neked kell ?
A régi 'ajánlás' szerint, amit én még a mai napig is követek a foglalt szavak kisbetűsek - program, begin, end, for, do, if, then, while, var, array... nem olyan sok van - a többi pedig értelemszerűen nagybetűvel kezdődik és ha összetett akkor a második része is pl. WriteLine := WriteLn....
Sok nyelv érzékeny a kis és nagybetűre ezért érdemes már a Pascalban is hozzászokni.
Még küzdj egy kicsit és mindjárt megvan a megoldásod. Ha végképp nem megy...
Nem vagyok már iskolás, szóval nem házi, csak szeretek gondolkodni dolgokon és nagyon érdekel ez a probléma.
Nem tudom miért nem jövök rá :S
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!