Minimum és maximum tétel függvénnyel, mi a probléma?
program minimum;
uses crt;
var
tomb : array [1..10] of byte;
i : byte;
function min(n:array of byte):byte;
var a:byte;
begin
a:=n[1];
for i:=2 to length(n) do
if n[i]<a
then
a:=n[i];
min:=a;
end;
function max(n:array of byte):byte;
var a:byte;
begin
a:=n[1];
for i:=2 to length(n) do
if n[i]>a
then
a:=n[i];
max:=a;
end;
Begin
ClrScr;
Randomize;
for i:=1 to 10 do
tomb[i]:=random(100)+1;
for i:=1 to 10 do
Write(tomb[i]:4);
WriteLn;
WriteLn('A tömb legkisebb eleme: ',min(tomb));
WriteLn('A tömb legnagyobb eleme: ',max(tomb));
WriteLn('A tömb hossza: ', length(tomb), ' elem.');
ReadLn;
End.
tomb hossza 10 de a függvényen belül túlindexelés miatt kiakad, miért?
n[10] létezik
Nem tudom, nálad miért akad ki, IdeOne-on gyönyörűen működik:
az lehet és én sem értem hogy miért akad ki, de Free Pascal-nál kiakad exitcode 201-el
itt is jól működik...
32 bites Windows 7 alatt Free Pascal 2.6.4-el fordítva simán működik semmi hibaüzenetet nem ad.
Ha gond van vele esetleg próbáld meg, hogy saját típusként hozod létre a tömböt és ezt a saját típust adod meg a tomb, illetve a függvények paraméterében levő n változónak.
Valahogy így:
program minmax;
uses crt;
type
TTomb= array [1..10] of byte;
var
tomb : TTomb;
i : byte;
function min(n:TTomb):byte;
var a:byte;
begin
a:=n[1];
for i:=2 to length(n) do
if n[i]<a
then
a:=n[i];
min:=a;
end;
function max(n:TTomb):byte;
var a:byte;
begin
a:=n[1];
for i:=2 to length(n) do
if n[i]>a
then
a:=n[i];
max:=a;
end;
Begin
ClrScr;
Randomize;
for i:=1 to 10 do
tomb[i]:=random(100)+1;
for i:=1 to 10 do
Write(tomb[i]:4);
WriteLn;
WriteLn('A tömb legkisebb eleme: ',min(tomb));
WriteLn('A tömb legnagyobb eleme: ',max(tomb));
WriteLn('A tömb hossza: ', length(tomb), ' elem.');
ReadLn;
End.
program minimum;
uses Crt;
var
tomb : array [1..10] of byte;
i : byte;
function min( n : array of byte) : byte;
var a : byte;
begin
a := n[0];
for i :=1 to Length(n) - 1 do
if n[i] < a then a := n[i];
min := a;
end;
function max( n : array of byte) : byte;
var a : byte;
begin
a := n[0];
for i:= 1 to Length(n) - 1 do
if n[i] > a then a := n[i];
max := a;
end;
begin
ClrScr;
Randomize;
for i := 1 to 10 do tomb[i] := Random(100) + 1;
for i := 1 to 10 do Write(tomb[i]:4);
WriteLn;
WriteLn('A tömb legkisebb eleme: ', min(tomb));
WriteLn('A tömb legnagyobb eleme: ', max(tomb));
WriteLn('A tömb hossza: ', Length(tomb), ' elem.');
ReadLn;
end.
Rájössz magadtól a hibádra vagy elmondjam ?
ha készítek egy tömböt 1-től 10-ig, akkor hivatkozhatok a 0. elemére? // ezt nem tudtam
(és akkor a 0 az 1; az 1 a 2 ...)
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!