Kezdőoldal » Számítástechnika » Programozás » Lenne egy Pascal feladat,...

Lenne egy Pascal feladat, amit nagyjabol megoldottam, habar nem tokeletes. Segitenetek kijavitani?

Figyelt kérdés

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.


2012. febr. 5. 20:06
 1/5 anonim ***** válasza:
Első blikkre jónak tűnik, mi a hibajelenség?
2012. febr. 5. 20:30
Hasznos számodra ez a válasz?
 2/5 coopper ***** válasza:

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.

2012. febr. 5. 21:14
Hasznos számodra ez a válasz?
 3/5 coopper ***** válasza:

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

2012. febr. 5. 21:16
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:

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?

2012. febr. 5. 21:17
 5/5 A kérdező kommentje:
Koszonom mindnkinek!! Mostmar ertem!
2012. febr. 5. 21:19

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!