Höchsten Wert von 5 Integer-Variablen bestimmen
Hallo,
ich habe 5 unterschiedliche Integer-Variablen mit unterschiedlichen Inhalten, und muss herausfinden, welche Variable den höchsten Wert beinhaltet. Ohne jetzt 5 verschachtelte If-Abfragen zu schreiben: gibt es hier eine praktikablere Lösung? Beispiel:
Delphi-Quellcode:
var Var1, Var2, Var3, Var4, Var5 : Integer;
HighestValue : Integer; begin Randomize; Var1:=Random(99); Var2:=Random(99); Var3:=Random(99); Var4:=Random(99); Var5:=Random(99); HighestValue:=Var1; if Var2 > HighestValue then HighestValue:=Var2; if Var3 > HighestValue then HighestValue:=Var3; if Var4 > HighestValue then HighestValue:=Var4; if Var5 > HighestValue then HighestValue:=Var5; ShowMessage('Die höchste Variable hat den Wert '+IntToStr(HighestValue)); end; |
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Math.MaxIntValue
[edit] Achso, Du willst ja nicht den Wert, sondern die Variable, welche diesen Wert enthält, richtig? [/edit] [edit2] Nö, laut Code wohl doch nicht. Ich bin verwirrt :gruebel: [/edit2] |
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Wenn du keine einzelnen Variablen, sondern ein Array hättest, dann würde ein IF ausreichen.
Und wenn du wirklich die Wariable und nicht nur den Wert wissen willst, führt kein Weg darum. (FOR+IF oder merhere IFs) |
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Wie soll der Fall behandelt werden, wenn zwei (oder mehr) Variablen den höchsten Wert enthalten? Dann gibt es nicht die Variable, welche ...
|
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Warten wir erst einmal ab, ob der TE sich noch einmal meldet. Mir ist (wie man oben merkt) noch nicht ganz klar, was genau denn ermittelt werden soll.
|
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Er meint auch definitv den Wert und nicht die Variable, schaut mal auf seine Ausgabe ;)
|
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Dann schau nochmal auf meine beiden Edits in #2. Beschreibung und Code widersprechen sich ja in der Hinsicht.
|
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Hi,
danke für die Antworten. Ich meine den Wert und die dazugehörige Variable. Im ShowMessage-Text muss ich die Variable benennen können. |
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Alle Variablen nacheinander prüfen (IF), wenn der Wert größer ist, dann den größeren Wert und die Variable merken. (ist natürlich in einer Schleife etwas schöner)
Oder den größten Wert bestimmen und danach die/eine Variable mit diesem Wert raussuchen. |
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Delphi-Quellcode:
somit erhältst du den größten Wert am elegantesten mMn!uses (...), math; (...) ShowMessage(IntToStr(max(var1, max(var2, max(var3, max(var4, var5)))))); |
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. |
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; |
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Zitat:
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] |
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
So finde ich es flexibler (ungetestet):
Delphi-Quellcode:
[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]
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; |
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])); |
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.
|
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Zitat:
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. |
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:
Auch wenn hier eine Schleife mit von
Array[1] := Random (99);
Array[2] := Random (99);
Delphi-Quellcode:
besser wäre oder man macht das ganze per Record
For x= 0 to High (MaxArray) do
Delphi-Quellcode:
oder so ähnlich...
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; Jan |
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Zitat:
Zitat:
Zitat:
|
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Zitat:
|
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Irgendwann wird niemand mehr assembler,c + ++ delphi, java ........ kennen aber die IF-Schleife wird es immer noch geben.
Gruß K-H |
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Ich glaube die Diskussion läuft hier etwas aus dem Ruder.
Das Beispiel im ersten Post war selbstverständlich eine vereinfachte Variante des wirklichen Codes. Und wie schon geschrieben, wurde das Problem bereits gelöst. Mit If-Schleifen. |
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
Es gibt keine If-Schleifen :!:
|
AW: Höchsten Wert von 5 Integer-Variablen bestimmen
if-Schleife :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr. |
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