Die Webseiten der Fachschaft Informatik am ERG Saalfeld


Lösung einer diophantische Gleichung (Steinkohlenaufgabe)

Durch 2 LKW sollen 61 Tonnen Steinkohle abtransportiert werden. Der erste LKW hat eine Ladefähigkeit von 4 Tonnen und der zweite LKW kann maximal mit 3 Tonnen beladen werden. Beide LKW sollen möglichst nur voll beladen und mit der gleichen Geschwindigkeit fahren. Eine rein mathematische Lösung ist hier angegeben.
 

Programm

#!/usr/bin/perl
use strict;
use warnings;

foreach my $anz1 (0 .. 20 ) {
  foreach my $anz2 (0 .. 20 ) {   # 21 * 3 ist schon mehr als 61
    # es gilt anz1 * 4 t + anz2 * 3 t = 61 t
    if ($anz1 * 4 + $anz2 * 3 == 61) {
      print "4-Tonner: $anz1 \t 3-Tonner: $anz2 \n";
    }
  }
}

__END__

 

Der Aufruf sah bei mir so aus:

 

Aufgaben

  1. Bringen Sie das Programm zum Laufen.
  2. Zeichnen Sie zu diesem Programm ein Struktogramm.
  3. Ändern Sie das Programm so, dass nur die beiden Anzahlen ausgegeben werden, sodass
    • die Gesamtanzahl der Fahrten minimal ist,
    • bei gleichzeitigem Einsatz die Gesamtzeit minimal ist,
    • der zweite LKW möglichst wenig eingesetzt wird.
  4. Ändern Sie das Programm zusätzlich so ab, dass die Masse der Steinkohle als Parameter übergeben werden kann.
  5. Ändern Sie das Programm zusätzlich so ab, dass auch die Tragfähigkeit der beiden LKW als Parameter übergeben werden kann.

 

zurück


© ERG Saalfeld   -   Hans-Dietrich Kirmse   10.01.2015