e-ΜΑΘΗΜΑΤΑ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό περιβάλλον

Λύσεις ασκήσεων Πανελλαδικών Εξετάσεων


!ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ
!ΗΜΕΡΗΣΙΩΝ KAI ΕΣΠΕΡΙΝΩΝ ΓΕΝΙΚΩΝ ΛΥΚΕΙΩΝ
!ΔΕΥΤΕΡΑ 12 ΣΕΠΤΕΜΒΡΙΟΥ 2022

!ΘΕΜΑ Γ
!Ο Όμιλος Φυλής Ελληνικού Ποιμενικού (ΟΦΕΠ) ασχολείται με τη διάσωση και διατήρηση
!της αυτόχθονης φυλής του ελληνικού ποιμενικού σκύλου. Για τον σκοπό αυτό,
!διαθέτει στα μέλη του κουτάβια προς υιοθεσία. Κάθε φορά που κάποιο μέλος
!ενδιαφέρεται να υιοθετήσει ένα κουτάβι, εφόσον υπάρχει κάποιο διαθέσιμο,
!του δίνεται, αλλιώς παραμένει σε σειρά προτεραιότητας μέχρις ότου μπορέσει να
!εξυπηρετηθεί. Ομοίως, κάθε φορά που παρουσιάζεται κάποιο κουτάβι για υιοθεσία,
!εφόσον υπάρχει μέλος σε αναμονή, του δίνεται, διαφορετικά το κουτάβι παραμένει
!σε σειρά προτεραιότητας μέχρι να βρεθεί ιδιοκτήτης. Για τη διαχείριση των δεδομένων
!του προβλήματος, χρησιμοποιούνται δύο ουρές, Μ και Κ, για τα Μέλη και τα Κουτάβια
! αντίστοιχα, που υλοποιούνται με μονοδιάστατους πίνακες χαρακτήρων 100 θέσεων.
!Η διαχείριση των ουρών γίνεται με χρήση των παρακάτω διαδικασιών:
!
! - ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ (Π, f, r, x, done)
! - ΔΙΑΔΙΚΑΣΙΑ ΕΞΑΓΩΓΗ (Π, f, r, x, done).
!
!όπου:
!- Π: μονοδιάστατος πίνακας χαρακτήρων 100 θέσεων
!- f: ο δείκτης για το εμπρός άκρο της ουράς
!- r: ο δείκτης για το πίσω άκρο της ουράς
!- x: το στοιχείο προς εισαγωγή ή η τιμή που εξάγεται
!- done: ΑΛΗΘΗΣ για επιτυχή εισαγωγή ή εξαγωγή, ΨΕΥΔΗΣ σε περίπτωση
!  που επιχειρείται εισαγωγή σε γεμάτη ουρά ή εξαγωγή από άδεια ουρά.
!
!Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:
!Γ1. Να περιλαμβάνει κατάλληλο τμήμα δηλώσεων.
!Γ2. Να εμφανίζει το παρακάτω μενού επιλογών:
!1. Μέλος
!2. Κουτάβι
!3. Στατιστικά
!4. Έξοδος
!και να διαβάζει την επιλογή του χρήστη (1-4), χωρίς έλεγχο εγκυρότητας.
!Η λειτουργία του μενού επαναλαμβάνεται μέχρι να επιλεγεί «4. Έξοδος»,
!οπότε τερματίζεται η λειτουργία του προγράμματος.
!
!Οι λειτουργίες 1-3 να υλοποιούνται ως εξής:
!Γ3. 1. Μέλος: να ζητάει τον κωδικό του μέλους και, εφόσον υπάρχει διαθέσιμο
! κουτάβι σε αναμονή, να εξάγει τον κωδικό του από την ουρά (K) και να τον εμφανίζει,
! διαφορετικά να εισάγει τον κωδικό του μέλους στην αντίστοιχη ουρά (Μ).
! Αν η ουρά (Μ) είναι γεμάτη, να εμφανίζει κατάλληλο μήνυμα.
!
!Γ4. 2. Κουτάβι: να ζητάει τον κωδικό του κουταβιού και, εφόσον υπάρχει
! διαθέσιμο μέλος σε αναμονή, να εξάγει τον κωδικό του από την ουρά (Μ)
! και να τον εμφανίζει, διαφορετικά να εισάγει τον κωδικό του κουταβιού
! στην αντίστοιχη ουρά (Κ). Αν η ουρά (Κ) είναι γεμάτη, να εμφανίζει κατάλληλο μήνυμα.
!
!Γ5. 3. Στατιστικά: να εμφανίζει τα ακόλουθα:
!α. Πόσες υιοθεσίες έγιναν
!β. Πόσα μέλη βρίσκονται σε αναμονή
!γ. Πόσα κουτάβια υιοθετήθηκαν απευθείας χωρίς να μπουν σε σειρά αναμονής
!
!ΣΗΜΕΙΩΣΗ: Η διαχείριση των ουρών Μ, Κ να γίνεται αποκλειστικά με
! χρήση των διαδικασιών ΕΙΣΑΓΩΓΗ και ΕΞΑΓΩΓΗ, τις οποίες δεν χρειάζεται να υλοποιήσετε.

ΠΡΟΓΡΑΜΜΑ Ουρά_Ποιμενικού

ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: Μέλη[100], Κουτάβια[100] 
  ΧΑΡΑΚΤΗΡΕΣ: επιλογή, κωδικός_μέλους, κωδικός_κουταβιού
  ΑΚΕΡΑΙΕΣ: fm, rm, fk, rk                    ! front και rear για τις δύο ουρές
  ΛΟΓΙΚΕΣ: done
  ΑΚΕΡΑΙΕΣ: πλήθος_από_υιοθεσίες, υιοθεσίες_κουταβιών_χωρίς_αναμονή
ΑΡΧΗ

!αρχικοποιήσεις στους δείκτες των ουρών   (front, rear για Μέλη και Κουτάβια)
  fm <- 0
  rm <- 0
  fk <- 0
  rk <- 0

  πλήθος_από_υιοθεσίες <- 0
  υιοθεσίες_κουταβιών_χωρίς_αναμονή <- 0



  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ '1. Μέλος'
    ΓΡΑΨΕ '2. Κουτάβι'
    ΓΡΑΨΕ '3. Στατιστικά'
    ΓΡΑΨΕ '4. Έξοδος'
    ΔΙΑΒΑΣΕ επιλογή


    ΑΝ επιλογή = '1' ΤΟΤΕ
!Γ3. 1. Μέλος: να ζητάει τον κωδικό του μέλους και, εφόσον υπάρχει διαθέσιμο
! κουτάβι σε αναμονή, να εξάγει τον κωδικό του από την ουρά (K) και να τον εμφανίζει,
! διαφορετικά να εισάγει τον κωδικό του μέλους στην αντίστοιχη ουρά (Μ).
! Αν η ουρά (Μ) είναι γεμάτη, να εμφανίζει κατάλληλο μήνυμα.
      ΓΡΑΨΕ 'Δώστε κωδικό του μέλους: '
      ΔΙΑΒΑΣΕ κωδικός_μέλους

      ΑΝ fk > 0 ΤΟΤΕ
        ΚΑΛΕΣΕ ΕΞΑΓΩΓΗ (Κουτάβια, fk, rk, κωδικός_κουταβιού, done) 
!       ο έλεγχος για υποχείλιση δεν χρειάζεται, γιατί ελέγχουμε για υποχείλιση
!       πριν την κλήση απευθείας με τον δείκτη front κουταβιών fk
        ΓΡΑΨΕ 'Υιοθεσία του κουταβιού με με κωδικό: ', κωδικός_κουταβιού
!       ενημέρωση στατιστικών
        πλήθος_από_υιοθεσίες <- πλήθος_από_υιοθεσίες + 1

      ΑΛΛΙΩΣ
        ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ (Μέλη, fm, rm, κωδικός_μέλους, done) 
        ΑΝ done = ΨΕΥΔΗΣ ΤΟΤΕ
          ΓΡΑΨΕ 'Γεμάτη ουρά αναμονής για τα μέλη'
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ


    ΑΛΛΙΩΣ_ΑΝ επιλογή = '2' ΤΟΤΕ
!Γ4. 2. Κουτάβι: να ζητάει τον κωδικό του κουταβιού και, εφόσον υπάρχει
! διαθέσιμο μέλος σε αναμονή, να εξάγει τον κωδικό του από την ουρά (Μ)
! και να τον εμφανίζει, διαφορετικά να εισάγει τον κωδικό του κουταβιού
! στην αντίστοιχη ουρά (Κ). Αν η ουρά (Κ) είναι γεμάτη, να εμφανίζει κατάλληλο μήνυμα.
      ΓΡΑΨΕ 'Δώστε κωδικό του κουταβιού: '
      ΔΙΑΒΑΣΕ κωδικός_κουταβιού

      ΑΝ fm > 0 ΤΟΤΕ
        ΚΑΛΕΣΕ ΕΞΑΓΩΓΗ (Μέλη, fm, rm, κωδικός_μέλους, done) 
        ΓΡΑΨΕ 'Υιοθεσία από το μέλος με κωδικό: ', κωδικός_μέλους
!    ενημέρωση στατιστικών
        πλήθος_από_υιοθεσίες <- πλήθος_από_υιοθεσίες + 1
        υιοθεσίες_κουταβιών_χωρίς_αναμονή <- υιοθεσίες_κουταβιών_χωρίς_αναμονή + 1

      ΑΛΛΙΩΣ
        ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ (Κουτάβια, fk, rk, κωδικός_κουταβιού, done) 
        ΑΝ done = ΨΕΥΔΗΣ ΤΟΤΕ
          ΓΡΑΨΕ 'Γεμάτη ουρά αναμονής για τα κουτάβια'
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ



    ΑΛΛΙΩΣ_ΑΝ επιλογή = '3' ΤΟΤΕ
!Γ5. 3. Στατιστικά:
      ΓΡΑΨΕ 'Υιοθεσίες έγιναν: ', πλήθος_από_υιοθεσίες
      ΑΝ fm = 0 ΤΟΤΕ
        ΓΡΑΨΕ 'Μέλη βρίσκονται σε αναμονή : 0'
      ΑΛΛΙΩΣ
        ΓΡΑΨΕ 'Μέλη βρίσκονται σε αναμονή : ', rm - fm + 1
      ΤΕΛΟΣ_ΑΝ

      ΓΡΑΨΕ 'Kουτάβια υιοθετήθηκαν χωρίς αναμονή : ', υιοθεσίες_κουταβιών_χωρίς_αναμονή




    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ επιλογή = '4'
!Η λειτουργία του μενού επαναλαμβάνεται μέχρι να επιλεγεί «4. Έξοδος»,
!οπότε τερματίζεται η λειτουργία του προγράμματος.


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



! -----------------------------------------------------------------------------------------------
! ΣΗΜΕΙΩΣΗ: Η διαχείριση των ουρών Μ, Κ να γίνεται αποκλειστικά με
! χρήση των διαδικασιών ΕΙΣΑΓΩΓΗ και ΕΞΑΓΩΓΗ, τις οποίες δεν χρειάζεται να υλοποιήσετε.
! -----------------------------------------------------------------------------------------------

ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ (Π, f, r, x, done) 
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: Π[100], x
  ΑΚΕΡΑΙΕΣ: f, r
  ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
  ΑΝ f = 0 ΚΑΙ r = 0 ΤΟΤΕ
    f <- 1
    r <- 1
    Π[r] <- x
    done <- ΑΛΗΘΗΣ
  ΑΛΛΙΩΣ_ΑΝ r < 100 ΤΟΤΕ
    r <- r + 1
    Π[r] <- x
    done <- ΑΛΗΘΗΣ
  ΑΛΛΙΩΣ
    done <- ΨΕΥΔΗΣ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ



ΔΙΑΔΙΚΑΣΙΑ ΕΞΑΓΩΓΗ (Π, f, r, x, done) 
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: Π[100], x
  ΑΚΕΡΑΙΕΣ: f, r
  ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
  ΑΝ f < 0 ΤΟΤΕ
    done <- ΨΕΥΔΗΣ
  ΑΛΛΙΩΣ_ΑΝ f = r ΤΟΤΕ
    x <- Π[f] 
    Π[f] <- ' '
    done <- ΑΛΗΘΗΣ
    f <- 0
    r <- 0
  ΑΛΛΙΩΣ
    x <- Π[f] 
    Π[f] <- ' '
    done <- ΑΛΗΘΗΣ
    f <- f + 1
  ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

 

© 2022 - 2ο Γενικό Λύκειο Γέρακα - Βασίλειος Αναστόπουλος