Avatar billede dcgeek Nybegynder
20. juni 2003 - 22:23 Der er 9 kommentarer og
1 løsning

Find det højeste nummer

Jeg har en masse variabler, kaldet a,b,c,d,e etc.
af typen integer.

Nu vil jeg så gerne en funktion der returnerer det højeste nummer. F.eks. at jeg har en anden integer kaldet Hoejeste.

Jeg skal kunne bruge funktionen således: Hoejste := FindHoejste(a,b,c,d,e);

FindHoejste() skal kunne indeholde et ubegrændset antal variabler.
Avatar billede bartfreak Nybegynder
20. juni 2003 - 22:54 #1
gogol..

.:O)
Avatar billede abpdk Nybegynder
20. juni 2003 - 23:20 #2
Den funktion du søger findes vist allerede i Delphi's Math klasse. Prøv at søge i hjælpen efter "MaxIntValue".
Avatar billede athlon-pascal Juniormester
21. juni 2003 - 18:12 #3
function FindHoejste(const IntArray: Array of Integer): Integer;
var
  I: Integer;
begin
  Result := IntArray[0];
  if Length(IntArray) > 1 then
    for I := 1 to Length(IntArray) - 1 do
    begin
      if IntArray[I] > Result then
        Result := IntArray[I];
    end;
end;

Funktionen kaldes således: Hoejste := FindHoejste([a,b,c,d,e,f,g,h,i]);
Avatar billede abpdk Nybegynder
21. juni 2003 - 18:41 #4
athlon-pascal>>

din:          function FindHoejste(const IntArray: Array of Integer): Integer;
delphi's egen: function MaxIntValue(const Data: array of Integer): Integer;

Hvori ligger forskellen?
Avatar billede athlon-pascal Juniormester
21. juni 2003 - 19:05 #5
Nu har jeg ikke set koden bag MaxIntValue, men du har ret...
Jeg tænkte blot, at dcgeek måske ville have en funktion hvor man kan se koden, og den er jo ikke ret lang :-)
Avatar billede abpdk Nybegynder
21. juni 2003 - 19:36 #6
Det er selvfølgelig rigtigt :)

Er der forresten ikke en fejl i din kode. Jeg har ikke lige testet den, men vil "Result := IntArray[0];" ikke resultere i en fejl hvis Length(IntArray) er lig nul?

Er der ikke snarere noget i retning af:

Result := 0;
if length(IntArray) > 0 then
  for I := 0 to Length(IntArray)-1 do
    if IntArray[I] > Result then
      Result := IntArray[I];

eller..

Result := 0;
if length(IntArray) > 0 then
  for I := 0 to Length(IntArray)-1 do
    result:=max(result, IntArray[I]);
Avatar billede athlon-pascal Juniormester
21. juni 2003 - 20:31 #7
I din rettelse glemmer du at der også kan være negative værdier i et Array of Integer.
Eksempel: Hoejste := FindHoejste([-435, -123, -9438, -45, -2437]);
I eksemplet vil din rettelse returnere 0...

Den her funktion er testet med negative værdier:

function FindHoejste(const IntArray: Array of Integer): Integer;
var
  I: Integer;
begin
  if Length(IntArray) > 0 then
    Result := IntArray[0]
  else
    Result := 0;
  if Length(IntArray) > 1 then
    for I := 1 to Length(IntArray) - 1 do
    begin
      if IntArray[I] > Result then
        Result := IntArray[I];
    end;
end;
Avatar billede abpdk Nybegynder
21. juni 2003 - 21:18 #8
Nå ja, hvis det endelig skal være, hvorfor så ikke: :)

function FindHoejste(const IntArray: Array of Integer): Integer;
var
  I: Integer;
begin
  if Length(IntArray) > 0 then begin
    Result := IntArray[0];
    for I := 1 to Length(IntArray) - 1 do
      if IntArray[I] > Result then
        Result:=IntArray[I];
  end else
    Result := 0;
end;
Avatar billede abpdk Nybegynder
21. juni 2003 - 21:22 #9
Hov, det skulle ikke ha' været et svar. Jeg holder nemlig stadig på mit første :)
Avatar billede borrisholt Novice
24. juni 2003 - 14:50 #10
uses
  Math;

Så har du en masse rare funktioner :

function MinValue(const Data: array of Double): Double;
function MinIntValue(const Data: array of Integer): Integer;

function Min(A,B: Integer): Integer; overload;
function Min(A,B: Int64): Int64; overload;
function Min(A,B: Single): Single; overload;
function Min(A,B: Double): Double; overload;
function Min(A,B: Extended): Extended; overload;

{ MaxValue: Returns the largest signed value in the data array (MAX) }
function MaxValue(const Data: array of Double): Double;
function MaxIntValue(const Data: array of Integer): Integer;

function Max(A,B: Integer): Integer; overload;
function Max(A,B: Int64): Int64; overload;
function Max(A,B: Single): Single; overload;
function Max(A,B: Double): Double; overload;
function Max(A,B: Extended): Extended; overload;


Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester