Lenne egy Pascal feladat, amit nagyjabol megoldottam, habar nem tokeletes. Segitenetek kijavitani?
Feladat :Olvassunk be egy N egész számot (1<=N<=10), majd egy NxN-es kétdimenziós tömbbe generáljunk véletlen egész számokat 10-tol 99-ig.
- Írjuk ki a kigenerált tömböt, pl. N=3-ra:
34 58 19
85 50 11
99 25 17
- Keressük meg a tömb legkisebb elemét és ezt az elemet cseréljük ki a tömb első sorának első elemével. Írjuk ki újból a tömböt:
11 58 19
85 50 34
99 25 17
Az en megoldasom:
program onemoreshot;
uses crt;
type n=integer;
var i,seged,j,min:n;
a:array[1..3,1..3] of n;
procedure kiir;
begin
for i:=1 to 3 do begin
for j:=1 to 3 do
write(a[i,j],' ');
writeln;
end;
end;
begin
clrscr;
randomize;
for i:=1 to 3 do
for j:=1 to 3 do begin
a[i,j]:=random(10);
end;
kiir; {elso kiiras}
min:=a[1,1];
for i:=1 to 3 do
for j:=1 to 3 do begin
if a[i,j]<min then begin
seged:=min;
min:=a[i,j];
a[i,j]:=seged;
end;
end;
a[1,1]:=min;
kiir;
readln;
end.
Szia.
Elsőre a következőt látom benne :
Nem kéred be az N értékét. A feladat azt mondja N 1 és 10 között lehet. (Létre kell hozni a 10x10 tömböt, de csak a magadott elemig használni (N)).
Módositások :
a:array[1..10,1..10] of byte; {Nem N ez itt nem jó volt.}
Az összes for ciklust átirni N-re : for i:=1 to N do
A véletlenszám generálás sem jó.
A feladat szerint 10-99 ig kell számokkal feltölteni, Te 0-9-ig töltöd fel.
a[i,j]:=random(10); helyett a[i,j]:=10+random(90);
A Minimum keresésnél is szerintem elég lenne az indexeket elmenteni (nem cserélgetni, a cserét akkor elvégezni, ha megvan a legkisebb elem, a ciklusok után) :
i1:=1;
J1:=1;
min:=a[i1,j1];
for i:=1 to 3 do begin
for j:=1 to 3 do begin
if a[i,j]<min then begin
min:=a[i,j];
i1:=i;
j1:=j;
end; { if }
end; {For j }
end ; {For i}
{csere :}
seged:=a[1,1];
A[1,1]:=a[i1,j1];
a[i1,j1]:=seged;
Hát nagyjából ennyi.
Sok sikert.
Üdv.
Most irtam, de már én is elrontottam.
A ciklusokat N-ig :
for i:=1 to N do begin
for j:=1 to N do begin
Az, hogy tobb szamot is elmozdit a helyerol pl:
Az eredeti tomb: 3 8 1
8 1 0
2 2 1
A vegso(csere utan): 0 8 3
8 1 1
2 2 1
Nem lehetne a felesleges cseréket kiküszöbölni?
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!