if ... then vereinfachen
folgender code:
Code:
wie kann ich das einfacher schreiben?
var
gewicht: array [1..4] of single; // gewichtungen ... if (gewicht[1] > gewicht[2]) and (gewicht[1] > gewicht[3]) and (gewicht[1] > gewicht[4]) then Spieler[Nummer].RichtungNeu := HOCH; weil in
Code:
ist irgendwie ein logigfehler von mir drin
if gewicht[1] > (gewicht[2] or gewicht[3] or gewicht[4]) then...
mfg stefan |
Re: if ... then vereinfachen
Moin!
Dein Ansatz geht leider nicht - ich kann mir da sonst auch nur eine Schleife vorstellen:
Delphi-Quellcode:
MfG
Var
i : Integer; IsOk : Boolean; Begin IsOk := True; for i := 2 To 4 Do If Not ( Gewicht[1] > Gewicht[i] ) Then Begin IsOk := False; Break; End; If ( IsOk ) Then Spieler[Nummer].RichtungNeu := HOCH; Muetze1 |
Re: if ... then vereinfachen
Wo bei, wenn der erste ausdruck schon False ergibt Delphi den Rest gar nicht mehr prüft (je nach Compiler Einstellungen). Ums Tippen wird man aber nicht rumkommen.
|
Re: if ... then vereinfachen
Zitat:
|
Re: if ... then vereinfachen
also ich will überprüfen, ob gewicht[1] größer als gewicht[2],..[3],..[4] ist
oder gibt es eine funktion, um aus mehreren variablen die größte herauszufinden? |
Re: if ... then vereinfachen
Scvhreib schnell einen Sortieraklgo (Bubblesort reicht für so was kleines) und du weißt was größer ist. ;)
|
Re: if ... then vereinfachen
Die Unit "Math" einbinden, und dein Array muss ein Array[a..b] of double sein. Dann geht:
Delphi-Quellcode:
Wenn also gewicht[1] der größte Wert im Array ist (und auch wenn weitere Werte =gewicht[1], aber auch die größten sind), so wird der Ausdruck true.
if gewicht[1] >= MaxValue(gewicht) then ...
Für Integer-Arrays hab ich sowas nicht gefunden, aber man kann sich ja relativ leicht ein "MaxValue" für beliebige Typen selber schnell schreiben. Ist nen 3-4-Zeiler. gruss, dizzy |
Re: if ... then vereinfachen
Wieso übernimmst Du nicht einfach den Vorschlag von 'Muetze1' ?
Das ist doch genau das, was Du brauchst ! Die Idee mit MaxValue ist vom Grundsatz her zwar sehr gut, allerdings erwartet diese Funktion eine array .. of double. Deine Gewichte hast Du als 'single' definiert. |
Re: if ... then vereinfachen
Delphi-Quellcode:
var
temp: single; i: integer; gewicht: array [1..4] of single; begin // grösstes Element zwischenspeichern temp := 0; for i := 1 to 4 do if gewicht[i] > temp then temp := gewicht[i]; // und nur noch damit vergleichen: if gewicht[1] > temp then begin // blafasel end; end; |
Re: if ... then vereinfachen
@Phoenix
Code:
denn der 1. Wert braucht ja nicht ausgewertet zu werden.
[b]for[/b] i := [color=red][b]2[/b][/color] [b]to[/b] 4 [b]do[/b]
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 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