Kezdőoldal » Számítástechnika » Programozás » Pascalban a sor legnagyobb...

Pascalban a sor legnagyobb elemet sor végére kell helyeznem úgyhogy hogy megcserélem azzal ami epén a végen van. De valahogy sosem jött össze. Hol csináltam hibát valaki meg tudna mondani?

Figyelt kérdés

program tomb;

uses crt;

var i,j,x,min,max,n,csere : integer;

a : array[1..10,1..10] of integer;

begin

clrscr;

write('Adja meg a tomb meretet: ');

readln(n);

writeln;

max:=-10;

min:=10;

randomize;

for i:= 1 to n do begin

for j:= 1 to n do begin

a[i,j]:=random(9)+1;

write(a[i,j]:2);

if max<a[i,j] then max:=a[i,j];

if min>a[i,j] then min:=a[i,j];

end;

writeln;

end;

writeln;

for i:= 1 to n do begin

for j:= 1 to n do begin

csere:=a[i,n];

a[i,n]:=max;

max:=csere;

end;

end;

for i:= 1 to n do begin

for j:= 1 to n do begin

write(a[i,j]:2);

end;

writeln;

end;

readln;

end.



2014. jan. 27. 19:13
 1/5 anonim ***** válasza:

"a sor legnagyobb elemet sor végére kell helyeznem"


Ehhez soronként kéne maximumot keresni, nem? Te csak egy maximumot keresel az egész mátrixban.


Emellett a cserés ciklusodnál tök felesleges a j változós ciklus, legalábbis nem használod semmire.


És ha megnézed ezt a cserés ciklust, mit csinál:

i=1 : max-ban lesz az 1. sor utsó eleme, 1. sor utsó elemében lesz a max

A globális max-ot el is vesztetted.

Későbbiekben az 1. sor utsó eleme (ami a max-ban van) bekerül a 2. sor utsó elemébe, és gyakorlatilag az utolsó elemek lefelé tolódnak, az n. sor utsó eleme pedig kint marad a max-ban.


Valamint illene ellenőrizni az n-t bekérés után, de ez már csak esztétika.

2014. jan. 27. 19:30
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
megtudnád nekem mutatni hogyan tudok soronként maximumot keresni és hogy hogyan is végezhető el a csere?
2014. jan. 27. 19:37
 3/5 SimkoL ***** válasza:

Mivel látom, hogy küzdtél:)


program tomb;

uses Crt;

var i, j, maxindex, max, n : integer;

a : array[1..10,1..10] of integer;

begin

ClrScr;

repeat

Write('Adja meg a tomb meretet: ');

ReadLn(n);

until (n > 1) and (n < 11);

WriteLn;

Randomize;

for i:= 1 to n do

begin

for j:= 1 to n do

begin

a[i, j] := Random(9) + 1;

Write(a[i, j] : 2);

end;

WriteLn;

end;

for j := 1 to n do

begin

max := a[j, 1];

maxindex := 1;

for i := 1 to n do

begin

if a[j, i] > max then

begin

max := a[j, i];

maxindex := i;

end;

end;

a[j, maxindex] := a[j, n];

a[j, n] := max;

end;

WriteLn;

for i:= 1 to n do

begin

for j:= 1 to n do

begin

Write(a[i, j] : 2);

end;

WriteLn;

end;

ReadLn;

end.

2014. jan. 27. 20:52
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
köszönöm hogy szántál rám időt, ezzel nagyon sokat segéltél nekem.
2014. jan. 27. 21:11
 5/5 SimkoL ***** válasza:
Szívesen máskor is, láttam, hogy akarsz.
2014. jan. 27. 21:30
Hasznos számodra ez a válasz?

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!