Αποστολέας Θέμα: ΑΣΚΗΣΗ ΜΕ ΞΕΝΟΔΟΧΕΙΑ  (Αναγνώστηκε 949 φορές)

landreou

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 124
ΑΣΚΗΣΗ ΜΕ ΞΕΝΟΔΟΧΕΙΑ
« στις: 23 Ιούλ 2013, 12:46:48 μμ »

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

Η ΕΚΦΩΝΗΣΗ
Ξενοδοχείο διαθέτει 25 δωμάτια . Τα δωμάτια αριθμούνται απο 1 μέχρι 25. Ο συνολικός αριθμός υπαλλήλων που
απασχολούνται ημερησίως καθορίζεται από τα κατειλημμένα δωμάτια και δίνεται από τον παρακάτω πίνακα
                     ΚΑΤΕΙΛΗΜΜΕΝΑ ΔΩΜΑΤΙΑ      ΣΥΝΟΛΙΚΟΣ ΑΡΙΘΜΟΣ ΥΠΑΛΗΛΩΝ
            0 μεχρι 4                                     3
            5 μεχρι 8                                     4
            9 μέχρι 12                             5
            ανω των 12                             6
Η ημερήσια χρέωση για κάθε δωμάτιο είναι 75 Ευρώ .
Το ημερομίθιο κάθε υπαλλήλου είναι 45 Ευρώ.
Να κατασκευάστε πρόγραμμα που :
[1] Να περιλαμβανει το τμήμα δηλώσεων
[2] Να διαβάζει πίνακα ΚΡΑΤ[25,7] την κατάσταση κάθε δωματίου για κάθε μέρα της εδομάδας, ελέγχοντας
   την ορθή καταχώρηση . Το πρόγραμμα δέχεται μόνο τους χαρακτήρες "Κ" για κατειλημμένο και
   "Δ" για διαθέσιμο.
[3] Να υπολογίζει το συνολικό κέρδος ή τη συνολική ζημιά κατα η διάρκεια της εβδομάδας και να
   εμφανίζει κατάλληλο μήνυμα. Για τον σκοπό αυτό να καλεί υποπρόγραμμα ΚΕΡΔΟΣ που περιγράφεται παρακάτω
[4] Να αναπτύξετε υποπρόγραμμα κέρδος το οποίο  να δέχεται τον πίνακα των κρατήσεων και ένα αριθμό ημέρας
   από 1 μέχρι 7. Το υποπρόγραμμα υπολογίζει και επιστρέφει το κέρδος της συγκεκριμένης μέρας.
   Το κέρδος κάθε μέρας προκύπτει αν από τα ημερήσια έσοδα ενοικιάσεων αφαιρεθούν τα ημερομίσθια των
   υπαλλήλων της συγκεκριμένης μέρας.
   Αν τα έσοδα είναι μικρότερα τότε το κέρδος είναι αρνητικό ( ζημιά ).

ΠΩΣ ΤΗ ΕΛΥΣΑ

ΠΡΟΓΡΑΜΜΑ HOTEL
ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ : Ι,J,ΗΜΕΡΗΣΙΟ_ΚΕΡΔΟΣ,ΕΒΔΟΜΑΔΙΑΙΟ_ΚΕΡΔΟΣ
ΧΑΡΑΚΤΗΡΕΣ : ΚΡΑΤ[25,7]

ΑΡΧΗ

ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 25
   ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 7
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
         ΔΙΑΒΑΣΕ ΚΡΑΤ[Ι,J]
      ΜΕΧΡΙΣ_ΟΤΟΥ (ΚΡΑΤ[Ι,J] = 'Κ') Η (ΚΡΑΤ[Ι,J]= 'Δ')
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


ΗΜΕΡΗΣΙΟ_ΚΕΡΔΟΣ <- 0

ΕΒΔΟΜΑΔΙΑΙΟ_ΚΕΡΔΟΣ <- 0

ΓΙΑ J ΑΠΌ 1 ΜΕΧΡΙ 7

   ΗΜΕΡΙΣΙΟ_ΚΕΡΔΟΣ <- ΚΕΡΔΟΣ(ΚΡΑΤ,J)
   
   ΕΒΔΟΜΑΔΙΑΙΟ_ΚΕΡΔΟΣ <- ΕΒΔΟΜΑΔΙΑΙΟ_ΚΕΡΔΟΣ + ΗΜΕΡΗΣΙΟ_ΚΕΡΔΟΣ   

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΝ ΕΒΔΟΜΑΔΙΑΙΟ_ΚΕΡΔΟΣ > 0 ΤΟΤΕ

   ΓΡΑΨΕ 'ΚΕΡΔΟΣ = ',ΕΒΔΟΜΑΔΙΑΙΟ_ΚΕΡΔΟΣ

ΑΛΛΙΩΣ_ΑΝ ΕΒΔΟΜΑΔΙΑΙΟ_ΚΕΡΔΟΣ < 0 ΤΟΤΕ

   ΓΡΑΨΕ 'ΖΗΜΙΑ = ', Α_Τ(ΕΒΔΟΜΑΔΙΑΙΟ_ΚΕΡΔΟΣ)

ΑΛΛΙΩΣ

   ΓΡΑΨΕ " ΙΣΟ ΖΥΓΙΟ "

ΤΕΛΟΣ_ΑΝ

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

ΣΥΝΑΡΤΗΣΗ ΚΕΡΔΟΣ(ΚΡΑΤ,J):ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ : Ι,ΕΣΟΔΑ[7],ΕΞΟΔΑ[7],ΚΑΠΠΑ[7]

ΑΡΧΗ

ΕΣΟΔΑ[J] <- 0

ΕΞΟΔΑ[J] <- 0

Ι <- 1

ΟΣΟ Ι <= 25 ΕΠΑΝΑΛΑΒΕ

   ΑΝ ΚΡΑΤ[Ι,J] = 'K' TOTE
      
      ΚΑΠΠΑ[J] <- ΚΑΠΠΑ[J] + 1

      ΕΣΟΔΑ[J] <- ΕΣΟΔΑ[J] + 75

   ΤΕΛΟΣ_ΑΝ

   Ι <- Ι + 1

   ΑΝ Ι > 25 ΤΟΤΕ

      ΑΝ ΚΑΠΠΑ[J] <= 4 ΤΟΤΕ

         ΕΞΟΔΑ[J] <- 3 * 45
      
      ΑΛΛΙΩΣ_ΑΝ ΚΑΠΠΑ[J] <= 8 TOTE

         ΕΞΟΔΑ[J] <- 4 * 45

      ΑΛΛΙΩΣ_ΑΝ ΚΑΠΠΑ[J] <= 12 TOTE

         ΕΞΟΔΑ[J] <- 5 * 45

      ΑΛΛΙΩΣ
            
         ΕΞΟΔΑ[J] <- 6 * 45

      ΤΕΛΟΣ_ΑΝ

      ΚΕΡΔΟΣ <- ΕΣΟΔΑ[J] - ΕΞΟΔΑ[J]

   ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
   
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ