Powershell Arrays vergleichen und Größten Wert ermitteln

iPwn5

Cadet 3rd Year
Registriert
Aug. 2013
Beiträge
53
Hi!
Ich möchte ein Powershell "Programm" schreiben, dass die einzelnen Werte in einem Array miteinander vergleicht und am Ende den höchsten Wert ausgibt, mit dem dazugehörigen namen aus einem anderen Array.
Mir fehlt nur leider der richtige Ansatz, ich vermute mal, eine ForEach Schleife muss mit rein, nur wie ich das hier bewerkstellige ist mir nicht ganz klar.

Beispiel:
$arrayFirmen = "ExxonMobil", "Royal Dutch Shell", "BP", "Chevron, Total", "ConocoPhillips", "Eni"
$arrayUmsatz = 477.4, 448.4, 365.7, 273.0, 180.0, 246.2, 108.9

Der Wert von Index 0 entspricht dem Namen der Firma mit dem Index 0 und das gleiche für Index 1 etc. .
Am Ende soll ich dann ExxonMobil mit 477,4 Mrd angezeigt bekommen, nachdem alle Werte verglichen wurden.

Kann mir da jemand auf die Sprünge helfen?
 
$arrayFirmen = "ExxonMobil", "Royal Dutch Shell", "BP", "Chevron, Total", "ConocoPhillips", "Eni"
$arrayUmsatz = 477.4, 448.4, 365.7, 273.0, 180.0, 246.2, 108.9

$test = $arrayUmsatz | Measure-Object -Maximum
$index =[array]::IndexOf($arrayUmsatz,$test.Maximum)
write-host "$($arrayFirmen[$index]) mit einen Umsatz von $($test.Maximum)"
 
Danke, das ist natürlich noch eine wesentlich bessere Lösung :)
Nur die Vorgabe ist, dass ich das durch Vergleiche herausbekommen muss bzw. eventuell mit Schleife.
Ich experimentiere gerade etwas herum und bekomme bis jetzt nur alle größeren Werte angezeigt, mir fehlt noch ein Denkansatz (das Array mit den Namen kommt noch dazu)

cls
$arrayFirmen = "ExxonMobil", "Royal Dutch Shell", "BP", "Chevron, Total", "ConocoPhillips", "Eni"
$arrayUmsatz = 477.4, 448.4, 365.7, 273.0, 180.0, 246.2, 108.9
for ([int] $i = 0; $i -lt $arrayUmsatz.length - 1; $i++)
{
for ([int] $j = $i + 1; $j -lt $arrayUmsatz.length; $j++)
{
if ($arrayUmsatz[$i] -gt $arrayUmsatz[$j])
{
$arrayUmsatz[$i]
}
else
{
$arrayUmsatz[$j]
}
}
}
 
Zuletzt bearbeitet:
$arrayUmsatz | Measure-Object -Maximum

Ich würde das aber wahrscheinlich eher mit einer Hashtable statt mit 2 Arrays machen.

Edit: Ups, zu lange gewartet mit dem Abschicken :)
 
so?

$arrayFirmen = "ExxonMobil", "Royal Dutch Shell", "BP", "Chevron, Total", "ConocoPhillips", "Eni"
$arrayUmsatz = 477.4, 448.4, 365.7, 273.0, 180.0, 246.2, 108.9

$max = 0
$index = 0
for ([int] $i = 0; $i -lt $arrayUmsatz.length - 1; $i++)
{
if($max -lt $arrayUmsatz[$i])
{
$max = $arrayUmsatz[$i]
$index = $i
}

}
$max
$index
 
Zuletzt bearbeitet:
Ansonsten kannst du auch noch die "switch -wildecard" funktion nutzen
 
Danke, das ist genau das wonach ich gesucht habe!
Nur statt "$index" am Ende muss es "$arrayFirmen[$index] " heißen ;)
 
iPwn5 schrieb:
Danke, das ist genau das wonach ich gesucht habe!
Nur statt "$index" am Ende muss es "$arrayFirmen[$index] " heißen ;)

Dein ernst? Es ist mir wohl zu 100% bewusst das es $arrayFirmen[$index] heißen muss. Wenn wir hier schon deine Hausaufgaben machen, dann hat man nicht unbedingt Lust alles komplett auszuschreiben. Das Danke hätte gereicht.

BITTE!
 
Das ist keine Hausaufgabe, das ist eine Aufgabe die mal in einer Übung drankam, mit der ich nur meine Schwierigkeiten hatte.
Dann schreib es doch hin?
Leider funktioniert das ganze nichtmehr, wenn man den größten Wert und den dazugehörigen Namen zB. an die letzte Stelle schreibt.
d.h.
$arrayFirmen = "Royal Dutch Shell", "BP", "Chevron, Total", "ConocoPhillips", "Eni", "ExxonMobil"
$arrayUmsatz = 448.4, 365.7, 273.0, 180.0, 246.2, 108.9, 477.4
Ausgabe: 448,4 Royal Dutch Shell
Ich hab ja jetzt den Ansatz, ich denke den Rest bekomme ich hin.
Danke für die Hilfe soweit!
 
Zuletzt bearbeitet:
Zurück
Oben