Επιλογή Σελίδας

Εκφώνηση:

Η Ακρόπολη των Αθηνών αποτελεί, αν όχι το σημαντικότερο, ένα από τα σημαντικότερα δημιουργήματα της ανθρωπότητας. Η κατασκευή της Ακρόπολης από τη σύλληψη, τη σχεδίαση, τη μελέτη, το κτίσιμο και τη δημιουργία των αιώνιων γλυπτών της, αποκαλύπτουν το μεγαλείο του Ελληνικού πολιτισμού. Ένα από τα πάρα πολλά προβλήματα που είχαν να αντιμετωπίσουν οι Αρχαίοι Έλληνες ήταν η ανύψωση των μαρμάρων στον ιερό βράχο. Για να το επιτύχουν χρησιμοποίησαν ένα σύστημα με τροχαλίες, έτσι ώστε όταν κατέρχονταν μια άδεια άμαξα, να χρησιμοποιείται σαν αντίβαρο για την ανερχόμενη. Για την καλύτερη επίτευξη του σκοπού αυτού, ήταν προτιμότερο οι ελαφρύτερες άμαξες να ανέλθουν πρώτες. Ωστόσο, κατά η δημιουργία των γλυπτών της μετώπης του Παρθενώνα, μερικά ξεχωριστά κομμάτια πεντελικού μαρμάρου έπρεπε να μεταφερθούν άμεσα και σε συγκεκριμένη σειρά. Τα κομμάτια αυτά ήταν μικρά και πρακτικά μικρού βάρους (ενδεικτικό βάρος 1).

Πρόβλημα:

Να αναπτύξετε πρόγραμμα σε Γλώσσα, το οποίο αφού καταχωρίσει σε έναν πίνακα 100 θέσεων τα βάρη των μαρμάρων που πρέπει να μεταφερθούν με βάσει τη σειρά εξόρυξης, θα υπολογίσει και θα εμφανίζει τη σειρά μεταφοράς τους από το ελαφρύτερο προς το βαρύτερο. Τα βάρη με την ενδεικτική τιμή 1, αντιστοιχούν σε αυτά τα ξεχωριστά κομμάτια μαρμάρου, τα οποία πρέπει να μεταφερθούν με τη δεδομένη σειρά εμφάνισης (να εξαιρεθούν δηλαδή της ταξινόμησης). ΕΠΥ, 18ος Π.Δ.Π. (2006) Α’ Φάση

Λύση:

ΠΡΟΓΡΑΜΜΑ ΑΣΚ1_ΠΑΡ_Β_ΠΙΝ_ΜΑΡΜΑΡΑ_ΠΑΡΘΕΝΩΝΑ
ΣΤΑΘΕΡΕΣ
  n=10   ! πλήθος μαρμάρων
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ:  i, j, k, queue[n], monades[n], temp
  ΠΡΑΓΜΑΤΙΚΕΣ: weight[n], weight_init[n],temp2
ΑΡΧΗ

  ΓΙΑ i  ΑΠΟ 1 ΜΕΧΡΙ  n
    ΔΙΑΒΑΣΕ weight[i]
    weight_init[i] <-- weight[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ i  ΑΠΟ 1 ΜΕΧΡΙ n
    monades[i] <-- 0
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


  k <-- 0
  ΓΙΑ i  ΑΠΟ 1 ΜΕΧΡΙ  n
    ΔΙΑΒΑΣΕ queue[i]
    ΑΝ queue[i]=1 ΤΟΤΕ
      k <-- k+1
      monades[k] <-- i
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ i  ΑΠΟ 2 ΜΕΧΡΙ  n
    ΓΙΑ j  ΑΠΟ n ΜΕΧΡΙ  i ΜΕ ΒΗΜΑ -1
      ΑΝ queue[j]>queue[j-1] ΤΟΤΕ
        temp <-- queue[j]
        queue[j] <-- queue[j-1]
        queue[j-1] <-- temp

        temp2 <-- weight[j]
        weight[j] <-- weight[j-1]
        weight[j-1] <-- temp2
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  j <-- 1
  k <-- 1
  ΓΙΑ i  ΑΠΟ 1 ΜΕΧΡΙ  n
    ΑΝ i = monades[j] ΤΟΤΕ
      ΓΡΑΨΕ weight_init[i]
      j <-- j+1
    ΑΛΛΙΩΣ
      ΓΡΑΨΕ weight[k]
      k <-- k+1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ






Share This