ΑΣΚΗΣΗ ΤΑΧΥΔΡΟΜΕΙΟ

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

ΑΣΚΗΣΗ ΤΑΧΥΔΡΟΜΕΙΟ - ΟΥΡΕΣ

Ε. 6: Σε ένα ταχυδρομικό κατάστημα, οι πελάτες εξυπηρετούνται με βάση τη σειρά


άφιξής τους σε αυτό. Το ταχυδρομικό κατάστημα έχει ένα ταμείο και ο μέσος
χρόνος εξυπηρέτησης κάθε πελάτη είναι 3 λεπτά. Η ουρά αναμονής στο
κατάστημα δεν μπορεί να ξεπερνά τα 30 άτομα.
Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:
1. Να δέχεται σαν είσοδο από τον χρήστη μία εκ των δύο τιμών εισαγωγής:
«1.ΕΙΣΑΓΩΓΗ» ή «2.ΕΠΟΜΕΝΟΣ» (με έλεγχο εγκυρότητας).
2. Αν δοθεί η τιμή «1.ΕΙΣΑΓΩΓΗ», τότε το πρόγραμμα να διαβάζει το
ονοματεπώνυμο του πελάτη και αμέσως μετά να εμφανίζει το πλήθος των
ατόμων που περιμένουν πριν από αυτόν, εκτός αν η ουρά αναμονής είναι γεμάτη,
οπότε να εμφανίζει το μήνυμα «Το κατάστημα γέμισε. Παρακαλούμε ελάτε άλλη
φορά».
3. Αν δοθεί η τιμή «2.ΕΠΟΜΕΝΟΣ», τότε το πρόγραμμα να εμφανίζει το
ονοματεπώνυμο του πελάτη προς εξυπηρέτηση.
4. Η παραπάνω διαδικασία να επαναλαμβάνεται μέχρι να εξυπηρετηθούν όλοι οι
πελάτες. ???
ΘΑ ΤΕΡΜΑΤΙΖΕΙ ΟΤΑΝ ΔΟΘΕΙ Η ΕΠΙΛΟΓΗ 3 (ΕΞΟΔΟΣ) ΑΠΟ ΤΟ ΜΕΝΟΥ Ή ΟΤΑΝ
ΕΞΥΠΗΡΕΤΗΘΕΙ ΤΟ ΜΕΓΙΣΤΟ ΠΛΗΘΟΣ ΠΕΛΑΤΩΝ ΠΟΥ ΔΥΝΑΤΑΙ ΝΑ ΕΞΥΠΗΡΕΤΗΣΕΙ
ΤΟ ΤΑΧΥΔΡΟΜΕΙΟ ΒΑΣΕΙ ΤΩΝ ΩΡΩΝ ΛΕΙΤΟΥΡΓΙΑΣ ΤΟΥ, ΟΙ ΟΠΟΙΕΣ ΘΑ ΔΙΝΟΝΤΑΙ
ΣΑΝ ΕΙΣΟΔΟΣ ΣΤΟ ΠΡΟΓΡΑΜΜΑ.
5. Στο τέλος το πρόγραμμα να εμφανίζει το πλήθος των ατόμων που
εξυπηρετήθηκαν, καθώς και τον μέσο χρόνο αναμονής των πελατών.

Σημειώνεται ότι, κατά την επίλυση της άσκησης και δεδομένου ότι:
(α) εισέρχονται στην ουρά πολλοί πελάτες προς εξυπηρέτηση και
(β) εξέρχονται από την ουρά πολλοί πελάτες που εξυπηρετήθηκαν,
για να μην υπάρξουν κενές, μη αξιοποιήσιμες, θέσεις στην αρχή της ουράς,
υλοποιείται ολίσθηση (shift) των περιεχομένων της ουράς (του πίνακα), ώστε οι
κενές θέσεις προς εισαγωγή νέων πελατών να βρίσκονται στο πίσω μέρος της
ουράς. Για την περίπτωση αυτή, ελέγχεται αν η τελευταία θέση της ουράς είναι
γεμάτη και ταυτόχρονα υπάρχει διαθέσιμη (από προηγούμενη εξαγωγή
στοιχείων) τουλάχιστον μία κενή θέση στην αρχή της ουράς. Τότε
πραγματοποιείται ολίσθηση.
ΠΡΟΓΡΑΜΜΑ ΤΑΧΥΔΡΟΜΕΙΟ
ΜΕΤΑΒΛΗΤΕΣ
 
ΑΚΕΡΑΙΕΣ: ΕΜΠΡΟΣ, ΠΙΣΩ, ΕΠ, ΠΛΜΠΡ, ΩΡΕΣ, ΠΛ, ΣΥΝΧΡ, Ι, Κ, ΜΑΧΠΛ, ΠΛΟ
Υ
  ΠΡΑΓΜΑΤΙΚΕΣ: ΜΧ
  ΧΑΡΑΚΤΗΡΕΣ: ΟΥΡΑ[5], ΟΝ
ΑΡΧΗ
  ΕΜΠΡΟΣ <- 0
  ΠΙΣΩ <- 0
  ΠΛΟΥ <- 0
  ΠΛ <- 0
  ΣΥΝΧΡ <- 0
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'ΔΩΣΕ ΩΡΕΣ ΛΕΙΤΟΥΡΓΙΑΣ: '
    ΔΙΑΒΑΣΕ ΩΡΕΣ
  ΜΕΧΡΙΣ_ΟΤΟΥ ΩΡΕΣ >= 0
  ΜΑΧΠΛ <- 60*ΩΡΕΣ div 3
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΓΡΑΨΕ '1-ΕΙΣΑΓΩΓΗ'
      ΓΡΑΨΕ '2-ΕΠΟΜΕΝΟΣ'
      ΓΡΑΨΕ '3-ΕΞΟΔΟΣ'
      ΔΙΑΒΑΣΕ ΕΠ
      ΑΝ ΕΠ <> 1 ΚΑΙ ΕΠ <> 2 ΚΑΙ ΕΠ <> 3 ΤΟΤΕ
        ΓΡΑΨΕ 'ΛΑΘΟΣ ΕΠΙΛΟΓΗ..TRY AGAIN'
      ΤΕΛΟΣ_ΑΝ
    ΜΕΧΡΙΣ_ΟΤΟΥ ΕΠ = 1 Η ΕΠ = 2 Η ΕΠ = 3

    ΑΝ ΕΠ = 1 ΤΟΤΕ
      ΑΝ ΠΛΟΥ = ΜΑΧΠΛ ΤΟΤΕ
        ΓΡΑΨΕ 'ΤΕΛΟΣ ΕΞΥΠΗΡΕΤΗΣΗ ΛΟΓΩ ΟΡΙΟΥ..ΕΛΑΤΕ ΑΛΛΗ ΜΕΡΑ'
      ΑΛΛΙΩΣ
!ΟΛΙΣΘΗΣΗ
        ΑΝ ΕΜΠΡΟΣ <> 1 ΚΑΙ ΠΙΣΩ = 5 ΤΟΤΕ
          ΓΡΑΨΕ 'ΟΥΡΑ ΓΕΜΑΤΗ ΠΙΣΩ ΜΕ ΚΕΝΕΣ ΘΕΣΕΙΣ ΜΠΡΟΣΤΑ..ΟΛΙΣΘΗΣΗ'
          Κ <- 0
          ΓΙΑ Ι ΑΠΟ ΕΜΠΡΟΣ ΜΕΧΡΙ ΠΙΣΩ
            Κ <- Κ + 1
            ΟΥΡΑ[Κ] <- ΟΥΡΑ[Ι] 
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΓΙΑ Ι ΑΠΟ Κ + 1 ΜΕΧΡΙ ΠΙΣΩ
            ΟΥΡΑ[Ι] <- ' '
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΕΜΠΡΟΣ <- 1
          ΠΙΣΩ <- Κ
        ΤΕΛΟΣ_ΑΝ

        ΓΡΑΨΕ 'ΔΩΣΕ ΟΝΟΜΑ ΠΕΛΑΤΗ'


        ΔΙΑΒΑΣΕ ΟΝ
        ΑΝ ΠΙΣΩ = 5 ΤΟΤΕ
          ΓΡΑΨΕ 'ΟΥΡΑ ΓΕΜΑΤΗ..ΕΛΑΤΕ ΜΙΑ ΑΛΛΗ ΦΟΡΑ'
        ΑΛΛΙΩΣ
          ΑΝ ΕΜΠΡΟΣ = 0 ΚΑΙ ΠΙΣΩ = 0 ΤΟΤΕ
            ΕΜΠΡΟΣ <- 1
            ΠΙΣΩ <- 1
          ΑΛΛΙΩΣ
            ΠΙΣΩ <- ΠΙΣΩ + 1
          ΤΕΛΟΣ_ΑΝ
          ΟΥΡΑ[ΠΙΣΩ] <- ΟΝ
          ΠΛΟΥ <- ΠΛΟΥ + 1
          ΓΡΑΨΕ 'ΜΠΡΟΣΤΑ ΣΟΥ ΓΙΑ ΕΞΥΠΗΡΕΤΗΣΗ', ΠΙΣΩ - ΕΜΠΡΟΣ, '
ΑΤΟΜΑ & ΧΡΟΝΟΣ ΑΝΑΜΟΝΗΣ', (ΠΙΣΩ - ΕΜΠΡΟΣ)*3, 'ΜΙΝ'
          ΣΥΝΧΡ <- ΣΥΝΧΡ + (ΠΙΣΩ - ΕΜΠΡΟΣ)*3
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ

    ΑΛΛΙΩΣ_ΑΝ ΕΠ = 2 ΤΟΤΕ
      ΑΝ ΕΜΠΡΟΣ = 0 ΚΑΙ ΠΙΣΩ = 0 ΤΟΤΕ
        ΓΡΑΨΕ 'ΑΔΕΙΑ Η ΟΥΡΑ ΑΝΑΜΟΝΗΣ'
      ΑΛΛΙΩΣ
        ΓΡΑΨΕ 'ΕΞΥΠΗΡΕΤΗΣΗ Ο', ΟΥΡΑ[ΕΜΠΡΟΣ] 
        ΠΛ <- ΠΛ + 1
        ΟΥΡΑ[ΕΜΠΡΟΣ] <- ' '
        ΑΝ ΕΜΠΡΟΣ = ΠΙΣΩ ΤΟΤΕ
          ΕΜΠΡΟΣ <- 0
          ΠΙΣΩ <- 0
        ΑΛΛΙΩΣ
          ΕΜΠΡΟΣ <- ΕΜΠΡΟΣ + 1
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
    ΑΛΛΙΩΣ                                                   !ΕΠ=3
      ΓΡΑΨΕ 'ΕΞΟΔΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ'
    ΤΕΛΟΣ_ΑΝ
    ΑΝ ΠΛ = ΜΑΧΠΛ ΤΟΤΕ
      ΓΡΑΨΕ 'ΤΕΛΟΣ ΕΞΥΠΗΡΕΤΗΣΗΣ ΔΙΑ ΤΟ ΚΟΙΝΟ'
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ ΕΠ = 3 Η ΠΛ = ΜΑΧΠΛ
  ΓΡΑΨΕ 'ΕΞΥΠΥΡΕΤΗΘΗΚΑΝ ', ΠΛ, ' ΑΤΟΜΑ'
  ΑΝ ΠΛ <> 0 ΤΟΤΕ
    ΜΧ <- ΣΥΝΧΡ/ΠΛ
    ΓΡΑΨΕ 'ΜΕΣΟΣ ΧΡΟΝΟΣ ΑΝΑΜΟΝΗΣ ', ΜΧ, ' ΜΙΝ'
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

You might also like