Weißt Du was Hashes sind??
Hashes sind Datenstrukturen, die aus Schlüssel - Wert bestehen... Ein Schlüssel ist eindeutig (wie der Primary Key einer Datenbank). Wenn man einen Schlüssel hat, kann man also eindeutig einen Wert bestimmen (der zum Schlüssel gehört).
In Perl sind Hashes durch das % gekennzeichnet (bei der Deklaration). Die Idee bei meinem Lösungsansatz (ist keine komplette Lösung) ist, dass ich zu dem Wert, der schon zu einem Schlüssel besteht, den Quotienten addiere... Bei dem Lösungsansatz musst Du natürlich noch den Hash ausgeben, um Deine Summen der Quotienten angezeigt zu bekommen.
Nehmen wir mal folgende Einträge an:
ID Quotient
1 4
2 3
2 5
3 7
3 3
4 9
4 2
4 1
4 7
Dann passiert folgendes...
1.) Der Schlüssel 1 existiert noch nicht, also wird zu 0 (perl nimmt an, dass die 0 gemeint ist) 4 addiert
2.) Der Schlüssel 2 existiert noch nicht, also wird zu 0 3 addiert
3.) Der Schlüssel 2 existiert schon, also wird zu dessen Wert (3) die 5 addiert --> neuer Wert = 8
4.) Der Schlüssel 3 existiert noch nicht, also wird zu 0 7 addiert
5.) Der Schlüssel 3 existiert schon, also wird zu dessen Wert (7) die 3 addiert --> neuer Wert = 10
6.) Der Schlüssel 4 existiert noch nicht, also wird zu 0 9 addiert
7.) Der Schlüssel 4 existiert schon, also wird zu dessen Wert (9) die 2 addiert --> neuer Wert =11
8.) Der Schlüssel 4 existiert schon, also wird zu dessen Wert (11) die 1 addiert --> neuer Wert = 12
9.) Der Schlüssel 4 existiert schon, also wird zu dessen Wert (12) die 7 addiert --> neuer Wert = 19
(mit use warnings gibt es allerdings eine Warnung [_kein_ Fehler] wenn der Schlüssel/Wert noch nicht existiert)
Wenn Du nach der for-Schleife noch das hier gemacht hättest:
foreach(sort(keys(%hash))){
print "Id: ",$_," -> ",$hash{$id},"\n";
}
Dann hättest Du die aufsummierten Quotienten bekommen...
Um sich solch eine Datenstruktur anzuschauen, ist
Data::Dumper ganz nützlich...
use Data::Dumper;
print Dumper(\%hash);
Aber der Ansatz von Taulmarill ist eindeutig besser, da er weniger Programmierung verlangt, schneller ist...
Welche Fehlermeldung bekommst Du denn?\n\n
<!--EDIT|renee|1106748129-->