ΘΕΜΑ Γ

Ένα πλοίο μεταφέρει δέματα από λιμάνια της Ελλάδας στην Ιταλία. Σε κάθε λιμάνι που καταπλέει για φόρτωση δηλώνει το βάρος που έχει ήδη φορτωμένο , καθώς και το μέγιστο βάρος που μπορεί να μεταφέρει (όριο βάρους). Η διαδικασία φόρτωσης ελέγχεται από αρμόδιο υπάλληλο.

Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο να υποστηρίζει τη διαδικασία φόρτωσης σε ένα λιμάνι. Το πρόγραμμα:

Γ1. Να περιλαμβάνει κατάλληλο τμήμα δηλώσεων.
Μονάδες 2

Γ2. Να διαβάζει:

  • το όριο βάρους του πλοίου (μονάδα 1),
  • το βάρος δεμάτων που έχει ήδη φορτωμένα, ελέγχοντας ότι η τιμή του είναι μικρότερη από το όριο βάρους, διαφορετικά να το ξαναζητά (μονάδες 2).

Μονάδες 3

Γ3. Για τη διαδικασία φόρτωσης:
α)

  • να εμφανίζει το βάρος που μπορεί ακόμα να φορτωθεί στο πλοίο,
  • να εμφανίζει το μήνυμα: «ΝΑ ΦΟΡΤΩΘΕΙ ΔΕΜΑ; (ΝΑΙ/ΟΧΙ)»,
  • να διαβάζει την απάντηση του αρμόδιου υπαλλήλου (χωρίς έλεγχο εγκυρότητας).

(μονάδες 3)

β) Αν η απάντηση είναι «ΝΑΙ»

  • να διαβάζει το βάρος του δέματος, να ελέγχει ότι δεν παραβιάζεται το όριο βάρους και να επιτρέπει τη φόρτωσή του, διαφορετικά να εμφανίζει το μήνυμα «ΤΟ ΔΕΜΑ ΔΕΝ ΧΩΡΑΕΙ», (μονάδες 2)
  • εφόσον επιτραπεί η φόρτωσή του, να υπολογίζει και να εμφανίζει το κόστος μεταφοράς του κλιμακωτά, με βάση το βάρος του, ως εξής:
    • τα πρώτα 500 κιλά χρεώνονται 0,5 € / κιλό,
    • τα επόμενα 1000 κιλά χρεώνονται 0,3 € / κιλό,
    • τα υπόλοιπα χρεώνονται 0,1 € / κιλό. (μονάδες 4)

Η παραπάνω διαδικασία φόρτωσης επαναλαμβάνεται μέχρι να δοθεί ως απάντηση από τον αρμόδιο υπάλληλο η λέξη «ΟΧΙ». (μονάδες 2)
Μονάδες 11

Γ4. Μετά το τέλος φόρτωσης να εμφανίζει:

  • πόσα από τα δέματα που ελέγχθηκαν δεν φορτώθηκαν λόγω υπέρβασης του ορίου βάρους (μονάδα 1),
  • το συνολικό ποσό που εισπράχθηκε (μονάδα 1),
  • το πλήθος των δεμάτων που φορτώθηκαν και είχαν βάρος που ξεπερνούσε τα 1000 κιλά (μονάδες 2).

Μονάδες 4

ΛΥΣΗ

ΠΡΟΓΡΑΜΜΑ Θέμα_Γ
!Γ1 (2Μ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: χ, πλ, πλμαξ
  ΠΡΑΓΜΑΤΙΚΕΣ: βκ, οκ, Μβ, Μο, Σβ, Σο, μαξ, μβκ
ΑΡΧΗ
!Γ2 (4Μ)
!2μ
  ΓΡΑΨΕ 'Δώσε το μέγιστο συνολικό βάρος'
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΔΙΑΒΑΣΕ Μβ
  ΜΕΧΡΙΣ_ΟΤΟΥ Μβ >= 5000
!2μ
  ΓΡΑΨΕ 'Δώσε το μέγιστο συνολικό όγκο'
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΔΙΑΒΑΣΕ Μο
  ΜΕΧΡΙΣ_ΟΤΟΥ Μο >= 300
! Γ3 (6Μ)
!1μ
  πλ <- 0
  Σβ <- 0
!1μ
  μαξ <- -1
!Γ3α (2Μ)
  ΓΡΑΨΕ 'Δώσε βάρος κιβωτίου'
  ΔΙΑΒΑΣΕ βκ
  ΓΡΑΨΕ 'Δώσε όγκο κιβωτίου'
  ΔΙΑΒΑΣΕ οκ
!Γ3β (2Μ)
!1μ
  ΟΣΟ βκ <= Μβ ΚΑΙ οκ <= Μο ΕΠΑΝΑΛΑΒΕ
!1μ
    Μβ <- Μβ - βκ
    Μο <- Μο - οκ
!Γ4α
!1μ
    Σβ <- Σβ + βκ
    πλ <- πλ + 1
!2μ
    ΑΝ βκ > μαξ ΤΟΤΕ
      μαξ <- βκ
      πλμαξ <- 1
    ΑΛΛΙΩΣ_ΑΝ βκ = μαξ ΤΟΤΕ
      πλμαξ <- πλμαξ + 1
    ΤΕΛΟΣ_ΑΝ
!1μ
    ΓΡΑΨΕ 'Δώσε βάρος κιβωτίου'
    ΔΙΑΒΑΣΕ βκ
    ΓΡΑΨΕ 'Δώσε όγκο κιβωτίου'
    ΔΙΑΒΑΣΕ οκ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!1μ
  μβκ <- Σβ/πλ
!1μ
  ΓΡΑΨΕ 'το συνολικό πλήθος των κιβωτίων είναι ', πλ
  ΓΡΑΨΕ 'το μέσο βάρος των κιβωτίων είναι ', μβκ
!1μ
  ΓΡΑΨΕ 'το μέγιστο βάρος κιβωτίου είναι ', μαξ
  ΓΡΑΨΕ 'το πλήθος κιβωτίων με το ίδιο μέγιστο βάρος είναι ', πλμαξ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ</code class="language-javascript">