ΘΕΜΑ Δ
Ένα κλιμάκιο της οργάνωσης «Γιατροί της Ελλάδας» επισκέπτεται τους καλοκαιρινούς μήνες 15 απομονωμένα νησιά προσφέροντας ιατρικές υπηρεσίες. Το πρόγραμμα επισκέψεων ξεκινά από το πρώτο νησί (νησί 1) και ολοκληρώνεται όταν το κλιμάκιο επισκεφτεί, τουλάχιστον μία φορά, και τα 15 νησιά ενώ, αν χρειαστεί, μπορεί να επισκεφτεί κάποια νησιά περισσότερες από μία φορές. Να κατασκευάσετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:
Δ1. Να περιλαμβάνει κατάλληλο τμήμα δηλώσεων. Μονάδες 2
Δ2.
α. Να διαβάζει τα ονόματα των νησιών και να τα καταχωρίζει σε πίνακα ΟΝ[15]. (μονάδα 1)
β. Να διαβάζει για κάθε ζευγάρι νησιών τη μεταξύ τους απόσταση και να καταχωρίζει τις τιμές σε πίνακα ΑΠ[15,15]. Οι τιμές να καταχωρίζονται μόνο στις θέσεις του πίνακα που βρίσκονται επάνω από την κύρια διαγώνιό του. Για παράδειγμα, η απόσταση του νησιού 1 από το νησί 8 να καταχωρίζεται μόνο στο ΑΠ[1,8] (και όχι στο ΑΠ[8,1]), η απόσταση του νησιού 6 από το νησί 2 μόνο στο ΑΠ[2,6] (και όχι στο ΑΠ[6,2]) κ.ο.κ.(μονάδες 4)
Μονάδες 5
Δ3. Υλοποιώντας κατάλληλη επαναληπτική διαδικασία, για καθεμιά από τις μετακινήσεις του κλιμακίου:
α. να διαβάζει τον αριθμό του νησιού (1 έως 15) προς το οποίο θα γίνει η μετακίνηση, (μονάδα 1)
β. να υπολογίζει το πλήθος των επισκέψεων που έγιναν στο νησί αυτό και να το αποθηκεύει στην αντίστοιχη θέση μονοδιάστατου πίνακα ΕΠ[15] (μονάδες 3) και
γ. να τερματίζει την επαναληπτική διαδικασία μόλις ολοκληρωθεί το πρόγραμμα επισκέψεων. (μονάδες 2)
Μονάδες 6
Δ4. Μετά την ολοκλήρωση του προγράμματος επισκέψεων να εμφανίζει:
α. τα ονόματα των νησιών και το πλήθος των επισκέψεων που δέχθηκε το καθένα, (μονάδες 3)
β. τη συνολική απόσταση που διάνυσε το κλιμάκιο. (μονάδες 4)
Μονάδες 7
(Να θεωρήσετε ότι:
– δεν απαιτείται έλεγχος εγκυρότητας για τις τιμές εισόδου
– οι αποστάσεις που δίνονται είναι όλες ακέραιες).

ΛΥΣΗ

ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Δ_2018_ΕΠΑΝ
!Δ1
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[15] 
  ΑΚΕΡΑΙΕΣ: Ι, J, ΑΠ[15, 15], ΕΠ[15], ΑΠΟΣΤΑΣΗ, ΝΗΣΙ, ΝΗΣΙ1, ΝΗΣΙ2, ΕΠΙΣΚΕΨΕΙΣ[15] 
  ΛΟΓΙΚΕΣ: ΟΛΟΚΛΗΡΩΘΗΚΕ
ΑΡΧΗ
!Δ2α
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 15
    ΔΙΑΒΑΣΕ ΟΝ[Ι] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Δ2β
! Α ΤΡΟΠΟΣ (ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΩΝ ΣΕ ΑΝΩ ΤΡΙΓΩΝΙΚΟ)
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 15
    ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 15
      ΑΝ Ι < J ΤΟΤΕ                     ! ΑΝΩ ΤΡΙΓΩΝΙΚΟ, ΑΝΤΙΣΤΡΟΦΑ ΓΙΑ ΤΟΝ ΚΑΤΩ
                       ! ΓΡΑΨΕ “ΑΠΟΣΤΑΣΗ ΝΗΣΙΟΥ:”, ΟΝ[Ι], “ΑΠΟ ΤΟ ΝΗΣΙ: ”, ΟΝ[J]
        ΔΙΑΒΑΣΕ ΑΠ[Ι, J] 
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! Β ΤΡΟΠΟΣ (ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΩΝ ΣΕ ΑΝΩ ΤΡΙΓΩΝΙΚΟ)
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 14
    ΓΙΑ J ΑΠΟ Ι + 1 ΜΕΧΡΙ 15
                       ! ΓΡΑΨΕ “ΑΠΟΣΤΑΣΗ ΝΗΣΙΟΥ:”, ΟΝ[Ι], “ΑΠΟ ΤΟ ΝΗΣΙ: ”, ΟΝ[J]
      ΔΙΑΒΑΣΕ ΑΠ[Ι, J] 
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

!Δ3
  ΓΙΑ ΝΗΣΙ ΑΠΟ 1 ΜΕΧΡΙ 15
    ΕΠ[ΝΗΣΙ] <- 0                                      ! ΕΠΙΣΚΕΨΕΙΣ ΣΕ ΚΑΘΕ ΝΗΣΙ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΑΠΟΣΤΑΣΗ <- 0                                                            ! Δ4β
  ΝΗΣΙ1 <- 1                                                               ! Δ4β
  ΕΠ[ΝΗΣΙ1] <- 1                                                           ! Δ4β
  ΟΛΟΚΛΗΡΩΘΗΚΕ <- ΨΕΥΔΗΣ
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΔΙΑΒΑΣΕ ΝΗΣΙ2
    ΑΝ ΝΗΣΙ2 <> ΝΗΣΙ1 ΤΟΤΕ
      ΑΝ ΝΗΣΙ2 > ΝΗΣΙ1 ΤΟΤΕ                                                ! Δ4β
        ΑΠΟΣΤΑΣΗ <- ΑΠΟΣΤΑΣΗ + ΑΠ[ ΝΗΣΙ1, ΝΗΣΙ2] 
      ΑΛΛΙΩΣ
        ΑΠΟΣΤΑΣΗ <- ΑΠΟΣΤΑΣΗ + ΑΠ[ ΝΗΣΙ2, ΝΗΣΙ1] 
      ΤΕΛΟΣ_ΑΝ
      ΕΠ[ΝΗΣΙ2] <- ΕΠ[ΝΗΣΙ2] + 1
      ΝΗΣΙ1 <- ΝΗΣΙ2                                                       ! Δ4β
      ΟΛΟΚΛΗΡΩΘΗΚΕ <- ΠΗΓΑΝ_ΠΑΝΤΟΥ(ΕΠ)
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ ΟΛΟΚΛΗΡΩΘΗΚΕ = ΑΛΗΘΗΣ

!Δ4
  ΓΙΑ ΝΗΣΙ ΑΠΟ 1 ΜΕΧΡΙ 15
    ΓΡΑΨΕ 'ΝΗΣΙ:', ΟΝ[ΝΗΣΙ] 
    ΓΡΑΨΕ 'ΕΠΙΣΚΕΨΕΙΣ ΤΩΝ ΓΙΑΤΡΩΝ:', ΕΠ[ΝΗΣΙ] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'ΣΥΝΟΛΙΚΗ ΑΠΟΣΤΑΣΗ ΓΙΑΤΡΩΝ ΧΣ:', ΑΠΟΣΤΑΣΗ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
! ΤΟ ΓΙΝΟΜΕΝΟ ΜΗΔΕΝΙΖΕΤΑΙ ΑΝ ΔΕΝ ΥΠΑΡΧΟΥΝ ΕΠΙΣΚΕΨΕΙΣ ΣΕ ΚΑΠΟΙΟ ΝΗΣΙ (ΕΠ[ΝΗΣΙ] = 0 )

! Α ΤΡΟΠΟΣ
ΣΥΝΑΡΤΗΣΗ ΠΗΓΑΝ_ΠΑΝΤΟΥ(ΕΠΙΣΚΕΨΕΙΣ): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΕΠΙΣΚΕΨΕΙΣ[15], ΓΙΝ, Ι
ΑΡΧΗ
  ΓΙΝ <- 1
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 15
    ΓΙΝ <- ΓΙΝ* ΕΠΙΣΚΕΨΕΙΣ[Ι] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ ΓΙΝ = 0 ΤΟΤΕ
    ΠΗΓΑΝ_ΠΑΝΤΟΥ <- ΨΕΥΔΗΣ
  ΑΛΛΙΩΣ
    ΠΗΓΑΝ_ΠΑΝΤΟΥ <- ΑΛΗΘΗΣ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

!Β ΤΡΟΠΟΣ ! ΨΑΧΝΩ ΑΝ ΥΠΑΡΧΕΙ ΜΗΔΕΝ ΣΤΟΝ ΠΙΝΑΚΑ ΕΠΙΣΚΕΨΕΙΣ
ΣΥΝΑΡΤΗΣΗ ΠΗΓΑΝ_ΠΑΝΤΟΥ(ΕΠΙΣΚΕΨΕΙΣ): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΕΠΙΣΚΕΨΕΙΣ[15], ΓΙΝ, Ι
  ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ
ΑΡΧΗ
  ΒΡΕΘΗΚΕ <- ΨΕΥΔΗΣ
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 15
    ΑΝ ΕΠΙΣΚΕΨΕΙΣ[Ι] = 0 ΤΟΤΕ
      ΒΡΕΘΗΚΕ <- ΑΛΗΘΗΣ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ ΒΡΕΘΗΚΕ = ΑΛΗΘΗΣ ΤΟΤΕ
    ΠΗΓΑΝ_ΠΑΝΤΟΥ <- ΨΕΥΔΗΣ
  ΑΛΛΙΩΣ
    ΠΗΓΑΝ_ΠΑΝΤΟΥ <- ΑΛΗΘΗΣ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Share This