Kezdőoldal » Számítástechnika » Programozás » Minimum és maximum tétel...

Minimum és maximum tétel függvénnyel, mi a probléma?

Figyelt kérdés

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


2014. szept. 1. 13:39
 1/7 anonim ***** válasza:

Nem tudom, nálad miért akad ki, IdeOne-on gyönyörűen működik:

[link]

2014. szept. 1. 13:44
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:

az lehet és én sem értem hogy miért akad ki, de Free Pascal-nál kiakad exitcode 201-el


[link]

itt is jól működik...

2014. szept. 1. 13:52
 3/7 ejbenjaro ***** válasza:

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.

2014. szept. 1. 14:27
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:
rendben, köszi
2014. szept. 1. 14:56
 5/7 SimkoL ***** válasza:

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 ?

2014. szept. 1. 18:58
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:

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 ...)

2014. szept. 1. 19:55
 7/7 SimkoL ***** válasza:
Az n tömböt dinamikusnak deklaráltad tehát az indexelése 0-tól kezdődik. A tomb-őt pedig 1..10 között tehát az indexe 1-el kezdődik. Ennyi.
2014. szept. 1. 20:29
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!