Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Höchsten Wert von 5 Integer-Variablen bestimmen (https://www.delphipraxis.net/165871-hoechsten-wert-von-5-integer-variablen-bestimmen.html)

devidespe 19. Jan 2012 17:28

AW: Höchsten Wert von 5 Integer-Variablen bestimmen
 
Die Verschachtelung des Max-Befehls in ShowMessage liefert mir den höchsten Wert, aber nicht den Variablennamen.

Ich habe das jetzt mit mehreren If-Schleifen gelöst, die nicht nur den höchsten Wert abfragen, sondern auch in einer temporären Variable den Variablenamen speichern.

Aphton 19. Jan 2012 17:34

AW: Höchsten Wert von 5 Integer-Variablen bestimmen
 
Sofern du die Grundlagen von Delphi beherrscht und nicht gerade am Lernen und Üben (zB hiermit) bist, dann könntest du es mit einem Array ganz bequem machen:
Delphi-Quellcode:
var
  i: Integer;
  Vars: Array[1..5] Integer;
  HighestValue : Integer;
begin
  Randomize;

  for i := 1 to 5 do
    Vars[i] :=Random(99);

  HighestValue:= max(vars[1], max(vars[2], max(vars[3], max(vars[4], vars[5]))));
 
  i := 1;
  while vars[i] <> HighestValue do
    inc(i);

  ShowMessage('Die höchste Variable hat den Wert '+IntToStr(HighestValue) + ' (= var' + IntToStr(i)+')');
end;

Delphi-Laie 19. Jan 2012 18:03

AW: Höchsten Wert von 5 Integer-Variablen bestimmen
 
Zitat:

Zitat von Aphton (Beitrag 1146741)
Delphi-Quellcode:

uses (...), math;

(...)

  ShowMessage(IntToStr(max(var1, max(var2, max(var3, max(var4, var5))))));
somit erhältst du den größten Wert am elegantesten mMn!

Das riecht aber verdammt nach Rekursion, die auch eleganter realisiert (implementiert) werden kann.

Maxima (analog Minima) ermittle ich einfach so:

Delphi-Quellcode:
max:=intervariable[1]
for laufvariable:=2 to 5 do if intervariable[laufvariable]>max then max:=intervariable[laufvariable]

DeddyH 19. Jan 2012 18:30

AW: Höchsten Wert von 5 Integer-Variablen bestimmen
 
So finde ich es flexibler (ungetestet):
Delphi-Quellcode:
function MaxIntValueIndex(const Values: array of integer; out MaxValue: integer): integer;
var
  i: integer;
begin
  if Length(Values) < 1 then
    raise Exception.Create('Keine Daten übergeben');
  Result := Low(Values);
  MaxValue := Values[Result];
  for i := Low(Values) + 1 to High(Values) do
    if Values[i] > MaxValue then
      begin
        Result := i;
        MaxValue := Values[Result];
      end;
end;
[edit] Wobei der Hinweis von Gammatester natürlich hier auch außer Acht gelassen wird. Wenn man alle Vorkommen ermitteln will, kommt man um ein Result-Array o.ä. wohl kaum herum. [/edit]

himitsu 19. Jan 2012 20:30

AW: Höchsten Wert von 5 Integer-Variablen bestimmen
 
Wobei dein OpenArray nicht unbedingt ein externes Variablen-Array benötigt. :angle:
Delphi-Quellcode:
ValueIndex := MaxIntValueIndex([Var1, Var2, Var3, Var4, Var5], MaxValue);
ShowMessage(Format('Die (erste) größte Variable ist Var%d, mit %d', [ValueIndex + 1, MaxValue]));

Luckie 19. Jan 2012 21:48

AW: Höchsten Wert von 5 Integer-Variablen bestimmen
 
Jungs, bremst euch selber mal. Für mich sieht das eher aus wie eine Schulaufgabe. Man sollte den Wissenstand und das Unterrichtsziel berücksichtigen. Allerdings wozu der Variablenname gebraucht wird, weiß ich auch nicht.

Delphi-Laie 19. Jan 2012 23:18

AW: Höchsten Wert von 5 Integer-Variablen bestimmen
 
Zitat:

Zitat von Luckie (Beitrag 1146786)
Jungs, bremst euch selber mal. Für mich sieht das eher aus wie eine Schulaufgabe. Man sollte den Wissenstand und das Unterrichtsziel berücksichtigen. Allerdings wozu der Variablenname gebraucht wird, weiß ich auch nicht.

Luckie, freu' Dich doch, wenn wir halbwegs zur Hochform auflaufen (ein Moderator ist doch auch immer ein wenig ein Erwachsenenpädagoge).

Der Frager kann ja das extrahieren (bzw. entnehmen), was er versteht, oder eben nachfragen. Erstaunlich ist doch sicher nicht nur für ihn, daß eine solch simple Angelegenheit auf so unterschiedliche Weise gelöst werden kann.

BoolString 19. Jan 2012 23:52

AW: Höchsten Wert von 5 Integer-Variablen bestimmen
 
Ungefragte Stimme aus dem Seitenaus:

Ich bin mir gerad enicht ganz sicher, ob der Frage die Trennung zwischen Code und compiliertem Programm verinnerlicht hat. Er hat 5 verschiedene Variablen, denen er einen Random-Wert zuweist. der Compiler macht daraus aber 5 Speicherstellen, die mit seiner Variablenbenennung überhaupt nichts zu tun hat. Diese existieren nur in seinem Code und sind für die bessere Lesbarkeit in Hochsprachen möglich.

Entweder geht man den Weg über ein Array oder aber man erzeugt sich einen Record, in dem man auch den Namen für jedes Objekt definieren kann.

Jetzt mal ohne Delphi ins blaue geschrieben:
Delphi-Quellcode:
Array[1] := Random (99);
Array[2] := Random (99);
Auch wenn hier eine Schleife mit von
Delphi-Quellcode:
For x= 0 to High (MaxArray) do
besser wäre oder man macht das ganze per Record

Delphi-Quellcode:
type
  TArray = record
    Name: string;
    Vaue: Double;
  end;

Var
  MyArray : Array of tArray;

Begin
  SetLength (MyArray, 2);
  MyArray.Name[1] := 'Gummibaum';
  MyArray.Value[1] := Random (99);

  MyArray.Name[2] := 'Gemüsebeet';
  MyArray.Value[2] := Random (99);
{...}
 
end;
oder so ähnlich...

Jan

BUG 20. Jan 2012 09:07

AW: Höchsten Wert von 5 Integer-Variablen bestimmen
 
Zitat:

Zitat von Luckie (Beitrag 1146786)
Allerdings wozu der Variablenname gebraucht wird, weiß ich auch nicht.

Versteh einer die Lehrer :mrgreen:

Zitat:

Zitat von Delphi-Laie (Beitrag 1146805)
Der Frager kann ja das extrahieren (bzw. entnehmen), was er versteht, oder eben nachfragen.

Zumal der TE schon eine funktionierende Lösung (die für eine Lehrer völlig ausreichen sein sollte) hat und nach einer eleganteren Lösung gefragt hat.
Zitat:

Zitat von devidespe (Beitrag 1146742)
Ich habe das jetzt mit mehreren If-Schleifen gelöst, die nicht nur den höchsten Wert abfragen, sondern auch in einer temporären Variable den Variablenamen speichern.


DeddyH 20. Jan 2012 09:28

AW: Höchsten Wert von 5 Integer-Variablen bestimmen
 
Zitat:

Zitat von devidespe (Beitrag 1146742)
Ich habe das jetzt mit mehreren If-Schleifen gelöst,...

Das glaube ich nicht, Tim :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz