Καλησπέρα σε όλους κ χρόνια πολλά. Θα ήθελα τη βοήθειά σας στο συγκεκριμένο θέμα. Έχω γράψει έναν αλγόριθμο παρακάτω αλλά δεν είμαι 100% σίγουρος ότι είναι εντελώς σωστός. Όποιος έχει το χρόνο κ την υπομονή ας του ρίξει μια ματιά. Ευχαριστώ
ΠΡΟΓΡΑΜΜΑ Θ4
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ:ΜΟ[12],ΕΜΟ
ΑΚΕΡΑΙΕΣ:ΕΤΟΣ,ΡΕΤ,Ι,Ξ,ΗΜΕΡ[12,31],Μ[12],Τ1,Τ
ΑΡΧΗ
ΔΙΑΒΑΣΕ ΕΤΟΣ
ΟΣΟ ΕΤΟΣ<2000 Η ΕΤΟΣ>2099 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ 'ΛΑΘΟΣ ΕΤΟΣ, ΞΑΝΑΔΩΣΕ'
ΔΙΑΒΑΣΕ ΕΤΟΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 12
ΚΑΛΕΣΕ ΔΙΑΔ(ΕΤΟΣ,Ι,ΡΕΤ)
Μ[Ι] <-- ΡΕΤ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 12
ΓΙΑ Ξ ΑΠΟ 1 ΜΕΧΡΙ Μ[Ι]
ΓΡΑΨΕ 'ΔΩΣΕ ΗΜΕΡΗΣΙΑ ΠΑΡΑΓΩΓΗ'
ΔΙΑΒΑΣΕ ΗΜΕΡ[Ι,Ξ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 12
ΜΟ[Ι] <-- 0
ΓΙΑ Ξ ΑΠΟ 1 ΜΕΧΡΙ Μ[Ι]
ΜΟ[Ι] <-- ΜΟ[Ι] + ΗΜΕΡ[Ι,Ξ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ[Ι] <-- ΜΟ[Ι]/Μ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΕΜΟ <-- 0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 12
ΕΜΟ <-- ΕΜΟ + ΜΟ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΕΜΟ <-- ΕΜΟ/12
Τ1 <-- 0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 12
ΑΝ ΜΟ[Ι]>0.9*ΕΜΟ ΚΑΙ ΜΟ[Ι]<1.1*ΕΜΟ ΤΟΤΕ
Τ1 <-- 1+ Τ1
ΑΝ Τ1=3 ΤΟΤΕ
Τ <-- Ι
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Τ1<3 ΤΟΤΕ
ΓΡΑΨΕ 'ΔΕΝ ΥΠΑΡΧΕΙ ΤΡΙΤΟΣ ΜΗΝΑΣ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ Τ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Θ4
ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ(ΕΤΟΣ,Ι,ΡΕΤ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:ΡΕΤ , ΕΤΟΣ,Ι,Ξ
ΑΡΧΗ
ΑΝ Ι=2 ΤΟΤΕ
ΑΝ ΕΤΟΣ MOD 4=0 ΚΑΙ ΕΤΟΣ MOD 100<>0 ΤΟΤΕ
ΡΕΤ <-- 29
ΑΛΛΙΩΣ_ΑΝ ΕΤΟΣ MOD 400=0 ΚΑΙ ΕΤΟΣ MOD 100<>0 ΤΟΤΕ
ΡΕΤ <-- 29
ΑΛΛΙΩΣ
ΡΕΤ <-- 28
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
Ξ <-- 1
ΟΣΟ Ξ<=12 ΕΠΑΝΑΛΑΒΕ
ΑΝ Ξ=Ι ΤΟΤΕ
ΡΕΤ <-- 31
ΤΕΛΟΣ_ΑΝ
ΑΝ Ξ<>7 ΤΟΤΕ
Ξ <-- Ξ+2
ΑΛΛΙΩΣ
Ξ <-- Ξ+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ξ <-- 4
ΟΣΟ (Ξ<12) ΕΠΑΝΑΛΑΒΕ
ΑΝ Ξ=Ι ΤΟΤΕ
ΡΕΤ <-- 30
ΤΕΛΟΣ_ΑΝ
ΑΝ Ξ<>6 ΤΟΤΕ
Ξ <-- Ξ+2
ΑΛΛΙΩΣ
Ξ <-- Ξ+3
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΔΙΑΔ
Το πρόγραμμα σωστό μου φαίνεται, απλά κάποιες παρατηρήσεις
1. καλύτερα να χρησιμοποιήσεις ΌΣΟ Τ1<3 αντί να έχεις ΓΙΑ Ι ΑΠΟ, και μόλις βρει 3 στοιχεία με αυτή την ιδιότητα να σταματάει
2. επίσης αντί για διαδικασία καλύτερα να χρησιμοποιήσεις συνάρτηση
3. ο υπολογισμός των ημερών του μήνα δε χρειάζεται επανάληψη, αρκεί μια δομή Αν εμφωλευμένη όπου θα ελέγχεις αρχικά αν ο μήνας είναι <= 7 και στη συνέχεια για κάθε περίπτωση να παίζεις με το mod 2, για να διαχωρίσεις τους μονούς από τους ζυγούς μήνες
Πάντως η διαδικασία είναι όλα τα λεφτά. Μου φαίνεται σωστή με μια πρώτη ματιά. Απλά λίγο εξωπραγματικός ο τρόπος. Καλό όμως.
Ο υπολογισμός του ετήσιου μέσου όρου είναι λάθος Θα πρέπει να διαιρέσεις με 365 ή 366.
Άρα κατά την γνώμη μου ο κώδικας πρέπει να γίνει ως εξής:
1) Εκεί που γεμίζεις τον πίνακα Μ, ναχρησιμοποιήσεις μια λογική μεταβλητή (πχ. την ΔΙΣΕΚΤΟ)
ΔΙΣΕΚΤΟ <-- ΨΕΥΔΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 12
ΚΑΛΕΣΕ ΔΙΑΔ(ΕΤΟΣ,Ι,ΡΕΤ)
Μ[Ι] <-- ΡΕΤ
ΑΝ Ι=2 ΚΑΙ ΡΕΤ=29 ΤΟΤΕ
ΔΙΣΕΚΤΟ <-- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
2) Εκεί που υπολογίζεις την μέση ετήσια παραγωγή
ΑΝ ΔΙΣΕΚΤΟ=ΑΛΗΘΗΣ ΤΟΤΕ
ΕΜΟ <-- ΕΜΟ/366
ΑΛΛΙΩΣ
ΕΜΟ <-- ΕΜΟ/365
ΤΕΛΟΣ_ΑΝ