ΠΑΡΑΡΤΗΜΑ Α ΟΔΗΓΙΕΣ ΜΕΛΕΤΗΣ ΜΑΘΗΤΗ - ΑΣΚΗΣΗ 9 ΣΕΛΙΔΑ 100

Ξεκίνησε από pvs, 08 Μαρ 2017, 12:13:13 ΠΜ

« προηγούμενο - επόμενο »

pvs

Μήπως έχει ασχοληθεί κάποιος/α συνάδελφος με τη συγκεκριμένη άσκηση;
Αν ναι κάποιες απορίες. Στο ερώτημα 3 διαβάζουμε 4 τιμές (π.χ μήνας1, μήνας 2, ημέρα1, ημέρα 2) ή 2 τιμές (ημέρα, μήνας) ή διαβάζουμε δύο μήνες; Έχω κολλήσει ως προς την επίλυση της και κάθε βοήθεια θα ήταν ευπρόσδεκτη. 

Να γραφεί πρόγραμμα σε «ΓΛΩΣΣΑ» το οποίο να:
1) Καταχωρεί στους πίνακες Ημέρα[500] και Μήνα[500] την ημέρα και τον μήνα αντίστοιχα μιας δαπάνης, στον πίνακα Περιγραφή[500] την περιγραφή της δαπάνης και στον πίνακα Κόστος[500] το συνολικό ποσό της αντίστοιχης δαπάνης.
2) Ταξινομεί τους πίνακες πρώτα ως προς το μήνα κατά αύξουσα τάξη και στην περίπτωση ίδιου μήνα η ταξινόμηση να γίνει ως προς την ημέρα, κατά αύξουσα τάξη.
3) Δίνονται από το πληκτρολόγιο 2 ημερομηνίες (εκφράζουν μια χρονική περίοδο) να εμφανίζεται η περιγραφή κάθε δαπάνης με τα αντίστοιχα ποσά δαπάνης της χρονικής περιόδου που πληκτρολογήσαμε. Επίσης στο τέλος να εμφανίζεται το συνολικό ποσό που έχει ξοδευτεί την αντίστοιχη χρονική περίοδο.
4) Να γίνεται χρήση του υποπρογράμματος ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ, που να ελέγχει ότι η 1η
ημ/νια είναι μικρότερη από την 2η ημ/νία . Στην αντίθετη περίπτωση να τις αντιμεταθέτει.
Να χρησιμοποιηθεί η διαδικασία ΑΝΤΙΜΕΤΑΘΕΣΗ όπου χρειάζεται.

CPAN

Είναι ξεκάθαρο ότι διαβάζουμε 4 τιμές για να μπορέσουμε να ορίσουμε την χρονική περίοδο που θέλει. Με 2 τιμές δεν μπορεί να οριστεί χρονική περίοδος.
ΚΑΘΗΓΗΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΕ20

«Παλιά, οι άνθρωποι μελετούσαν για να βελτιώσουν τον εαυτό τους. Σήμερα, μελετούν για να εντυπωσιάσουν τους άλλους.»
Κομφούκιος

ApoAntonis

Ψάξε ψάξε το βρήκα και το ανασύρω.

Πρώτο ερώτημα: οι πίνακες Ημέρα και Μήνας, είναι τι τύπου; Οι ημέρες και οι μήνες από τα κάποια ελληνικά που ξέρουμε είναι λέξεις.
Υπάρχει η έντονη υπόνοια λόγω των επόμενων ερωτημάτων ότι μάλλον θα πρέπει να πρέπει να δηλωθούν ως πίνακες ακεραίων,
θεωρώ πως πρέπει να αναφέρεται.

Ερώτημα τρίτο: Όμοιο πρόβλημα, η εκφώνηση δεν αναφέρει το τύπο (άσε το format) των δεδομένων που δίνονται.

Για να γκρινιάξω ακόμα λίγο, η ημερομηνία σημαίνει έτος με ημέρα και μήνα. Πως προκύπτει ότι διαβάζουμε 4 αριθμούς;


Συμπληρωματική γκρίνια:
στην άσκηση 10 σελίδα 121 στην νέα έκδοση, αναφέρει ότι η κάθε επιλογή αποτελεί ξεχωριστό υποπρόγραμμα χωρίς να ζητείται να
γραφούν τα υποπρογράμματα αυτά.
Αγαπημένο σημείο της άσκησης βέβαια η τρίτη στήλη του πίνακα όπου και θα γίνει καταχώρηση του αριθμού τηλεφώνου ως χαρακτήρες.


akalest0s

Λύνοντας το εν λόγω θέμα στην τάξη, είπα να το ανεβάσω εδώ, να υπάρχει με τις διάφορες επεξηγήσεις... επειδή ο χρόνος μου είναι ελάχιστος, δεν πρόλαβα ακόμη.
Έχεις δίκιο σε όσα λες, είναι απλά άλλη μια κακοδιατυπωμένη εκφώνηση, που μυρίζεις τα νύχια σου να καταλάβεις τι θέλει να πει ο ποιητής.
Μια πρόχειρη (επαρκής;) υποσημείωση στην άσκηση θα ήταν:
"Θεωρείστε α) ότι οι ημερομηνίες ανήκουν στο ίδιο έτος (άρα δεν χρειάζεται να ασχοληθούμε με χρονολογίες), μορφής xx yy, για ημέρα και μήνα,
β) ότι ο μήνας έχει 30 ημέρες (δεν θυμάμαι αν αυτό όντως χρειάζεται, αλλά είναι 4 το πρωί και δεν θα το διπλοτσεκάρω τώρα  :D),
γ) Περιγραφή[500]: πίνακας ακεραίων, αν θες να εκμεταλλευτείς τα υποπρογράμματα που ήδη έχεις γράψει για ακεραίους, ή πίνακας χαρακτήρων (πιο λογικό, αλλά κουτό σαν στήσιμο άσκησης..),
δ) Κόστος[500]: πίνακας ακεραίων, ομοίως με πριν, ή πίνακας πραγματικών (όμοια με πριν..)

έχω σταματήσει να προβληματίζομαι για το τι μπορεί να ήθελε να πει το αγαπητό ΙΕΠ μέσα από αυτές τις φιλοσοφικές αναζητήσεις του. Good luck!

υγ> η άσκηση 10 κάπου βόσκει με βελτιωμένη εκφώνηση, νομίζω από κάποια ευλογημένη ψυχή, εδώ στο φόρουμ.. ψάξε την.
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

ansimeon

Συνάδελφοι, παραθέτω μια ενδεχόμενη λύση της άσκησης.
Ξεπέρασα τις ασάφειες που υπάρχουν θεωρώντας ότι οι ημερομηνίες αφορούν στην ίδια χρονιά, οι πίνακες ΗΜΕΡΑ και ΜΗΝΑΣ είναι ακέραιοι κλπ.
Περιμένω τις παρατηρήσεις σας.
ΠΡΟΓΡΑΜΜΑ Δαπάνες
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΗΜΕΡΑ[500], ΜΗΝΑΣ[500], i, j, temp1, η1, η2, μ1, μ2
  ΧΑΡΑΚΤΗΡΕΣ: ΠΕΡΙΓΡΑΦΗ[500], temp2
  ΠΡΑΓΜΑΤΙΚΕΣ: ΚΟΣΤΟΣ[500], temp3, S
ΑΡΧΗ
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΔΙΑΒΑΣΕ ΗΜΕΡΑ[i], ΜΗΝΑΣ[i], ΠΕΡΙΓΡΑΦΗ[i], ΚΟΣΤΟΣ[i] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 500
    ΓΙΑ j ΑΠΟ 500 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
      ΑΝ ΜΗΝΑΣ[j - 1] > ΜΗΝΑΣ[j] ΤΟΤΕ
        temp1 <- ΜΗΝΑΣ[j - 1] 
        ΜΗΝΑΣ[j - 1] <- ΜΗΝΑΣ[j] 
        ΜΗΝΑΣ[j] <- temp1
        temp1 <- ΗΜΕΡΑ[j - 1] 
        ΗΜΕΡΑ[j - 1] <- ΗΜΕΡΑ[j] 
        ΗΜΕΡΑ[j] <- temp1
        temp2 <- ΠΕΡΙΓΡΑΦΗ[j - 1] 
        ΠΕΡΙΓΡΑΦΗ[j - 1] <- ΠΕΡΙΓΡΑΦΗ[j] 
        ΠΕΡΙΓΡΑΦΗ[j] <- temp2
        temp3 <- ΚΟΣΤΟΣ[j - 1] 
        ΚΟΣΤΟΣ[j - 1] <- ΚΟΣΤΟΣ[j] 
        ΚΟΣΤΟΣ[j] <- temp3
      ΑΛΛΙΩΣ_ΑΝ ΜΗΝΑΣ[j - 1] = ΜΗΝΑΣ[j] ΤΟΤΕ
        ΑΝ ΗΜΕΡΑ[j - 1] > ΗΜΕΡΑ[j] ΤΟΤΕ
          temp1 <- ΗΜΕΡΑ[j - 1] 
          ΗΜΕΡΑ[j - 1] <- ΗΜΕΡΑ[j] 
          ΗΜΕΡΑ[j] <- temp1
          temp2 <- ΠΕΡΙΓΡΑΦΗ[j - 1] 
          ΠΕΡΙΓΡΑΦΗ[j - 1] <- ΠΕΡΙΓΡΑΦΗ[j] 
          ΠΕΡΙΓΡΑΦΗ[j] <- temp2
          temp3 <- ΚΟΣΤΟΣ[j - 1] 
          ΚΟΣΤΟΣ[j - 1] <- ΚΟΣΤΟΣ[j] 
          ΚΟΣΤΟΣ[j] <- temp3
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΔΙΑΒΑΣΕ η1, μ1
  ΔΙΑΒΑΣΕ η2, μ2
  ΑΝ ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ(η1, μ1, η2, μ2) ΤΟΤΕ
    ΚΑΛΕΣΕ ΑΝΤΙΜΕΤΑΘΕΣΗ(η1, μ1, η2, μ2) 
  ΤΕΛΟΣ_ΑΝ
  S <- 0
  ΓΡΑΨΕ 'Περιγραφή Δαπάνης, Ποσό Δαπάνης'
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΑΝ ((ΜΗΝΑΣ[i] = μ1 ΚΑΙ ΗΜΕΡΑ[i] >= η1) Η ΜΗΝΑΣ[i] > μ1) ΚΑΙ
      & ((ΜΗΝΑΣ[i] = μ2 ΚΑΙ ΗΜΕΡΑ[i] <= η2) Η ΜΗΝΑΣ[i] < μ2) ΤΟΤΕ
      ΓΡΑΨΕ ΠΕΡΙΓΡΑΦΗ[i], ΚΟΣΤΟΣ[i] 
      S <- S + ΚΟΣΤΟΣ[i] 
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Συνολικό ποσό δαπανών περιόδου:', S
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ(η1, μ1, η2, μ2): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: η1, μ1, η2, μ2, temp
ΑΡΧΗ
  ΑΝ μ1 > μ2 Η (μ1 = μ2 ΚΑΙ η1 > η2) ΤΟΤΕ
    ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ <- ΑΛΗΘΗΣ
  ΑΛΛΙΩΣ
    ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ <- ΨΕΥΔΗΣ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΙΑΔΙΚΑΣΙΑ ΑΝΤΙΜΕΤΑΘΕΣΗ(η1, μ1, η2, μ2) 
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: η1, μ1, η2, μ2, temp
ΑΡΧΗ
  temp <- μ1
  μ1 <- μ2
  μ2 <- temp
  temp <- η1
  η1 <- η2
  η2 <- temp
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ssimaiof

#5
Άσκηση 9 σελ. 120
Και η δική μου υλοποίηση. Χρησιμοποιώ 3 ΑΝΤΙΜΕΤΑΘΕΣΕ (για Ακεραίους, Χαρακτήρες και Πραγματικούς) με παρόμοια υλοποίηση.
ΠΡΟΓΡΑΜΜΑ Υποπρ_Ασκ_9
ΣΤΑΘΕΡΕΣ
  Ν = 5
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ημέρα[Ν], Μήνα[Ν], i, j, ΗΗ1, ΗΗ2, ΜΜ1, ΜΜ2
  ΠΡΑΓΜΑΤΙΚΕΣ: Κόστος[Ν], Άθρ
  ΧΑΡΑΚΤΗΡΕΣ: Περιγραφή[Ν] 
ΑΡΧΗ
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΓΡΑΨΕ 'Ημέρα     ', i, ' :  '
    ΔΙΑΒΑΣΕ Ημέρα[i] 
    ΓΡΑΨΕ 'Μήνας     ', i, ' :  '
    ΔΙΑΒΑΣΕ Μήνα[i] 
    ΓΡΑΨΕ 'Περιγραφή ', i, ' :  '
    ΔΙΑΒΑΣΕ Περιγραφή[i] 
    ΓΡΑΨΕ 'Κόστος    ', i, ' :  '
    ΔΙΑΒΑΣΕ Κόστος[i] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
    ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
      ΑΝ Έλεγχος_Ημερομηνίας(Ημέρα[j - 1], Μήνα[j - 1], Ημέρα[j], Μήνα[j]) ΤΟΤΕ
        ΚΑΛΕΣΕ ΑντιμετάθεσηΑκ(Ημέρα[j], Ημέρα[j - 1]) 
        ΚΑΛΕΣΕ ΑντιμετάθεσηΑκ(Μήνα[j], Μήνα[j - 1]) 
        ΚΑΛΕΣΕ ΑντιμετάθεσηΧαρ(Περιγραφή[j], Περιγραφή[j - 1]) 
        ΚΑΛΕΣΕ ΑντιμετάθεσηΠρ(Κόστος[j], Κόστος[j - 1]) 
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Εμφάνιση(Ημέρα, Μήνα, Περιγραφή, Κόστος) 

  ΓΡΑΨΕ 'Δώστε ΑΠΟ Ημέρα :  '
  ΔΙΑΒΑΣΕ ΗΗ1
  ΓΡΑΨΕ 'Δώστε ΑΠΟ Μήνα  :  '
  ΔΙΑΒΑΣΕ ΜΜ1
  ΓΡΑΨΕ 'Δώστε ΕΩΣ Ημέρα :  '
  ΔΙΑΒΑΣΕ ΗΗ2
  ΓΡΑΨΕ 'Δώστε ΕΩΣ Μήνα  :  '
  ΔΙΑΒΑΣΕ ΜΜ2

  Άθρ <- 0
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΑΝ Έλεγχος_Ημερομηνίας(Ημέρα[i], Μήνα[i], ΗΗ1, ΜΜ1) ΚΑΙ
      & Έλεγχος_Ημερομηνίας(ΗΗ2, ΜΜ2, Ημέρα[i], Μήνα[i]) ΤΟΤΕ
      ΓΡΑΨΕ Ημέρα[i], '/', Μήνα[i], ' ', Περιγραφή[i], ' ', Κόστος[i] 
      Άθρ <- Άθρ + Κόστος[i] 
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Κόστος Περιόδου = ', Άθρ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Έλεγχος_Ημερομηνίας(Ημ1, Μην1, Ημ2, Μην2): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ημ1, Μην1, Ημ2, Μην2
ΑΡΧΗ
  Έλεγχος_Ημερομηνίας <- Μην2 < Μην1 Η ((Μην2 = Μην1) ΚΑΙ (Ημ2 <= Ημ1)) 
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΙΑΔΙΚΑΣΙΑ ΑντιμετάθεσηΑκ(Χ, Υ) 
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Χ, Υ, Τ
ΑΡΧΗ
  Τ <- Χ
  Χ <- Υ
  Υ <- Τ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ ΑντιμετάθεσηΧαρ(Χ, Υ) 
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: Χ, Υ, Τ
ΑΡΧΗ
  Τ <- Χ
  Χ <- Υ
  Υ <- Τ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ ΑντιμετάθεσηΠρ(Χ, Υ) 
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: Χ, Υ, Τ
ΑΡΧΗ
  Τ <- Χ
  Χ <- Υ
  Υ <- Τ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ Εμφάνιση(Ημέρα, Μήνα, Περιγραφή, Κόστος) 
ΣΤΑΘΕΡΕΣ
  Ν = 5
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ημέρα[Ν], Μήνα[Ν], i
  ΠΡΑΓΜΑΤΙΚΕΣ: Κόστος[Ν] 
  ΧΑΡΑΚΤΗΡΕΣ: Περιγραφή[Ν] 
ΑΡΧΗ
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΓΡΑΨΕ Ημέρα[i], '/', Μήνα[i], ' ', Περιγραφή[i], ' ', Κόστος[i] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Σταύρος Σημαιοφορίδης

ολγα

#6
Παράθεση από: ansimeon στις 09 Φεβ 2020, 07:17:17 ΜΜ

Περιμένω τις παρατηρήσεις σας.


Το ζητούμενο είναι η αντιμετάθεση να γίνεται μέσα στο ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ.
Λέει η εκφώνηση:

4) Να γίνεται χρήση του υποπρογράμματος ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ, το οποίο να ελέγχει ότι
η 1η ημ/νια είναι μικρότερη από τη 2η ημ/νία. Στην αντίθετη περίπτωση να τις αντιμεταθέτει.
Να χρησιμοποιηθεί η διαδικασία ΑΝΤΙΜΕΤΑΘΕΣΗ, όπου χρειάζεται.

ολγα