! ============= ΙΟΥΛΙΟΣ 2007 ΗΜΕΡΗΣΙΟ ΘΕΜΑ 4 =====================================
! Μια σύγχρονη πτηνοτροφική μονάδα παρακολουθεί την ημερήσια παραγωγή αυγών
! και καταγράφει τα στοιχεία σε ηλεκτρονικό αρχείο.
! Να αναπτύξετε αλγόριθμο ο οποίος θα διαχειρίζεται τα στοιχεία της μονάδας
! στη διάρκεια ενός έτους. Για το σκοπό αυτό :
! Α. Να κατασκευάσετε κύριο πρόγραμμα το οποίο :
! 1. να ζητάει το έτος παρακολούθησης, ελέγχοντας ότι πρόκειται για έτος
! του 21ου αιώνα (από 2000 μέχρι και 2099). Ο αλγόριθμος να δημιουργεί
! πίνακα με τον αριθμό των ημερών για καθέναν από τους δώδεκα μήνες
! του έτους που δόθηκε. Ο αριθμός των ημερών του μήνα θα υπολογίζεται
! από υποπρόγραμμα το οποίο θα κατασκευάσετε για το σκοπό αυτό.
! Η λειτουργία του υποπρογράμματος περιγράφεται στο ερώτημα Β.
! 2. να ζητάει την ημερήσια παραγωγή (αριθμό αυγών) για κάθε μέρα του
! έτους και να καταχωρίζει τις τιμές σε πίνακα δυο διαστάσεων,
! με μια γραμμή για κάθε μήνα.
! 3. να εμφανίζει τον τρίτο κατά σειρά από τους μήνες του έτους που έχουν
! ο καθένας μέσο όρο ημερήσιας παραγωγής μέχρι και δέκα ποσοστιαίες
! μονάδες πάνω ή κάτω από τον ετήσιο μέσο όρο. Αν δεν βρει τέτοιο μήνα,
! να εμφανίζει κατάλληλο μήνυμα.
! Β. Να κατασκευάσετε υποπρόγραμμα το οποίο να δέχεται ως παραμέτρους κάποιο
! έτος και τον αριθμό κάποιου μήνα (1 έως 12), και να επιστρέφει τον αριθμό
! των ημερών του συγκεκριμένου μήνα.
! Όταν το έτος είναι δίσεκτο, ο Φεβρουάριος έχει 29 ημέρες, διαφορετικά έχει 28.
! Δίσεκτα είναι τα έτη που διαιρούνται με το 4 αλλά όχι με το 100, καθώς και
! εκείνα που διαιρούνται με το 400. Για τους υπόλοιπους μήνες, πλην του
! Φεβρουαρίου, ισχύει το εξής:
! μέχρι και τον Ιούλιο (7ος μήνας) οι μονοί μήνες έχουν 31 ημέρες και
! οι ζυγοί 30. Για τους μήνες μετά τον Ιούλιο, ισχύει το αντίστροφο.
! ================================================================================
ΠΡΟΓΡΑΜΜΑ HMER_2007_07_4
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: days[12] , egg[12,31] , i , j , k , n , s , year
ΠΡΑΓΜΑΤΙΚΕΣ : mo , mom
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε το έτος'
ΔΙΑΒΑΣΕ year
ΟΣΟ year < 2000 ή year > 2099 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ 'Λάθος. Ξαναδώσε'
ΔΙΑΒΑΣΕ year
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
days[i] <-- ΣΥΝΑΡΤ(year , i)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ days[i]
ΓΡΑΨΕ 'Δώσε την ημερήσια παραγωγή αυγών την', j , 'μέρα του μήνα' , i
ΔΙΑΒΑΣΕ egg[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
s <-- 0
n <-- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ days[i]
n <-- n + 1
s <-- s + egg[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
mo <-- s / n ! ΕΤΗΣΙΟΣ ΜΕΣΟΣ ΟΡΟΣ
k <-- 0
i <-- 1
ΟΣΟ i<= 12 ΚΑΙ k < 3 ΕΠΑΝΑΛΑΒΕ
s <-- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ days[i]
s <-- s + egg[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
mom <-- s / days[i] ! ΜΕΣΟΣ ΟΡΟΣ ΜΗΝΑ
ΑΝ Α_Τ(mom - mo)*100/mo <= 10 ΤΟΤΕ
k <-- k + 1
ΑΝ k = 3 ΤΟΤΕ
ΓΡΑΨΕ 'Ο τρίτος μήνας με μέσο όρο ημερήσιας παραγωγής μέχρι και δέκα ποσοστιαίες μονάδες πάνω ή κάτω από τον ετήσιο μέσο όρο είναι ο' , i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
i <-- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ k < 3 ΤΟΤΕ
ΓΡΑΨΕ 'Δεν υπάρχει μήνας με μέσο όρο ημερήσιας παραγωγής μέχρι και δέκα ποσοστιαίες μονάδες πάνω ή κάτω από τον ετήσιο μέσο όρο'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΣΥΝΑΡΤΗΣΗ ΣΥΝΑΡΤ(y , d): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : d , y
ΑΡΧΗ
ΑΝ d = 2 ΤΟΤΕ
ΑΝ (y MOD 4 = 0 ΚΑΙ y MOD 100 <> 0) ή y MOD 400 = 0 ΤΟΤΕ
ΣΥΝΑΡΤ <-- 29
ΑΛΛΙΩΣ
ΣΥΝΑΡΤ <-- 28
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ_ΑΝ d <= 7 ΤΟΤΕ
ΑΝ d MOD 2 = 1 ΤΟΤΕ
ΣΥΝΑΡΤ <-- 31
ΑΛΛΙΩΣ
ΣΥΝΑΡΤ <-- 30
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
ΑΝ d MOD 2 = 1 ΤΟΤΕ
ΣΥΝΑΡΤ <-- 30
ΑΛΛΙΩΣ
ΣΥΝΑΡΤ <-- 31
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ