blatt 5, aufgabe 6 (die zweite)
17.05.2010 07:57:04
"Schreibt zwei Programme, das eine Liste von Zahlen einliest und zwischen jedem aufeinander folgenden Zahlenpaar a und
b alle dazwischenliegenden Zahlen...einfügt."


wenn ich $a mit $b vergleichen soll - wie komme ich an b ran? ich habe das ganze zunächst mit einer while-schleife gelöst, in der ich $a = $liste[0] und $b = $liste[1] zugewiesen habe.

wenn ich aber eine foreach-schleife benutzen oder die aufgabe mit map lösen will, habe ich ja nur ein argument zur verfügung. wie komme ich an das nächste argument in der liste ran, damit ich es mit dem ersten vergleichen kann?
Re: blatt 5, aufgabe 6 (die zweite)
17.05.2010 08:20:58
Für die zweite Lösung soll man nicht foreach, sondern map verwenden.
Das Problem bleibt aber das gleiche: Man hat nur eine Variable.
Der Trick ist einfach: Man nimmt das aktuelle Element als "rechtes Ende" und speichere den Wert am Ende der Schleife in einer Variable, die man dann im nächsten Durchlauf als "linkes Ende" verwenden kann.

Bei foreach also ganz grob so:

foreach $rechts (@liste)
{
#....
print "von $links nach $rechts\n";
#....
$links = $rechts;
}

Grüße
Tobias Nopper
Lehrstuhl für Betriebssysteme