α. προφανώς στο Α1 η εντολή είναι έγκυρη κι επομένως η μεταβλητή x είναι λογική. Αυτή η μορφή, ωστόσο, της εκχώρησης της τιμής λογικής έκφρασης βρίσκεται πουθενά διατυπωμένη στα σχολικά εγχειρίδια; (προφανώς τη διδάσκετε για να τη βάλετε στο διαγώνισμα, αλλά εγώ δεν έχω κάνει το ίδιο -κακώς?-)
Αυτή η μορφή, ωστόσο, της εκχώρησης της τιμής λογικής έκφρασης βρίσκεται πουθενά διατυπωμένη στα σχολικά εγχειρίδια; (προφανώς τη διδάσκετε για να τη βάλετε στο διαγώνισμα, αλλά εγώ δεν έχω κάνει το ίδιο -κακώς?-)Δε νομίζω ότι είναι κάτι που χρειάζεται να διατυπωθεί ή διδαχθεί ιδιαιτέρως : κάθε συνθήκη αποτιμάται τελικά σε μια λογική τιμή έτσι δεν είναι ; και κάθε λογική τιμή μπορεί να εκχωρηθεί σε μια λογική μεταβλητή. Γιατί λοιπόν να μην μπορεί να γραφτεί αυτό x <- α > β ;
Νομίζω ότι με την δημοσιοποιήση των θεμάτων πρέπει να γίνεται και αντίστοιχη εμφάνιση των ενδεικτικών λύσεων.Γιατί??
(πολύ λάμπα, ρε παιδιά... ;D)
Παιδιά παραθέτω μια ενδεικτική λύση για το 3ο θέμα, μόνο που το έγραψα σε Γλώσσα για να το τρέξω κιόλας!
Παρατηρήσεις, διορθώσεις, βελτιώσεις (που σιγουρα θα υπάρχουν) στη διάθεσή σας.
...
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 50
μεγ_πλ <- συν_καμ(κατ, ι, πλ[ι])
ΓΡΑΨΕ 'Οι περισσότεροι συνεχόμενοι καμένοι στην ', ι, 'η στοά είναι:', μεγ_πλ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
...
Δες πάλι τι ζητάει το Δ5 ερώτημα...!Έχεις δίκιο. Έλυσα παραλλαγή του υποερωτήματος... Βρήκα για κάθε στοά το μεγαλύτερο πληθος συνεχόμενων καμένων λαμπτήρων :D
Το πρόγραμμα δεν τερματίζει πρόωρα σε κάποιες περιπτώσεις (όταν μετά από εύστοχο πέναλτι της πρώτης ομάδας δεν χρειάζεται να ρίξει η δεύτερη).Έχεις δίκιο. Είπαμε θέλουν και οι δύο λύσεις βελτίωση-διόρθωση. Στο ένα τρώμε γκολ και στο άλλο μας καίγονται οι λάμπες :'(
π.χ. όταν το σκορ είναι 3-1 και εκτελεί η πρώτη και το βάζει.
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 50
ΑΝ ποσ_καμ[ι] = μεγ_ποσ_καμ ΤΟΤΕ
ΓΡΑΨΕ 'Στην ', ι, 'η στοά έχουμε μέγιστο ποσοστό καμένων λαμπτήρων'
ΓΡΑΨΕ μεγ_ποσ_καμ
ΤΕΛΟΣ_ΑΝ
ΑΝ ποσ_καμ[ι] = 100 ΤΟΤΕ
ΓΡΑΨΕ 'Η ', ι, 'η στοά δεν έχει καθόλου φωτισμό'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΣΥΝΑΡΤΗΣΗ συν_καμ(κατ_1, ι1, πλθ): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: κατ_1[50, 50], ι1, πλθ, ξ, κ, μεγ
ΑΡΧΗ
μεγ <- 0
κ <- 0
ΓΙΑ ξ ΑΠΟ 1 ΜΕΧΡΙ πλθ
ΑΝ κατ_1[ι1, ξ] = 0 ΤΟΤΕ
κ <- κ + 1
ΑΝ κ > μεγ ΤΟΤΕ
μεγ <- κ
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
κ <- 0
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
συν_καμ <- μεγ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Άσκοπος έλενχος για το μέγιστο κάθε φορά.
ΑΝ κατ_1[ι1, ξ] = 0 ΤΟΤΕ
κ <- κ + 1
ΑΛΛΙΩΣ
ΑΝ κ > μεγ ΤΟΤΕ
μεγ <- κ
ΤΕΛΟΣ_ΑΝ
κ <- 0
ΤΕΛΟΣ_ΑΝ
Άσκοπος έλενχος για το μέγιστο κάθε φορά.
ΑΝ κατ_1[ι1, ξ] = 0 ΤΟΤΕ
κ <- κ + 1
ΑΛΛΙΩΣ
ΑΝ κ > μεγ ΤΟΤΕ
μεγ <- κ
ΤΕΛΟΣ_ΑΝ
κ <- 0
ΤΕΛΟΣ_ΑΝ
έτσι θα γίνεται έλενχος μόνο όταν παύει το 'σερί'. φιλικά
Όσο για το διαγώνισμα το πρώτο θέμα ήταν απίστευτο!, παραγματικά πολύ όμορφο. όλα τα λεφτά!
Τα υπόλοιπα ήταν κλασσικά.
Χωρίς παρεξήση θα ήθελα να ρωτήσω 'Γιατί τέτοιο όνομα στην συνάρτηση στο τέταρτο θέμα?' χαχα :angel:
Τώρα γίνεται άσκοπος έλεγχος κάθε σε σερί με άσσους και όχι μηδενικά.
Πολύ καλή παρατήρηση αλλά τι θα γίνει όταν το σερί δεν παύει? ;)
Σε αυτή την περίπτωση αν το τελευταίο σερί είναι και το μεγαλύτερο θα υπάρξει πρόβλημα
Σε αυτό που προτείνεις μου φαίνεται ότι χρειάζεται ένας ακόμα ελέγχος έξω από την επανάληψη μήπως το τελευταίο σερί είναι το μεγαλύτερο
ΠΡΟΓΡΑΜΜΑ ΠΕΝΑΛΝΤΙ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΠΡΟΣΠ, ΣΚΟΡ_Α, ΣΚΟΡ_Β
ΧΑΡΑΚΤΗΡΕΣ: ΣΟΥΤ, ΟΜ_Α, ΟΜ_Β
ΛΟΓΙΚΕΣ: ΣΟΥΤ_Α, ΕΛΗΞΕ
ΑΡΧΗ
ΓΡΑΨΕ 'ΔΩΣΕ ΟΝΟΜΑΤΑ ΟΜΑΔΩΝ'
ΔΙΑΒΑΣΕ ΟΜ_Α, ΟΜ_Β
ΣΟΥΤ_Α <- ΑΛΗΘΗΣ
ΣΚΟΡ_Α <- 0
ΣΚΟΡ_Β <- 0
ΠΡΟΣΠ <- 1
ΕΛΗΞΕ <- ΨΕΥΔΗΣ
ΟΣΟ ΠΡΟΣΠ <= 10 ΚΑΙ ΕΛΗΞΕ = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
ΑΝ ΣΟΥΤ_Α = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Εκτελεί πέναλτι η ομάδα:', ΟΜ_Α
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ ΣΟΥΤ
ΜΕΧΡΙΣ_ΟΤΟΥ ΣΟΥΤ = 'Ε' Η ΣΟΥΤ = 'Α'
ΑΝ ΣΟΥΤ = 'Ε' ΤΟΤΕ
ΣΚΟΡ_Α <- ΣΚΟΡ_Α + 1
ΤΕΛΟΣ_ΑΝ
ΣΟΥΤ_Α <- ΨΕΥΔΗΣ
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Εκτελεί πέναλτι η ομάδα:', ΟΜ_Β
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ ΣΟΥΤ
ΜΕΧΡΙΣ_ΟΤΟΥ ΣΟΥΤ = 'Ε' Η ΣΟΥΤ = 'Α'
ΑΝ ΣΟΥΤ = 'Ε' ΤΟΤΕ
ΣΚΟΡ_Β <- ΣΚΟΡ_Β + 1
ΤΕΛΟΣ_ΑΝ
ΣΟΥΤ_Α <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ ΣΚΟΡ_Α, ΣΚΟΡ_Β
! ΤΡΟΠΟΙ ΛΗΞΗΣ
ΑΝ Α_Τ(ΣΚΟΡ_Α - ΣΚΟΡ_Β) = 3 ΚΑΙ ΠΡΟΣΠ > 5 ΤΟΤΕ
ΕΛΗΞΕ <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ_ΑΝ Α_Τ(ΣΚΟΡ_Α - ΣΚΟΡ_Β) = 2 ΚΑΙ ΠΡΟΣΠ >= 8 ΤΟΤΕ
ΕΛΗΞΕ <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΠΡΟΣΠ <- ΠΡΟΣΠ + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ΕΛΗΞΕ = ΨΕΥΔΗΣ ΤΟΤΕ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Εκτελεί πέναλτι η ομάδα:', ΟΜ_Α
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ ΣΟΥΤ
ΜΕΧΡΙΣ_ΟΤΟΥ ΣΟΥΤ = 'Ε' Η ΣΟΥΤ = 'Α'
ΑΝ ΣΟΥΤ = 'Ε' ΤΟΤΕ
ΣΚΟΡ_Α <- ΣΚΟΡ_Α + 1
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ 'Εκτελεί πέναλτι η ομάδα:', ΟΜ_Β
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ ΣΟΥΤ
ΜΕΧΡΙΣ_ΟΤΟΥ ΣΟΥΤ = 'Ε' Η ΣΟΥΤ = 'Α'
ΑΝ ΣΟΥΤ = 'Ε' ΤΟΤΕ
ΣΚΟΡ_Β <- ΣΚΟΡ_Β + 1
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ ΣΚΟΡ_Α <> ΣΚΟΡ_Β
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ 'ΚΥΠΕΛΟΥΧΟΣ 2010 – 11'
ΑΝ ΣΚΟΡ_Α > ΣΚΟΡ_Β ΤΟΤΕ
ΓΡΑΨΕ ΟΜ_Α
ΑΛΛΙΩΣ
ΓΡΑΨΕ ΟΜ_Β
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Θέμα Α
============
Α1.
1. Σ. Οι μόνες απαντήσεις που μπορεί να έχουν οι συγκριτικοί τελεστές είναι Αληθής ή Ψευδής άρα πρέπει να είναι λογική μεταβλητή.
2. Σ. Και οι χαρακτήρες μπορούν να συγκριθούν με >, < ή =.
3. Λ. Οι λογικές μεταβλητές συγκρίνονται μόνο με = ή <>.
4. Σ. Προκύπτει από το 1 και 3 ότι δεν γίνεται να είναι ίδιου τύπου.
5. Λ. Δεν είναι απαραίτητο και αφού λέει πρέπει είναι λάθος.
Α2.
1. Δεδομένα: 160 μαθητές, τα ονόματά τους και οι βαθμοί τους.
2. Ζητούμενα: Ο μέσος όρος και η εμφάνιση συγκεκριμένων ονομάτων.
3. Κατηγορία με βάση τη δυνατότητα επίλυσής του: Επιλύσιμο. (είναι υπολογιστικό αν ζητούσε με βάση το είδος επίλυσης).
4. Χρήση πίνακα: Ναι, γιατί πρέπει πρώτα να υπολογίζεται ο μέσος όρος και μετά να εμφανίζονται συγκεκριμένα ονόματα που θα πρέπει να έχουν κρατηθεί σε πίνακα.
Α3.
1. Π[3] <-- Π[3] * 1,3
2. Π[10] <-- Π[10] * 0,5
3. Π[1] <-- Π[1] * 3
4. ΑΝ Π[6] > 0 ΤΟΤΕ
ΒΡΕΘΗΚΕ <-- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
ΒΡΕΘΗΚΕ <-- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
5. ΒΡΕΘΗΚΕ <-- ΟΧΙ (ΒΡΕΘΗΚΕ)
6. i <-- Α_Μ (Π[2])
Α4.
α) Α. Για Ν=28 --> 32, Για Ν<>28 --> 10.
Β. Για Ν=31 --> 32, Για Ν=9 --> 10.
Γ. Για Ν=3 --> (1*2*1 + 2*2*2 + 8*2*3) - 16 = 48 – 16 = 32, Για Ν=2 --> (1*2*1 + 2*2*2) - 16 = 10 – 16 = -6.
Δ. Για Ν=4 --> (22 + 1 + 2 + 3 + 4) = 32.
Άρα η έξοδος είναι το 32 και οι είσοδοι: Α. 28, Β. 31, Γ. 3, Δ. 4.
β)
1. Α[Χ] <-- Χ
2. Α[ι] <-- ι
3. Όσο Χ <= _8_ επανάλαβε || Α[Χ] <-- Χ
4. Α[Χ-1] <-- Χ-1 || Μέχρις_ότου Χ > 8
Α5.
Θα πρέπει να εμφανιστούν 3 κομμάτια Α, Β και Γ:
Α: Για i από i1 μέχρι i2
Για j από j1 μέχρι j2
Εμφάνισε Π[ i , j ]
Τέλος_επανάληψης
Τέλος_επανάληψης
Β: Για i από i1+1 μέχρι i2
Για j από 1 μέχρι j1-1
Εμφάνισε Π[ i , j ]
Τέλος_επανάληψης
Τέλος_επανάληψης
Γ: Για i από i1 μέχρι i2-1
Για j από j2+1 μέχρι 12
Εμφάνισε Π[ i , j ]
Τέλος_επανάληψης
Τέλος_επανάληψης
Θέμα Β
============
Β1.
1. (Θέση1) ΑΚΕΡΑΙΕΣ: x, y, κ
(Θέση2) κ <-- Πράξη ( χ, y)
2. (Θέση3) ΣΥΝΑΡΤΗΣΗ Πράξη (α, β): ΑΚΕΡΑΙΑ
(Θέση4) ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
3. Το πρόγραμμα αυτό υπολογίζει πόσες φορές χωράει το χ στο y ή καλύτερα το αποτέλεσμα της ακέραιας διαίρεσης: y DIV χ.
Β2.
1. τελικές τιμές
δ temp T 1η 2η 3η 4η 5η 6η 7η 8η 9η 10η
9 200 6 10 5 15 50 100 150 200 300 400 400
2. Στο Τ κρατάμε την τελευταία θέση του πίνακα που έγινε αντιμετάθεση.
3. Είναι ένας αλγόριθμος φυσαλίδας για ταξινόμηση των στοιχείων από τον μικρότερο στον μεγαλύτερο (φυσαλίδα ταξινόμησης αύξουσας σειράς). Το Τα βοηθάει να μη γίνονται περιττές αντιμεταθέσεις.
4. ΑΝ Π[6] > 0 ΤΟΤΕ
ΒΡΕΘΗΚΕ <-- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
ΒΡΕΘΗΚΕ <-- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
Ένα λαθάκι:
Το ζητούμενο ήταν χωρίς τη χρήση δομής επιλογής:
ΒΡΕΘΗΚΕ <-- Π[6] > 0
Αλγόριθμος Θ3
Διάβασε ΟΜ1, ΟΜ2
Π1 <- 0
Π2 <- 0
ΓΚ1 <- 0
ΓΚ2 <- 0
Ι <- 1
ΕΛΗΞΕ <- ΨΕΥΔΗΣ
Όσο ΕΛΗΞΕ = ΨΕΥΔΗΣ επανάλαβε
Αν Ι mod 2 = 1 τότε
Εμφάνισε "Εκτελεί η ομάδα:", ΟΜ1
Π1 <- Π1+1
αλλιώς
Εμφάνισε "Εκτελεί η ομάδα:", ΟΜ2
Π2 <- Π2+1
Τέλος_αν
Αρχή_επανάληψης
Διάβασε ΑΠ
Μέχρις_ότου ΑΠ="ΕΥΣΤΟΧΟ" Ή ΑΠ="ΑΣΤΟΧΟ"
Αν ΑΠ="ΕΥΣΤΟΧΟ" τότε
Αν Ι mod 2 = 1 τότε
ΓΚ1<-ΓΚ1+1
αλλιώς
ΓΚ2<-ΓΚ2+1
Τέλος_αν
Tέλος_αν
Εμφάνισε ΓΚ1, “-”, ΓΚ2
Αν (Π1<5 Ή Π2<5) τότε
Αν (5-Π1<ΓΚ2-ΓΚ1) τότε
ΕΛΗΞΕ <- ΑΛΗΘΗΣ
Τέλος_αν
Αν (5-Π2<ΓΚ1-ΓΚ2) τότε
ΕΛΗΞΕ <- ΑΛΗΘΗΣ
Τέλος_αν
αλλιώς_αν Π1=Π2 τότε
Αν ΓΚ1 <> ΓΚ2 τότε
ΕΛΗΞΕ <- ΑΛΗΘΗΣ
Τέλος_αν
Τέλος_αν
Ι <- Ι +1
Τέλος_επανάληψης
Αν ΓΚ1 > ΓΚ2 τότε
Εμφάνισε ΟΜ1
αλλιώς
Εμφάνισε ΟΜ2
Τέλος_αν
Τέλος Θ3
ΠΡΟΓΡΑΜΜΑ Θ4
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Κ, Λ, Μ, ΛΑΜΠ[50], Σ, ΚΑΤ[50, 50], Σ_ΚΑΜ, ΠΛ, ΚΑΜ[50], ΜΑΧ, ΜΑΧ_ΣΤΟΑΣ, ΘΕΣΗ
ΛΟΓΙΚΕΣ: ΥΠΑΡΧΟΥΝ, ΣΚΟΤΕΙΝΗ
ΑΡΧΗ
! Εισαγωγή δεδομένων στον πίνακα ΛΑΜΠ | Πλήθος λαμπτήρων ανά στοά
Σ <- 0
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 50
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ Μ
ΜΕΧΡΙΣ_ΟΤΟΥ (Μ>=20 ΚΑΙ Μ<=500)
! Υπολογισμός πλήθους λαμπτήρων ανά στοά και αποθήκευση στον πίνακα ΛΑΜΠ
ΛΑΜΠ[Κ]<-Μ DIV 10
! Υπολογισμός συνόλου λαμπτήρων σε όλες τις στοές
Σ <- Σ + ΛΑΜΠ[Κ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ‘ΣΥΝΟΛΟ ΛΑΜΠΤΗΡΩΝ: ’, Σ
! Εισαγωγή δεδομένων στον πίνακα ΚΑΤ | Κατάσταση λαμπτήρων
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 50
! μέχρι το πλήθος των λαμπτήρων της συγκεκριμένης στοάς Κ | ΛΑΜΠ[Κ]
ΓΙΑ Λ ΑΠΟ 1 ΜΕΧΡΙ ΛΑΜΠ[Κ]
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ ΚΑΤ[Κ,Λ]
ΜΕΧΡΙΣ_ΟΤΟΥ (ΚΑΤ[Κ,Λ] =0 Ή ΚΑΤ[Κ,Λ] =1)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Υπολογισμός καμένων λαμπτήρων
Σ_ΚΑΜ <- 0
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 50
ΠΛ <- 0
ΓΙΑ Λ ΑΠΟ 1 ΜΕΧΡΙ ΛΑΜΠ[Κ]
ΑΝ ΚΑΤ[Κ,Λ] = 0 ΤΟΤΕ
ΠΛ <- ΠΛ + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! καμένοι ανά στοά
ΚΑΜ[Κ]<-ΠΛ
! καμένοι συνολικά
Σ_ΚΑΜ <- Σ_ΚΑΜ + ΠΛ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Δεν υπάρχει περίπτωση το Σ να είναι μηδέν εφόσον όλες οι στοές έχουν τουλάχιστον από 1 λαμπτήρα. Ελάχιστο μήκος στοάς 20 μέτρα.
ΓΡΑΨΕ ‘ΠΟΣΟΣΤΟ ΚΑΜΕΝΩΝ ΛΑΜΠΤΗΡΩΝ ΣΕ ΟΛΟΚΛΗΡΟ ΤΟ ΟΡΥΧΕΙΟ ‘, (Σ_ΚΑΜ/Σ)*100
!------------------------------
!Υπολογισμός μέγιστου ΠΟΣΟΣΤΟΥ καμένων/συνολικών ανά στοά
ΜΑΧ <- ΚΑΜ[1]/ΛΑΜΠ[1]
ΓΙΑ Κ ΑΠΟ 2 ΜΕΧΡΙ 50
ΑΝ ΚΑΜ[Κ]/ΛΑΜΠ[Κ] > ΜΑΧ ΤΟΤΕ
ΜΑΧ <- ΚΑΤ[Κ]/ΛΑΜΠ[Κ]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Εμφάνιση όσων είναι ίσα με το μέγιστο | Πιθανή ύπαρξη περισσότερων του ενός
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 50
ΑΝ ΚΑΜ[Κ]/ΛΑΜΠ[Κ] = ΜΑΧ ΤΟΤΕ
ΓΡΑΨΕ Κ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Η μεταβλητή ΥΠΑΡΧΟΥΝ δηλώνει εάν υπάρχουν σκοτεινές στοές
ΥΠΑΡΧΟΥΝ <- ΨΕΥΔΗΣ
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 50
! Η μεταβλητή ΣΚΟΤΕΙΝΗ δηλώνει αν η συγκεκριμένη στοά είναι σκοτεινή
! Έστω ότι είναι σκοτεινή
ΣΚΟΤΕΙΝΗ <- ΑΛΗΘΗΣ
ΓΙΑ Λ ΑΠΟ 1 ΜΕΧΡΙ ΛΑΜΠ[Κ]
! Αν βρεις έστω και έναν αναμμένο λαμπτήρα τότε δεν είναι σκοτεινή
ΑΝ ΚΑΤ[Κ,Λ] = 1 ΤΟΤΕ
ΣΚΟΤΕΙΝΗ <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Αν η συγκεκριμένη στοά είναι σκοτεινή τότε εμφάνισε τον αριθμό της και
! Η μεταβλητή ΥΠΑΡΧΟΥΝ γίνεται αληθής αφού υπάρχουν σκοτεινές στοές
ΑΝ ΣΚΟΤΕΙΝΗ = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ Κ
ΥΠΑΡΧΟΥΝ <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
!Η επανάληψη συνεχίζεται για τον έλεγχο της επόμενης στοάς
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ΥΠΑΡΧΟΥΝ = ΨΕΥΔΗΣ ΤΟΤΕ
ΓΡΑΨΕ ‘ΔΕΝ ΥΠΑΡΧΟΥΝ ΣΚΟΤΕΙΝΕΣ ΣΤΟΕΣ’
ΤΕΛΟΣ_ΑΝ
! Υποερώτημα Δ5
! Υπολογισμός μέγιστου πλήθους συνεχόμενων καμένων λαμπτήρων
ΜΑΧ <- -1
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 50
! Κλήση συνάρτησης
ΜΑΧ_ΣΤΟΑΣ <- ΣΥΝΕΧΟΜΕΝΟΙ_ΚΑΜΕΝΟΙ_ΣΤΟΑΣ(ΚΑΤ, ΛΑΜΠ, Κ)
ΑΝ ΜΑΧ_ΣΤΟΑΣ>ΜΑΧ ΤΟΤΕ
ΜΑΧ <- ΜΑΧ_ΣΤΟΑΣ
ΘΕΣΗ <- Κ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ‘ΜΕΓΙΣΤΟ ΠΛΗΘΟΣ ΣΥΝΕΧΟΜΕΝΩΝ ΚΑΜΕΝΩΝ ΛΑΜΠΤΗΡΩΝ ’, ΜΑΧ, ‘ ΣΤΗ ΣΤΟΑ ‘, ΘΕΣΗ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
!---------------------------------
ΣΥΝΑΡΤΗΣΗ ΣΥΝΕΧΟΜΕΝΟΙ_ΚΑΜΕΝΟΙ_ΣΤΟΑΣ (ΚΑΤ, ΛΑΜΠ, Κ):ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΚΑΤ[50, 50], ΛΑΜΠ[50], Κ, Λ, ΜΑΧ, Μ
ΛΟΓΙΚΕΣ: DONE
ΑΡΧΗ
Λ<-1
ΜΑΧ<- -1
! Έλεγξε όλους τους λαμπτήρες της στοάς
ΟΣΟ Λ <= ΛΑΜΠ[Κ] ΕΠΑΝΑΛΑΒΕ
Μ <- 0
DONE <- ΑΛΗΘΗΣ
! Όσο βρίσκεις καμένους, μέτρα τους χωριστά από την αρχική επανάληψη
! Χρησιμοποιώ τη μεταβλητή DONE για να αποφύγω να βγω εκτός πίνακα
ΟΣΟ (Λ <= ΛΑΜΠ[Κ] ΚΑΙ DONE=ΑΛΗΘΗΣ) ΕΠΑΝΑΛΑΒΕ
ΑΝ ΚΑΜ[Κ,Λ]=0 ΤΟΤΕ
Μ <- Μ + 1
Λ <- Λ + 1
ΑΛΛΙΩΣ
DONE <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αυτοί που μέτρησες είναι οι περισσότεροι μέχρι στιγμής;
ΑΝ Μ>ΜΑΧ ΤΟΤΕ
ΜΑΧ <- Μ
ΤΕΛΟΣ_ΑΝ
! Προχώρα στον επόμενο
! Ήδη το Λ έχει αυξηθεί και παραπάνω, όσο βρίσκω καμένους
Λ<-Λ+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΣΥΝΕΧΟΜΕΝΟΙ_ΚΑΜΕΝΟΙ_ΣΤΟΑΣ <- ΜΑΧ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Μια ενδεικτική λύση για το θέμα 4. Παρακαλώ αν εντοπίσετε λάθη να τα επισημάνετε.Κώδικας: [Επιλογή]ΣΥΝΑΡΤΗΣΗ ΣΥΝΕΧΟΜΕΝΟΙ_ΚΑΜΕΝΟΙ_ΣΤΟΑΣ (ΚΑΤ, ΛΑΜΠ, Κ):ΑΚΕΡΑΙΑ
Μια λεπτομέρεια : η συνάρτηση (που είναι και ωραία σαν λύση) πρέπει να πάρει σαν παράμετρο όχι τον πίνακα ΛΑΜΠ αλλά το τρέχων στοιχείο του.
Κατά πάσα πιθανότητα έχω ανάποδα τα i με τα j σε σχέση με την εκφώνηση. :)
Σ' αυτήν, τα +/-1 χρειάζονται επειδή οι πίνακες στην (ψευδο)ΓΛΩΣΣΑ είναι 1-based αντί 0-based, αλλιώς θα ήταν πολύ πιο απλή:Κώδικας: ΓΛΩΣΣΑ
ΓΙΑ ι ΑΠΟ (j1 - 1)*Ν + i1 - 1 ΜΕΧΡΙ (j2 - 1)*Ν + i2 - 1 ΓΡΑΨΕ Π[1 + ι MOD Ν, 1 + ι DIV Ν], ' ' ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ο Μέσος όρος των βαθμών είναι ζητούμενο; ή δεδομένο;
Αλγόριθμος πέναλτι
Διάβασε ο1, ο2
μ1 ← 0
μ2 ← 0
π ← 0
Αρχή_επανάληψης
π ← π + 1
εκτ1 ← π mod 2 = 1
Αν εκτ1 τότε
Εμφάνισε "Εκτελεί η ", ο1
αλλιώς
Εμφάνισε "Εκτελεί η ", ο2
Τέλος_αν
Αρχή_επανάληψης
Διάβασε πεν
Μέχρις_ότου πεν = "ΕΥΣΤΟΧΟ" ή πεν = "ΑΣΤΟΧΟ"
Αν πεν = "ΕΥΣΤΟΧΟ" τότε
Αν εκτ1 τότε
μ1 ← μ1 + 1
αλλιώς
μ2 ← μ2 + 1
Τέλος_αν
Τέλος_αν
Εμφάνισε "Σκορ : ", μ1, " - ", μ2
Αν π <= 10 τότε
!Αν το πέναλτι είναι εύστοχο ελέγχουμε αν κερδίζει η ομάδα που ευστόχησε
Αν πεν = "ΕΥΣΤΟΧΟ" τότε
Αν εκτ1 τότε
διαφορά ← μ1 - μ2
απομένουν ← 5 - ((π - 1) div 2)
αλλιώς
διαφορά ← μ2 - μ1
απομένουν ← 5 - (π div 2)
Τέλος_αν
αλλιώς
!Αν είναι άστοχο, ελέγχουμε αν χάνει η ομάδα που αστόχησε
Αν εκτ1 τότε
διαφορά ← μ2 - μ1
απομένουν ← 5 - (π + 1) div 2
αλλιώς
διαφορά ← μ1 - μ2
απομένουν ← 5 - (π div 2)
Τέλος_αν
Τέλος_αν
αλλιώς
διαφορά ← Α_Τ(μ1 - μ2)
Αν εκτ1 τότε
απομένουν ← 1
αλλιώς
απομένουν ← 0
Τέλος_αν
Τέλος_αν
Μέχρις_ότου διαφορά > απομένουν
Αν μ1 > μ2 τότε
Εμφάνισε "Κυπελλούχος - ", ο1
αλλιώς
Εμφάνισε "Κυπελλούχος - ", ο2
Τέλος_αν
Εμφάνισε "Σκορ : ", μ1, " - ", μ2
Τέλος πέναλτι
Θεωρώ ότι ο πιο ασφαλής τρόπος για να λυθεί η άσκηση σωστά, είναι να γίνει (για τα πρώτα 10 πέναλτι) μια ΟΣΟ με 5 επαναλήψεις και έναν διακόπτη (λογική μεταβλητή) και μέσα σε κάθε επανάληψη να αναπτύσσονται χώρια οι εκτελέσεις της 1ης ομάδας και της 2ης ομάδας. Είναι μακροσκελής λύση αλλά δουλεύει.
ΠΛ[Στοά] <-- Α_Μ( Μήκος / 10)
για άλλη μία φορά αποδείχτηκε ότι το διαγώνισμα το τελικό από το Στέκι δεν είχε καμία μα καμία σχέση με τα θέματα των Πανελλαδικών. Δυστυχώς ίσως κάποιοι απογοητεύτηκαν γιατί έχουν την αίσθηση ότι με δύσκολα θέματα αδικούνται οι μαθητές.... ( η αλήθεια είναι ότι αδικούνται οι ίδιοι από τα φροντιστήρια που κάνουν!!!!)
Άντε και του χρόνου συνάδελφοι!!!!
Στο Α2.4 νομίζω ότι η απάντηση θα έπρεπε να είναι αρνητική, καθώς ναι μεν πρέπει να κρατηθούν τα ονόματα και οι βαθμοί, αλλά αυτό μπορεί να γίνει και με 320 μεταβλητές. Ο μέσος όρος θα υπολογιστεί με μία (μεγαλούτσικη...) εντολή εκχώρησης και μετά χρειάζονται 160 απλές επιλογές του τύπου:
Αν β1>μο τότε
Εμφάνισε ον1
Τέλος_αν
Στο Α2.4 νομίζω ότι η απάντηση θα έπρεπε να είναι αρνητική, καθώς ναι μεν πρέπει να κρατηθούν τα ονόματα και οι βαθμοί, αλλά αυτό μπορεί να γίνει και με 320 μεταβλητές. Ο μέσος όρος θα υπολογιστεί με μία (μεγαλούτσικη...) εντολή εκχώρησης και μετά χρειάζονται 160 απλές επιλογές του τύπου:
Αν β1>μο τότε
Εμφάνισε ον1
Τέλος_αν
???
:P Αν οι μαθητές ήταν 1600?
Ό,τι δουλειά θα έκανε ένας πίνακας 1600 θέσεων, θα γινότανε με 1600 μεταβλητές.
Στην σελίδα 185 του σχολικού αναφέρει σχετικό παράδειγμα με θερμοκρασίες, όπου αναφέρει ότι η λύση με μεταβλητές είναι (προφανώς) σωστή, αλλά όχι προτιμητέα σε σχέση με τη χρήση πίνακα (επίσης προφανές).
Το ερώτημα, όμως, εδώ ήταν αν είναι απαραίτητη η χρήση πίνακα και όχι αν θα ήταν προτιμότερη.
το περσινό (και όχι μόνο) θέμα Γ Sergio :D
Συγνώμη για το spam
Απόλυτα σωστό.. μπορείς όμως να σκεφτείς κάποιο παράδειγμα στο οποίο (με βάση την προηγούμενη πρόταση) είναι απαραίτητη η χρήση πίνακα ;Όχι, δε μπορώ. Ο πίνακας μας λύνει τα χέρια προκειμένου να μη χρησιμοποιήσουμε πολλές διαφορετικές μεταβλητές.
.. Ο πίνακας μας λύνει τα χέρια προκειμένου να μη χρησιμοποιήσουμε πολλές διαφορετικές μεταβλητές..
..η λέξη "απαραίτητο" σημαίνει ότι δεν μπορεί να γίνει με άλλο τρόπο. Άρα θεωρώ ότι η απάντηση θα πρέπει να είναι όχι.
Να είναι σε θέση ο μαθητής να αποφασίζει αν είναι απαραίτητη η χρήση πίνακα
επομένως, θα μπορούσαμε να θεωρήσουμε τον 4ο διδακτικο στόχο του κεφαλαίου 9 .. άστοχο;Όχι βέβαια, διότι η λύση με πίνακα είναι απείρως προτιμότερη και ο μαθητής θα πρέπει να το καταλαβαίνει.
.. Αν κάποιος μαθητής απαντούσε (όπως μου απάντησε εμένα ένας δικός μου μαθητής) : "'Οχι, δεν είναι απαραίτητη η χρήση πίνακα, αλλά σαφώς είναι η καλύτερη λύση για την αποθήκευση των δεδομένων", θεωρείτε ότι έχει απαντήσει λάθος;
...
Αν η i1 ειναι κατα ενα μικροτερη απο τη i2 (δλδ i1=i2-1) τοτε η τριτη Για δεν ειναι επιτρεπτη γιατι θα δωσει λαθος αποτελεσματα.
...
Καλησπέρα!Καλησπέρα. Η λύση που δίνεις είναι μια καλή πρωτη προσπάθεια αλλά έχει αρκετά κενα.
Τυγχάνει μήπως κάποιος να έχει χρόνο να ελέγξει αν η παρακατω λυση για το Γ2 απο το 3ο θεμα
ειναι σωστή; ::)
http://postimg.org/image/6iiirdoyd/
Συγχωρέστε μου τα λάθη, δεν είμαι καθηγήτρια!