Θέματα Επανάληψης στην: Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΣΕΙΡΑ 2: Ασκήσεις Επανάληψης 1. Μία αεροπορική εταιρία χρεώνει τους επιβάτες σύμφωνα με την ηλικία και το βάρος των αποσκευών τους. Συγκεκριμένα: Τα άτομα ηλικίας έως και 4 ετών ταξιδεύουν δωρεάν. Άτομα μέχρι και 10 ετών θα πρέπει να πληρώσουν εισιτήριο. Τα άτομα άνω των 10 ετών θα πρέπει να πληρώσουν πέραν του εισιτηρίου και ποσό κλιμακωτά ανάλογο του βάρους των αποσκευών τους. Βάρος αποσκευών Κόστος /kgr (Kgr) Από 0 μέχρι και 20 0 Πάνω από 20 μέχρι και 50 1,5 Πέραν των 50 2,5 Να γίνει αλγόριθμος ο οποίος για τους επιβάτες μιας πτήσης: α. Να ζητάει το έτος γέννησης των ατόμων, το κόστος του εισιτηρίου καθώς και το βάρος των αποσκευών τους, μέχρι να δοθεί ως έτος γέννησης τιμή μικρότερη του 1900, (βρισκόμαστε στο έτος 2015). β. Αν η ηλικία είναι μικρότερη ή ίση των 4 ετών να εμφανίζει το μήνυμα 'Ταξιδεύετε δωρεάν'. γ. Αν το άτομο είναι άνω των 4 ετών να υπολογίζει και να εμφανίζει το ποσό το οποίο πρέπει να πληρώσει. δ. Στο τέλος να υπολογίζεται και να εμφανίζεται ο μέσος όρος του ποσού μεταφοράς. ε. Να υπολογίζει και να εμφανίζει τα ποσά που θα πληρώσουν οι δύο τελευταίοι επιβάτες της πτήσης (θεωρήστε ότι τουλάχιστον δύο επιβάτες θα υπάρχουν). ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ1 ΠΡΑΓΜΑΤΙΚΕΣ: Κ, Π, ΜΟ, S ΑΚΕΡΑΙΕΣ: Β, ET, ΠΛ! ΤΟ S ΕΙΝΑΙ ΤΟ ΣΥΝΟΛΙΚΟ ΠΟΣΟ ΠΟΥ ΘΑ ΠΛΗΡΩΣΟΥΝ ΟΙ ΕΠΙΒΑΤΕΣ! ΤΟ ΠΛ ΕΙΝΑΙ ΤΟ ΠΛΗΘΟΣ ΤΩΝ ΕΠΙΒΑΤΩΝ, ΤΟ ΧΡΕΙΑΖΟΜΑΣΤΕ ΓΙΑ ΝΑ ΥΠΟΛΟΓΙΣΟΥΜΕ ΤΟ! ΜΕΣΟ ΟΡΟ S ß 0 ΠΛ ß 0 ΓΡΑΨΕ 'ΔΩΣΕ ΕΤΟΣ ΓΕΝΝΗΣΗΣ ΑΤΟΜΟΥ' ΔΙΑΒΑΣΕ ΕΤ ΟΣΟ ΕΤ>=1900 ΕΠΑΝΑΛΑΒΕ ΓΡΑΨΕ 'ΔΩΣΕ ΚΟΣΤΟΣ ΕΙΣΙΤΗΡΙΟΥ' ΔΙΑΒΑΣΕ Κ ΓΡΑΨΕ 'ΔΩΣΕ ΒΑΡΟΣ ΑΠΟΣΚΕΥΩΝ' ΔΙΑΒΑΣΕ Β! Ο ΥΠΟΛΟΓΙΣΜΟΣ ΤΗΣ ΗΛΙΚΙΑΣ ΕΙΝΑΙ ΤΟ ΕΤΟΣ ΠΟΥ ΒΡΙΣΚΟΜΑΣΤΕ ΤΟ ΕΤΟΣ ΓΕΝΝΗΣΗΣ 1
ΑΝ 2017 ΕΤ<=4 ΤΟΤΕ ΓΡΑΨΕ 'ΤΑΞΙΔΕΥΕΤΕ ΔΩΡΕΑΝ' Π ß 0 _ΑΝ 2017 ΕΤ <=10 ΤΟΤΕ Π ß Κ ΓΡΑΨΕ Π, ' '! ΑΝ ΕΙΝΑΙ ΠΑΝΩ ΑΠΟ 10 ΕΤΩΝ ΤΟ ΠΟΣΟ ΕΙΝΑΙ ΤΟ ΕΙΣΙΤΗΡΙΟ + ΤΟ ΚΟΣΤΟΣ ΑΠΟΣΚΕΥΩΝ! ΚΛΙΜΑΚΩΤΑ ΑΝ Β<=20 ΤΟΤΕ Π ß 0*Β + Κ _ΑΝ Β<=50 ΤΟΤΕ Π ß 0*20+1.5*(Β-20) + Κ Π ß 0*20+1.5*30+2.5*(Β-50) + Κ ΓΡΑΨΕ Π, ' ' S ß S + Π ΠΛ ß ΠΛ + 1 ΑΝ ΠΛ = 1 ΤΟΤΕ Α ß Π Β ß Α Α ß Π ΓΡΑΨΕ 'ΔΩΣΕ ΕΤΟΣ ΓΕΝΝΗΣΗΣ ΑΤΟΜΟΥ' ΔΙΑΒΑΣΕ ΕΤ ΜΟ ß S/ΠΛ ΓΡΑΨΕ Ο ΜΕΣΟΣ ΟΡΟΣ ΤΟΥ ΠΟΣΟΥ ΜΕΤΑΦΟΡΑΣ ΕΙΝΑΙ, ΜΟ ΓΡΑΨΕ Α, Β, ΘΑ ΠΛΗΡΩΣΟΥΝ ΟΙ ΔΥΟ ΤΕΛΕΥΤΑΙΟΙ ΕΠΙΒΑΤΕΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ 2. Μία αεροπορική εταιρία για κάθε πτήση καταγράφει τα ονόματα των ατόμων, το κόστος του εισιτηρίου καθώς και την ηλικία τους. Να γίνει αλγόριθμος ο οποίος: α. Να ζητάει για κάθε πτήση τον αριθμό των ατόμων. β. Να ζητάει τα παραπάνω στοιχεία (όνομα, κόστος, ηλικία) για κάθε άτομο. γ. Να εμφανίζει το μέσο όρο κόστους της κάθε πτήσης. δ. Να εμφανίζει το όνομα του πελάτη με το μεγαλύτερο κόστος εισιτηρίου για κάθε πτήση. ε. Να εμφανίζει το πλήθος των πελατών με ηλικία: (για κάθε πτήση) Από 0 έως και 4 ετών (Κατηγορία Α) Από 4 έως και 10 ετών (Κατηγορία Β) Άνω των 10 ετών (Κατηγορία Γ) στ. Να εμφανίζει την κατηγορία με τα περισσότερα άτομα για κάθε πτήση. 2
ζ. Να δέχεται απάντηση 'ΝΑΙ' 'ΟΧΙ' για τη συνέχεια η τον τερματισμό της επανάληψης μετά την εμφάνιση σχετικού μηνύματος, δηλαδή αν υπάρχει και άλλη πτήση. ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ2 ΠΡΑΓΜΑΤΙΚΕΣ: Κ, Σ, ΜΟ, ΜΑΧ_Κ, ΜΑΧ ΑΚΕΡΑΙΕΣ: Η, Π, Π1, Π2, Π3, ΠΛ ΧΑΡΑΚΤΗΡΕΣ: ΟΝ, ΜΑΧ_ΟΝ, ΜΑΧ_ΚΑΤ, ΑΠ! Η ΟΛΗ ΔΙΑΔΙΚΑΣΙΑ ΘΑ ΠΡΕΠΕΙ ΝΑ ΕΠΑΝΑΛΑΜΒΑΝΕΤΑΙ ΑΝΑΛΟΓΑ ΜΕ ΤΗΝ ΑΠΑΝΤΗΣΗ! ΝΑΙ ΟΧΙ! ΕΠΕΙΔΗ ΟΙ ΕΝΕΡΓΕΙΕΣ ΘΑ ΕΚΤΕΛΕΣΤΟΥΝ ΣΙΓΟΥΡΑ ΜΙΑ ΦΟΡΑ, ΒΟΛΕΥΕΙ ΝΑ! ΧΡΗΣΙΜΟΠΟΙΗΣΟΥΜΕ ΤΗ ΔΟΜΗ! ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΟΤΟΥ, ΜΙΑ ΠΤΗΣΗ ΥΠΑΡΧΕΙ,! ΡΩΤΟΥΜΕ ΑΝ ΥΠΑΡΧΕΙ ΚΑΙ ΑΛΛΗ ΠΤΗΣΗ _ΕΠΑΝΑΛΗΨΗΣ Σ ß 0 Π1 ß 0 Π2 ß 0 Π3 ß 0 ΜΑΧ_Κ ß 0! ΤΟ ΠΛΗΘΟΣ ΤΩΝ ΑΤΟΜΩΝ ΔΕΝ ΤΟ ΓΝΩΡΙΖΟΥΜΕ ΕΞ Σ, ΤΟ ΔΙΑΒΑΖΟΥΜΕ, ΕΔΩ ΔΕΝ! ΜΠΟΡΟΥΜΕ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΟΥΜΕ ΠΙΝΑΚΑ ΓΡΑΨΕ 'ΔΩΣΕ ΑΡΙΘΜΟ ΑΤΟΜΩΝ' ΔΙΑΒΑΣΕ ΠΛ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΠΛ ΓΡΑΨΕ 'ΔΩΣΕ ΚΟΣΤΟΣ ΕΙΣΙΤΗΡΙΟΥ ΚΑΙ ΟΝΟΜΑ ΔΙΑΒΑΣΕ Κ, ΟΝ Σ ß Σ + Κ ΑΝ ΜΑΧ_Κ<Κ ΤΟΤΕ ΜΑΧ_Κ ß Κ ΜΑΧ_ΟΝ ß ΟΝ ΑΝ Η<=4 ΤΟΤΕ Π1 ß Π1 + 1 _ΑΝ Η<=10 ΤΟΤΕ Π2 ß Π2 + 1 Π3 ß Π3 + 1 ΜΟ ß Σ/ΠΛ ΓΡΑΨΕ 'ΜΕΣΟΣ ΟΡΟΣ ΚΟΣΤΟΥΣ', ΜΟ, ' ' ΓΡΑΨΕ ΜAΧ_ΟΝ, 'ΤΟ ΑΤΟΜΟ ΜΕ ΤΟ ΜΕΓΑΛΥΤΕΡΟ ΚΟΣΤΟΣ & ΕΙΣΙΤΗΡΙΟΥ' ΓΡΑΨΕ 'ΚΑΤΗΓΟΡΙΑ Α', Π1, 'ΑΤΟΜΑ' ΓΡΑΨΕ 'ΚΑΤΗΓΟΡΙΑ Β', Π2, 'ΑΤΟΜΑ' ΓΡΑΨΕ 'ΚΑΤΗΓΟΡΙΑ Γ', Π3, 'ΑΤΟΜΑ' ΜΑΧ ß Π1 ΜΑΧ_ΚΑΤ ß 'ΚΑΤΗΓΟΡΙΑ Α' 3
ΑΝ ΜΑΧ<Π2 ΤΟΤΕ ΜΑΧ ß Π2 ΜΑΧ_ΚΑΤ ß 'ΚΑΤΗΓΟΡΙΑ Β' ΑΝ ΜΑΧ<Π3 ΤΟΤΕ ΜΑΧ ß Π3 ΜΑΧ_ΚΑΤ ß 'ΚΑΤΗΓΟΡΙΑ Γ' ΓΡΑΨΕ ΜΑΧ_ΚΑΤ, 'Η ΚΑΤΗΓΟΡΙΑ ΜΕ ΤΑ ΠΕΡΙΣΣΟΤΕΡΑ ΑΤΟΜΑ' ΓΡΑΨΕ 'ΥΠΑΡΧΕΙ ΑΛΛΗ ΠΤΗΣΗ' ΔΙΑΒΑΣΕ ΑΠ ΜΕΧΡΙΣ_ΟΤΟΥ ΑΠ='ΟΧΙ' ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ 3. (Όταν ξεπεράσει) Για την αγορά ενός αυτοκινήτου ένας αγοραστής σύναψε δάνειο με την τράπεζα. Η πρώτη μηνιαία δόση του δανείου είναι 200, ενώ κάθε εξάμηνο η δόση αυξάνεται κατά 50 μέχρι το ποσό των 600 (η δόση δεν μπορεί να ξεπεράσει τα 600 ). Με τη συμπλήρωση κάθε έτους το υπολειπόμενο ποσό τοκίζεται με 10%. Να γίνει αλγόριθμος που να ζητά το ποσό του δανείου και να εμφανίζει το πλήθος των μηνών της αποπληρωμής του δανείου. 2 ος τρόπος Αλγόριθμος Θέμα_3 Διάβασε Π Δ ß 200 Μ ß 0 Sum ß 0 Όσο Sum < Π Επανάλαβε Sum ß Sum + Δ Μ ß Μ + 1! κάθε εξάμηνο Μ MOD 6=0, ακέραιο πολλαπλάσιο του 6 Αν Μ MOD 6 =0 τότε Αν Δ+50<=600 τότε Δ ß Δ + 50! κάθε εξάμηνο Μ MOD 12=0, ακέραιο πολλαπλάσιο του 12 Αν Μ MOD 12 = 0 και Sum < Π τότε! υπολογίζουμε το υπόλοιπο, Ποσό ότι έχουμε πληρώσει μέχρι τώρα Υπ ß Π Sum! υπολογίζουμε την αύξηση, το 10% του υπολοίπου Αυξ ß Υπ*10/100! αυξάνουμε το ποσό που πρέπει να πληρώσουμε σύμφωνα με την αύξηση Π ß Π + Αυξ Τέλος_Επανάληψης Διάβασε Π Δ ß 200 Μ ß 0 Υπ ß Π Όσο Υπ>0 Επανάλαβε Υπ ß Υπ Δ Μ ß Μ + 1 Αν Μ MOD 6 =0 τότε Αν Δ+50<=600 τότε Δ ß Δ + 50 Αν Μ MOD 12 =0 και Υπ > 0 τότε Υπ ß Υπ + Υπ*10/100 Τέλος_Επανάληψης Εµφάνισε Μ, 'Μήνες' 4
Εμφάνισε Μ, 'Μήνες' Τέλος Θέμα_6 4. (Πριν ξεπεράσει) Ένας καταναλωτής αγοράζει διάφορα είδη. Να γίνει πρόγραμμα το οποίο να ζητά τα χρήματα που διαθέτει για αγορές και το κόστος κάθε είδους και να υπολογίζει και να εμφανίζει το πλήθος των ειδών που θα αγοράσει και τα χρήματα που θα περισσέψουν. Η διαδικασία να τερματίζεται πριν ξεπεράσει το ποσό που διαθέτει. Επίσης πόσα προϊόντα ήταν ακριβότερα από το πρώτο που αγοράστηκε. Αλγόριθμος θέμα4 S ß 0 Π ß 0 Π1 ß 0 Διάβασε Ποσό Διάβασε Κόστος Όσο S+Κόστος <= Ποσό Επανάλαβε S ß S + Κόστος Π ß Π + 1 Αν Π = 1 τότε Κόστος_πρ ß Κόστος Αλλιώς Αν Κόστος > Κόστος_Πρ τότε Π1 ß Π1 + 1 Διάβασε Κόστος Υπόλοιπο ß Ποσό S Εμφάνισε το υπόλοιπο είναι, Υπόλοιπο Εμφάνισε το πλήθος των ειδών είναι, Π Εμφάνισε Π1, προϊόντα ακριβότερα από το & πρώτο Τέλος θέμα4 Το S είναι το συνολικό ποσό που ξοδεύουµε, Κόστος είναι το κόστος του κάθε προϊόντος που θέλουµε να αγοράσουµε και Ποσό είναι το συνολικό ποσό που διαθέτουµε. Η επανάληψη θα σταµατήσει όταν το συνολικό ποσό που έχουµε ξοδέψει S και το κόστος του προϊόντος που θέλουµε να αγοράσουµε Κόστος (S+Κόστος), θα γίνει µεγαλύτερο από το ποσό (Ποσό) που διαθέτουµε. 2 ος τρόπος Π ß 0 Π1 ß 0 Διάβασε Ποσό Διάβασε Κόστος Όσο Κόστος <= Ποσό Επανάλαβε Ποσό ß Ποσό - Κόστος Π ß Π + 1 Αν Π = 1 τότε Κόστος_πρ ß Κόστος Αλλιώς Αν Κόστος > Κόστος_Πρ τότε Π1 ß Π1 + 1 Διάβασε Κόστος Εμφάνισε το υπόλοιπο είναι, Ποσό Εμφάνισε το πλήθος των ειδών είναι, Π Εμφάνισε Π1, προϊόντα ακριβότερα από το πρώτο 5. Να γίνει αλγόριθμος ο οποίος να διαβάζει Π θετικούς αριθμούς και να υπολογίζει τον μεγαλύτερο αριθμό. Ο μεγαλύτερος αριθμός μπορεί να δοθεί πολλές φορές. Να βρίσκει πότε δόθηκε η πρώτη και πότε η τελευταία μέγιστη τιμή καθώς και πόσες φορές παρατηρήθηκε. Αλγόριθμος θεμα5 Διάβασε Π 5
max ß 0 Για Ι από 1 μέχρι Π Διάβασε Χ Αν max < X τότε max ß X Max_Θ_1 ß Ι Πλ ß 0 Αν max = X τότε Max_Θ_last ß Ι Πλ ß Πλ + 1 Εμφάνισε max, το μεγαλύτερο Εμφάνισε την, Max_Θ_1, φορά δόθηκε η πρώτη τιμή Εμφάνισε την, Max_Θ_last, φορά δόθηκε η τελευταία τιμή Εμφάνισε Πλ, φορές παρατηρήθηκε το μέγιστο Τέλος θεμα5 6. Στα πλαίσια της αξιολόγησης ενός σχολικού συγκροτήματος καταγράφονται οι βαθμοί των μαθητών του και κατατάσσονται σε 3 κατηγορίες. Κατηγορία Βαθμοί Γ 1 10 Β 11 15 Α 16 20 Να γίνει αλγόριθμος ο οποίος: α. Να ζητά το βαθμό κάθε μαθητή, ελέγχοντας την τιμή του από 1 έως 20 (θεωρείστε ότι οι βαθμοί που θα δοθούν είναι ακέραιοι). β. Να υπολογίζει και να εμφανίζει το μεγαλύτερο βαθμό που καταγράφηκε. γ. Να υπολογίζει και να εμφανίζει τα πλήθη και τα ποσοστά των μαθητών κάθε κατηγορίας. δ. Η διαδικασία να τερματίζεται όταν δοθεί απάντηση "ΟΧΙ" σε ερώτηση για το αν υπάρχει άλλος μαθητής. ε. Μέσω υποπρογράμματος να ελέγχει και να εμφανίζει μήνυμα στο οποίο το σχολικό συγκρότημα να χαρακτηρίζεται με: Υψηλό Επίπεδο, αν πλειοψηφούν τα άτομα στην κατηγορία Α Μέτριο Επίπεδο, αν πλειοψηφούν τα άτομα στην κατηγορία Β Χαμηλό Επίπεδο, αν πλειοψηφούν τα άτομα στην κατηγορία Γ. στ. Να βρίσκει και να εμφανίζει το βαθμό που παρατηρήθηκε τις περισσότερες φορές. 6
Πρόγραμμα Θέμα6 Μεταβλητές Ακέραιες: Ι, Π1, Π2, Π3, Π[20], Β, max, maxb, max_βαθ Αρχή Για Ι από 1 μέχρι 20 Π[Ι] ß 0 Π1 ß 0 Π2 ß 0 Π3 ß 0 max ß 0 Αρχή_επανάληψης Γράψε "Δώσε βαθμό" Διάβασε Β Όσο Β<1 ή Β>20 Επανάλαβε Γράψε "λάθος" Γράψε "Δώσε βαθμό" Διάβασε Β Αν max<β τότε max ß B Αν Β<=10 τότε Π1 ß Π1 + 1 Αλλίως_αν B<=15 τότε Π2 ß Π2 + 1 Αλλίως Π3 ß Π3 + 1 Για Ι από 1 μέχρι 20 Αν Β = Ι τότε Π[Ι] ß Π[Ι] + 1 Π[Β] ß Π[Β] + 1 Γράψε "Υπάρχει άλλος μαθητής;" Διάβασε Απ Μέχρις_ότου Απ="ΟΧΙ" Γράψε max, Π1, Π2, Π3 SΠ ß Π1 + Π2 +Π3 Ποσ1 ß Π1*100/SΠ Ποσ2 ß Π2*100/SΠ Ποσ3 ß Π3*100/SΠ Γράψε Ποσ1, Ποσ2, Ποσ3 Κάλεσε Υπολ(Π1, Π2, Π3) maxb ß Π[1] max_βαθ ß 1 Για Ι από 2 μέχρι 20 Αν maxb<π[ι] τότε maxb ß Π[Ι] 7
max_βαθ ß Ι Γράψε max_βαθ Τέλος_Προγράμματος Διαδικασία Υπολ(Π1, Π2, Π3) Μεταβλητές Ακέραιες: Π1, Π2, Π3, maxk Χαρακτήρες: max_name Αρχή maxk ß Π1 max_name ß " Χαμηλό Επίπεδο" Αν maxk<π2 τότε maxk ß Π2 max_name ß "Μέτριο Επίπεδο" Αν maxk<π3 τότε maxk ß Π3 max_name ß "Υψηλό Επίπεδο" Γράψε max_name Τέλος_Διαδικασίας 7. Στον ετήσιο διαγωνισμό πληροφορικής που διοργανώνει η Ένωση Πληροφορικών μπορούν να συμμετέχουν μαθητές απ όλη την Ελλάδα. Κάθε υποψήφιος διαγωνίζεται σε 6 θεματικές ενότητες και βαθμολογείται στην εικοσαβάθμια κλίμακα [1-20]. Ο τελικός βαθμός του κάθε υποψηφίου προκύπτει από το μέσο όρο του μεγαλύτερου και του μικρότερου βαθμού στις 6 ενότητες. Βραβεύονται οι 3 καλύτεροι μαθητές και ο πρώτος κερδίζει το δικαίωμα συμμετοχής στην Ολυμπιάδα της Πληροφορικής. Να γραφεί αλγόριθμος ο οποίος: Να διαβάζει για κάθε υποψήφιο το όνομά του και τους βαθμούς του σε κάθε μια από τις 6 θεματικές ενότητες ελέγχοντας την ορθότητα εισαγωγής των δεδομένων όσον αφορά τους βαθμούς. Να υπολογίζει και θα εμφανίζει τον τελικό βαθμό του κάθε υποψηφίου. Να εμφανίζει το όνομα του υποψήφιου με τον μικρότερο μέσο όρο (θεωρείστε ότι αυτός είναι μοναδικός). Να εμφανίζει τους 3 τελικούς βαθμούς που θα βραβευτούν. Να εμφανίζει το όνομα του υποψήφιου που κερδίζει το δικαίωμα συμμετοχή στην Ολυμπιάδα Πληροφορικής. Η διαδικασία εισαγωγής δεδομένων θα σταματά όταν δοθεί σαν όνομα μαθητή η λέξη ''Τέλος''. (Θεωρείστε πως δεν υπάρχει περίπτωση ισοβαθμίας στους μέσους όρους και θα υπάρχουν 3 τουλάχιστον υποψήφιοι.) 8
Αλγόριθμος Θέμα7 min ß 21 max1 ß 0 max2 ß 0 max3 ß 0 Δίαβασε ΟΝ Όσο ΟΝ< > ''Τέλος'' Επανάλαβε max1 ß 0 min1ß21 Για Ι από 1 μέχρι 6 Αρχή_επανάληψης Διάβασε Β Μέχρις_ότου Β>=1 και Β<=20 Αν max1<b τοτε max1 ß B Τελος_αν Αν min1>b τοτε min1 ß B Τελος_αν ΜΟ ß (max1+min1) / 2 Εμφάνισε ΜΟ Αν ΜΟ<min Τότε min ß MO min_ον ß ΟΝ Αν ΜΟ>max1 τότε max3 ß max2 max2 ß max1 max1 ß MO max1_ον ß ΟΝ Αλλιώς_αν ΜΟ>max2 τότε max3 ß max2 max2 ß MO Αλλιώς_αν ΜΟ>max3 τότε max3 ß ΜΟ Διάβασε ΟΝ Εμφάνισε max1, max2, max3 Εμφάνισε min_ον, max1_ον Τέλος Θέμα7 8. Στο τέλος κάθε έτους μια εταιρία αποφάσισε να κάνει έναν οικονομικό απολογισμό των ποσών που έχουν δοθεί, μέσα στο έτος, για την κάλυψη των λειτουργικών εξόδων της. Συγκεκριμένα η εταιρία κάθε μήνα πληρώνει τους προμηθευτές της. Να γίνει πρόγραμμα το οποίο: 9
α. Να ζητά το όνομα κάθε προμηθευτή και το ποσό που του δόθηκε κάθε μήνα του έτους (να γίνεται έλεγχος για το ποσό το οποίο πρέπει να είναι θετικός ή μηδέν και πολλαπλάσιο του 100, θεωρείστε ότι θα είναι ακέραιος). β. Να υπολογίζει και να εμφανίζει το συνολικό ποσό που έχει δοθεί για κάθε προμηθευτή στο έτος. γ. Να υπολογίζει και να εμφανίζει για κάθε προμηθευτή κατάλληλο μήνυμα αν 3 συνεχόμενους μήνες δόθηκε ποσό πάνω από 500. Αν δεν έχει βρεθεί για κανένας προμηθευτή να εμφανίζει κατάλληλο μήνυμα. δ. Να υπολογίζει και να εμφανίζει τα δύο μεγαλύτερα ποσά εσόδων για κάθε προμηθευτή καθώς και πόσες φορές παρατηρήθηκε η κάθε τιμή. ε. Η διαδικασία να τερματίζεται όταν δοθεί ως απάντηση ('ΟΧΙ') σε ερώτηση για το αν υπάρχει άλλος προμηθευτής, ενώ αν η απάντηση είναι ('ΝΑΙ') να συνεχίζει (δεν απαιτείται έλεγχος τιμής). στ. Να εμφανίζει το πλήθος και τα ονόματα των προμηθευτών με μέγιστο ποσό πάνω από 1000 ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ8 ΑΚΕΡΑΙΕΣ: Π1, Π2, Ι, Π, S, MAX1, MAX_2, ΠΤ1, ΠΤ2, ΠΛ ΧΑΡΑΚΤΗΡΕΣ: ΑΠ, ΟΝ ΠΡΑΓΜΑΤΙΚΕΣ: MO ΛΟΓΙΚΕΣ: D1, D2 Π2 ß 0 SA ß 0 Π3 ß 0 D2 ß ΨΕΥΔΗΣ _ΕΠΑΝΑΛΗΨΗΣ S ß 0 Π1 ß 0 ΜΑΧ1 ß 0 ΠT1 ß 0 ΠΛ ß 0 D1 ß ΨΕΥΔΗΣ ΓΡΑΨΕ 'ΔΩΣΕ ΟΝΟΜΑ' ΔΙΑΒΑΣΕ ΟΝ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 12 _ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΔΩΣΕ ΠΟΣΟ' ΔΙΑΒΑΣΕ Π ΜΕΧΡΙΣ_ΟΤΟΥ Π>=0 ΚΑΙ Π MOD 100=0 S ß S + Π ΑΝ Π>500 ΤΟΤΕ ΠΛ ß ΠΛ + 1 ΠΛ ß 0 10
ΑΝ ΠΛ=3 ΤΟΤΕ D1 ß ΑΛΗΘΗΣ ΑΝ ΜΑΧ1 < Π ΤΟΤΕ ΜΑΧ2 ß ΜΑΧ1 ΠΤ2 ß ΠΤ1 ΜΑΧ1 ß Π ΠΤ1 ß 0 ΑΝ ΜΑΧ2 < Π ΚΑΙ ΜΑΧ1 > Π TOTE MAX2 ß Π ΠΤ2 ß 0 ΑΝ ΜΑΧ1=Π ΤΟΤΕ ΠΤ1 ß ΠΤ1 + 1 ΑΝ ΜΑΧ2=Π ΤΟΤΕ ΠΤ2 ß ΠΤ2 + 1 AN D1=ΑΛΗΘΗΣ TOTE ΓΡΑΨΕ ΟΝ D2 ß ΑΛΗΘΗΣ ΓΡΑΨΕ S, 'ΣΥΝΟΛΙΚΟ ΠΟΣΟ' ΓΡΑΨΕ 'ΤΑ ΠΕΡΙΣΣΌΤΕΡΑ ΕΣΟΔΑ ΕΙΝΑΙ', ΜΑΧ1, ΜΑΧ2, 'ΚΑΙ & ΠΑΡΑΤΗΡΗΘΗΚΑΝ', ΠΤ1, ΠΤ2, 'ΦΟΡΕΣ' ΑΝ ΜΑΧ1>1000 ΤΟΤΕ Π2 ß Π2 + 1 ΓΡΑΨΕ ΟΝ ΓΡΑΨΕ 'ΥΠΑΡΧΕΙ ΑΛΛΟΣ ΠΡΟΜΗΘΕΥΤΗΣ' ΔΙΑΒΑΣΕ ΑΠ ΜΕΧΡΙΣ_ΟΤΟΥ ΑΠ='ΟΧΙ' ΑΝ D2 = ΨΕΥΔΗΣ ΤΟΤΕ ΓΡΑΨΕ 'ΚΑΝΕΝΑΣ' ΓΡΑΨΕ Π2, 'ΠΡΟΜΗΘΕΥΤΕΣ ΤΟ ΜΕΓΟΣΤΟ ΠΟΣΟ ΕΙΝΑΙ ΠΑΝΩ ΑΠΟ 1000 ' ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ 9. Η γραμμή Λονδίνο - Νέα Υόρκη εξυπηρετείται από 10 αεροπορικές εταιρίες. Να γίνει πρόγραμμα το οποίο: α. Να ζητάει και να καταχωρεί σε πίνακες τα ονόματα των εταιριών και το πλήθος των πτήσεων για κάθε μήνα του περασμένου έτους (δεν απαιτείται κανένας έλεγχος εγκυρότητας). β. Να εμφανίζει το μηνιαίο μέσο όρο των πτήσεων για κάθε εταιρία. γ. Να υπολογίζει το μεγαλύτερο μέσο όρο και να εμφανίζει το όνομα ή τα ονόματα των εταιριών με μέσο όρο ίσο με το μέγιστο. 11
δ. Για κάθε εταιρία να καλεί υποπρόγραμμα μέσω του οποίου να υπολογίζει το πλήθος των πτήσεων του πρώτου και του τελευταίου τριμήνου του έτους. Στη συνέχεια στο κύριο πρόγραμμα να εμφανίζει τα ονόματα των εταιριών με περισσότερες πτήσεις το τελευταίο τρίμηνο από το πρώτο. Αν δεν υπάρχει καμία να εμφανίζει κατάλληλο μήνυμα. ε. Να ζητάει το όνομα μίας εταιρίας, να βρίσκει το μέγιστο μηνιαίο πλήθος πτήσεών της για το περασμένο έτος. Σε περίπτωση που το όνομα δε βρεθεί να εμφανίζει κατάλληλα διαμορφωμένο μήνυμα και να ζητά νέο όνομα. Η παραπάνω διαδικασία δεν μπορεί να υπερβαίνει τις τρεις φορές. ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ9 ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ[10], ΜΑΧ ΑΚΕΡΑΙΕΣ: Π[10.12], Ι, pos, J, S, ΜΑΧ_Π, Π, S1, S2 ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[10], ΟΝΟΜΑ ΛΟΓΙΚΕΣ: d, d1! ΔΙΑΒΑΖΟΥΜΕ ΤΑ ΔΕΔΟΜΕΝΑ (ΕΡΩΤΗΜΑ 1) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΡΑΨΕ 'ΔΩΣΕ ΟΝΟΜΑ', Ι, ΕΤΑΙΡΙΑΣ' ΔΙΑΒΑΣΕ ΟΝ[Ι] ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 12 ΓΡΑΨΕ 'ΔΩΣΕ ΑΡΙΘΜΟ ΠΤΗΣΕΩΝ', Ι, 'ΕΤΑΙΡΙΑΣ ΓΙΑ', J, ''ΜΗΝΑ' ΔΙΑΒΑΣΕ Π[Ι,J]! ΥΠΟΛΟΓΙΖΟΥΜΕ ΤΟ ΜΕΣΟ ΟΡΟ ΚΑΘΕ ΓΙΑ ΚΑΘΕ ΕΤΑΙΡΙΑ (ΚΑΘΕ ΓΡΑΜΜΗΣ), (ΕΡΩΤΗΜΑ 2) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 S ß 0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 12 S ß S + Π[Ι,J] MO[I] ß S/12 ΓΡΑΨΕ ' Ο ΜΕΣΟΣ ΟΡΟΣ ΠΤΗΣΕΩΝ ΤΗΣ', Ι, 'ΕΤΑΙΡΙΑΣ ΕΙΝΑΙ', ΜΟ[Ι]! ΥΠΟΛΟΓΙΖΟΥΜΕ ΤΟ ΜΕΓΑΛΥΤΕΡΟ ΜΕΣΟ ΟΡΟ ΚΑΘΕ ΓΙΑ ΚΑΘΕ ΕΤΑΙΡΙΑ (ΚΑΘΕ ΓΡΑΜΜΗΣ), (ΕΡΩΤΗΜΑ 3) ΜΑΧ ß ΜΟ[1] ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 10 ΑΝ ΜΑΧ<ΜΟ[Ι] ΤΟΤΕ ΜΑΧ ß ΜΟ[Ι]! ΥΠΟΛΟΓΙΖΟΥΜΕ ΠΟΙΕΣ ΕΤΑΙΡΙΕΣ ΕΧΟΥΝ ΜΕΣΟ ΟΡΟ ΙΣΟ ΜΕ ΤΟ ΜΕΓΙΣΤΟ, (ΕΡΩΤΗΜΑ 3) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 ΑΝ ΜΑΧ=ΜΟ[Ι] ΤΟΤΕ ΓΡΑΨΕ 'Η', ΟΝ[Ι], 'ΕΤΑΙΡΙΑ ΕΧΕΙ ΜΕΓΙΣΤΟ ΜΕΣΟ ΑΡΙΘΜΟ ΠΤΗΣΕΩΝ'! ΑΘΡΟΙΣΜΑ ΠΡΩΤΟΥ ΚΑΙ ΤΕΛΕΥΤΑΙΟΥ ΤΡΙΜΗΝΟΥ, (ΕΡΩΤΗΜΑ 4) d1 ß ΨΕΥΔΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 ΚΑΛΕΣΕ Δ1(Π, Ι, S1, S2) ΑΝ S2>S1 ΤΟΤΕ ΓΡΑΨΕ 'Η', ΟΝ[Ι], 'ΕΤΑΙΡΙΑ ΕΧΕΙ ΠΕΡΙΣΣΟΤΕΡΕΣ ΣΤΟ ΤΕΛΕΥΤΑΙΟ' d1 ß ΑΛΗΘΗΣ ΑΝ d1 = ΨΕΥΔΗΣ ΤΟΤΕ ΓΡΑΨΕ 'ΚΑΜΙΑ ΕΤΑΙΡΙΑ'! ΑΝΑΖΗΤΟΥΜΕ ΤΟ ΟΝΟΜΑ ΤΗΣ ΕΤΑΙΡΙΑΣ, ΜΕΧΡΙ ΝΑ ΒΡΕΘΕΙ ή ΤΟ ΠΟΛΥ 3 ΟΝΟΜΑΤΑ, (ΕΡΩΤΗΜΑ 5) Π ß 0 _ΕΠΑΝΑΛΗΨΗΣ Π ß Π + 1 ΓΡΑΨΕ 'ΔΩΣΕ ΟΝΟΜΑ ΕΤΑΙΡΙΑΣ' ΔΙΑΒΑΣΕ ΟΝΟΜΑ d ß ΨΕΥΔΗΣ pos ß 0 Ι ß 1 ΟΣΟ d=ψευδησ ΚΑΙ Ι<=10 ΕΠΑΝΑΛΑΒΕ ΑΝ ΟΝΟΜΑ=ΟΝ[Ι] ΤΟΤΕ d ß ΑΛΗΘΗΣ pos ß Ι Ι ß Ι + 1 12
ΑΝ d=αληθησ ΤΟΤΕ ΜΑΧ_Π ß Π[pos,1] ΓΙΑ J ΑΠΟ 2 ΜΕΧΡΙ 12 ΑΝ ΜΑΧ_Π<Π[pos,J] TOTE MAX_Π ß Π[pos,J] ΓΡΑΨΕ ΜΑΧ_Π, ΤΟ ΜΕΓΙΣΤΟ ΜΗΝΙΑΙΟ ΠΛΘΟΣ ΤΗΣ', pos, ΕΤΑΙΡΙΑΣ ΓΡΑΨΕ 'ΔΕ ΒΡΕΘΗΚΕ ΤΟ ΟΝΟΜΑ' ΜΕΧΡΙΣ_ΟΤΟΥ Π=3 Η d=αληθησ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ Δ1 (Π, Ι, S1, S2) ΑΚΕΡΑΙΕΣ: Ι, Π[10,12], S1, S2, J S1 ß 0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 3 S1 ß S1 + Π[Ι,J] S2 ß 0 ΓΙΑ J ΑΠΟ 10 ΜΕΧΡΙ 12 S2 ß S2 + Π[Ι,J] ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 10. Αεροπορικές εταιρίες με έδρα το Λονδίνο εξυπηρετούν 15 πόλεις. Να κατασκευάσετε αλγόριθμο ο οποίος: α. Να ζητά το πλήθος των αεροπορικών εταιριών, ελέγχοντας την τιμή, οι εταιρίες δεν μπορεί να είναι πάνω από 20. β. Να ζητά τα ονόματα των εταιριών και να τα αποθηκεύει σε μονοδιάστατο πίνακα. γ. Να ζητά το πλήθος των πτήσεων που πραγματοποίησε κάθε εταιρία για κάθε πόλη και να τα αποθηκεύει σε δισδιάστατο πίνακα. Ακόμη να ελέγχει την εγκυρότητα του αριθμού, δηλαδή αν ο αριθμός είναι θετικός. δ. Να εμφανίζει το μέσο όρο των πτήσεων για κάθε εταιρία. Ακόμη να υπολογίζει και να εμφανίζει το πλήθος των πόλεων για τις οποίες οι πτήσεις ήταν μεγαλύτερες από το μέσο όρο για την κάθε εταιρία. ε. για κάθε πόλη να καλεί υποπρόγραμμα που θα υπολογίζει και θα εμφανίζει την εταιρία με το μικρότερο αριθμό πτήσεων. στ. Να εμφανίζει το μέσο όρο των πτήσεων των εταιριών που το όνομά τους ξεκινάει από το γράμμα «ε». ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ10 ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ[20], ΤΕΜP3 ΑΚΕΡΑΙΕΣ: Ι, J, Κ, Π, Α[20,15], Σ, ΠΛ ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[20], ΟΝΟΜΑ! ΔΙΑΒΑΖΟΥΜΕ ΤΑ ΔΕΔΟΜΕΝΑ (ΕΡΩΤΗΜΑ 1, 2, 3) _ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΔΩΣΕ ΠΛΗΘΟΣ ΕΤΑΙΡΙΩΝ' ΔΙΑΒΑΣΕ ΠΛ ΑΝ ΠΛ<0 Ή ΠΛ>20 ΤΟΤΕ ΓΡΑΨΕ 'ΛΑΘΟΣ ΤΙΜΗ ΠΛΗΘΟΥΣ' ΜΕΧΡΙΣ_ΟΤΟΥ ΠΛ>=0 ΚΑΙ ΠΛ<=20 13
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΠΛ ΓΡΑΨΕ 'ΔΩΣΕ ΟΝΟΜΑ', Ι, ΕΤΑΙΡΙΑΣ' ΔΙΑΒΑΣΕ ΟΝ[Ι] ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 15 ΓΡΑΨΕ 'ΔΩΣΕ ΑΡΙΘΜΟ ΠΤΗΣΕΩΝ', Ι, 'ΕΤΑΙΡΙΑΣ ΓΙΑ', J, 'ΠΟΛΗ' ΔΙΑΒΑΣΕ Α[Ι,J] ΟΣΟ Α[Ι,J]<=0 ΕΠΑΝΑΛΑΒΕ ΓΡΑΨΕ 'ΜΗ ΕΓΚΥΡΟΣ ΑΡΙΘΜΟΣ' ΓΡΑΨΕ 'ΔΩΣΕ ΑΡΙΘΜΟ ΠΤΗΣΕΩΝ' ΔΙΑΒΑΣΕ Α[Ι,J]! ΥΠΟΛΟΓΙΖΟΥΜΕ ΤΟ ΜΕΣΟ ΟΡΟ ΚΑΘΕ ΓΙΑ ΚΑΘΕ ΕΤΑΙΡΙΑ (ΚΑΘΕ ΓΡΑΜΜΗΣ), (ΕΡΩΤΗΜΑ 3) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΠΛ Σ ß 0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 15 Σ ß Σ + Α[Ι,J] ΜΟ[Ι] ß Σ/15 ΓΡΑΨΕ ΜΟ[Ι], 'Ο ΜΕΣΟΣ ΟΡΟΣ ΠΤΗΣΕΩΝ ΤΗΣ', Ι, 'ΕΤΑΙΡΙΑΣ'! ΥΠΟΛΟΓΙΖΟΥΜΕ ΠΟΣΕΣ ΕΤΑΙΡΙΕΣ ΕΧΟΥΝ ΠΤΗΣΕΙΣ ΜΕΓΑΛΥΤΕΡΕΣ ΑΠΟ ΤΟ ΜΕΣΟ ΟΡΟ ΚΑΘΕ ΕΤΑΙΡΙΑΣ! (ΚΑΘΕ ΓΡΑΜΜΗΣ), (ΕΡΩΤΗΜΑ 3) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΠΛ Πß0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 15 AN A[I,J]>MO[I] TOTE ΠßΠ+1 ΓΡΑΨΕ Π! ΒΡΙΣΚΟΥΜΕ ΤΗΝ ΕΤΑΙΡΙΑ ΜΕ ΜΙΚΡΟΤΕΡΟ ΑΡΙΘΜΟ ΠΤΗΣΕΩΝ ΓΙΑ ΚΑΘΕ ΠΟΛΗ (ΚΑΘΕ ΣΤΗΛΗ), (ΕΡΩΤΗΜΑ 4) ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 15 ΚΑΛΕΣΕ Δ1(Α, J, ΠΛ, ΟΝ)! ΜΕΣΟΣ ΟΡΟΣ ΠΤΗΣΕΩΝ ΕΤΑΙΡΙΩΝ ΠΟΥ ΤΟ ΟΝΟΜΑ ΤΟΥΣ ΞΕΚΙΝΑΕΙ ΑΠΟ ΤΟ ΓΡΑΜΜΑ «ε» (ΕΡΩΤΗΜΑ 5) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΠΛ ΑΝ ΟΝ[Ι]>= ε ΚΑΙ ΟΝ[Ι]< ζ TOTE ΓΡΑΨΕ ΜΟ[Ι] ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ Δ1 (Α, J, ΠΛ, ΟΝ) ΑΚΕΡΑΙΕΣ: Ι, J, Α[20,15], ΠΛ, ΜΙΝ ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[20], ΜΙΝ_ΟΝ ΜΙΝ ß Α[1,J] ΜΙΝ_ΟΝ ß ΟΝ[1] ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ ΠΛ ΑΝ ΜΙΝ>Α[Ι,J] ΤΟΤΕ ΜΙΝ ß Α[Ι,J] ΜΙΝ_ΟΝ ß ΟΝ[Ι] ΓΡΑΨΕ ΜΙΝ_ΟΝ, 'Η ΕΤΑΙΡΙΑ ΜΕ ΜΙΚΡΟΤΕΡΟ ΑΡΙΘΜΟ ΠΤΗΣΕΩΝ ΓΙΑ ΤΗΝ', J, 'ΠΟΛΗ' ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 11. Δίνεται πίνακας Α[4,4] τετραγωνικός. Να ελέγξετε αν ο πίνακας είναι τριγωνικός άνω, δηλαδή αν τα στοιχεία κάτω από την κύρια διαγώνιο είναι όλα μηδέν. Η διαδικασία του ελέγχου να τερματίζεται είτε όταν διαπιστώσετε ότι όλα τα στοιχεία κάτω από την κύρια διαγώνιο είναι μηδέν είτε όταν βρεθεί, στο συγκεκριμένο σημείο του πίνακα, μη μηδενικό στοιχείο και να εμφανίζεται κατάλληλο μήνυμα. 14
Αλγόριθµος Θεµα11! ο πίνακας Α δίνεται άρα αποτελεί δεδοµένο και είναι η είσοδος του αλγορίθµου Δεδοµένα //Α//! σαρώνουµε ολόκληρο τον πίνακα Α και αν βρούµε έστω και ένα στοιχείο του, κάτω από την κύρια! διαγώνιο που να είναι διάφορο του µηδέν τότε οι επαναλήψεις (ο έλεγχος του πίνακα) σταµατάει d ß Αληθής Ι ß 1 Όσο Ι<=4 ΚΑΙ d=αληθής Επανάλαβε J ß 1 Όσο J<=4 KAI d=αληθής Επανάλαβε Αν Ι>J τότε Αν Α[Ι,J]<>0 Τότε d ß Ψευδής J ß J + 1 Τελός_Επανάληψης Ι ß Ι + 1 Τέλος_Επανάληψης! αν στο τέλος το d είναι Ψευδής, σηµαίνει ότι δε βρέθηκε στοιχείο του πίνακα που να είναι διάφορο! του µηδενός, άρα ο πίνακας Τριγωνικός Άνω, σε άλλη περίπτωση, αν δηλαδή βρεθεί ένα! τουλάχιστον στοιχείο διάφορο του µηδέν ο πίνακας δεν είναι τριγωνικός Άνω. Αν d=αληθής τότε Εµφάνισε 'Τριγωνικός Άνω' Αλλιώς Εµφάνισε 'Όχι Τριγωνικός Άνω' Τέλος Θέµα3 12. Να γίνει πρόγραμμα το οποίο να ζητά το πλήθος των μαθητών ενός σχολείου. Να ελέγχεται το πλήθος το οποίο δεν μπορεί να ξεπερνάει το 100. α. Να ζητά τα ονόματα και τα επώνυμα των μαθητών που θα αποθηκεύονται σε πίνακα δισδιάστατο ΟΝ, στην πρώτη και δεύτερη στήλη αντίστοιχα. β. Να ζητά το πλήθος των μαθημάτων τα οποία παρακολουθεί ο κάθε μαθητής και να τα αποθηκεύει σε πίνακα Π, το πλήθος των μαθημάτων δεν μπορεί να ξεπερνάει το 10. γ. Να ζητά το βαθμό κάθε μαθητή σε κάθε μάθημα και να αποθηκεύει τους βαθμούς σε πίνακα δισδιάστατο Β. δ. Να υπολογίζει το μέσο όρο κάθε μαθητή και να καταχωρεί τα αποτελέσματα σε νέο πίνακα με τη βοήθεια συνάρτησης η οποία θα υπολογίζει το μέσο όρο κάθε μαθητή. ε. Μέσω διαδικασίας να ταξινομεί τους μέσους όρους και τα ονόματα των μαθητών με βάση το μέσο όρο κατά σειρά φθίνουσα. Σε περίπτωση ισοβαθμίας τα ονόματα να τοποθετούνται αλφαβητικά. στ. Τέλος να εμφανίζει τους 5 μεγαλύτερους μέσους όρους που παρατηρήθηκαν στο σχολείο και πόσες φορές παρατηρήθηκε ο κάθε ένας. ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ12 ΑΚΕΡΑΙΕΣ: Π, Ι, J, Π[100], ΠΛΗΘΟΣ[5], ΠΜ ΠΡΑΓΜΑΤΙΚΕΣ:Β[100,10], ΜΟ[100], ΜΟΜ[5] ΧΑΡΑΚΤΗΡΕΣ: ON[100,2] 15
ΓΡΑΨΕ ΔΩΣΕ ΠΛΗΘΟΣ ΜΑΘΗΤΩΝ ΔΙΑΒΑΣΕ ΠΛ ΟΣΟ ΠΛ>100 ΕΠΑΝΑΛΑΒΕ ΓΡΑΨΕ ΛΑΘΟΣ ΤΙΜΗ ΓΡΑΨΕ ΔΩΣΕ ΠΛΗΘΟΣ ΜΑΘΗΤΩΝ ΔΙΑΒΑΣΕ ΠΛ! ΕΙΣΑΓΟΥΜΕ ΔΕΔΟΜΕΝΑ ΜΕΣΩ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ, ΕΛΕΓΧΟΝΤΑΣ ΤΗΝ ΕΓΚΥΡΟΤΗΤΑ ΤΟΥΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΠΛ ΓΡΑΨΕ ΔΩΣΕ ΟΝΟΜΑ ΚΑΙ ΕΠΩΝΥΜΟ ΔΙΑΒΑΣΕ ΟΝ[Ι,1], ΟΝ[Ι,2] _ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ΔΩΣΕ ΠΛΗΘΟΣ ΜΑΘΗΜΑΤΩΝ ΔΙΑΒΑΣΕ Π[Ι] ΜΕΧΡΙΣ_ΟΤΟΥ Π[Ι]<=10 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Π[Ι] ΓΡΑΨΕ ΔΩΣΕ ΒΑΘΜΟ ΔΙΑΒΑΣΕ Β[Ι,J]! ΚΑΛΟΥΜΕ ΤΗ ΣΥΝΑΡΤΗΣΗ Π ΦΟΡΕΣ, ΟΣΟΙ ΚΑΙ ΟΙ ΜΑΘΗΤΕΣ, ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟΤΟΥ ΜΕΣΟΥ ΟΡΟΥ ΚΑΘΕ ΓΡΑΜΜΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΠΛ ΜΟ[Ι] ß ΥΠΟΛ1(Β, Ι, Π)! ΚΑΛΟΥΜΕ ΤΗ ΔΙΑΔΙΚΑΣΙΑ ΓΙΑ ΝΑ ΚΑΝΕΙ ΤΑΞΙΝΟΜΗΣΗ, ΣΤΑ Π ΠΡΩΤΑ ΣΤΟΙΧΕΙΑ ΤΩΝ ΠΙΝΑΚΩΝ (ΕΡΩΤΗΜΑ Ε) ΚΑΛΕΣΕ ΤΑΞΙΝ(ΜΟ, ΟΝ, ΠΛ)! 5 ΜΕΓΑΛΥΤΕΡΟΙ ΜΕΣΟΙ ΟΡΟΙ (ΕΡΩΤΗΜΑ Ε) ΘΕΩΡΟΥΜΕ ΟΤΙ 5 ΔΙΑΦΟΡΕΤΙΚΕΣ ΤΙΜΕΣ ΥΠΑΡΧΟΥΝ ΣΤΟΝ ΠΙΝΑΚΑ ΜΟ[100] ΜΟΜ[1] ß ΜΟ[1] ΠΜ ß 1 Ι ß 2 ΟΣΟ ΠΜ <5 ΕΠΑΝΑΛΑΒΕ ΑΝ ΜΟ[Ι-1] <> ΜΟ[Ι] ΤΟΤΕ ΠΜ ß ΠΜ + 1 ΜΟΜ[ΠΜ] ß ΜΟ[Ι] Ι ß Ι + 1 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΡΑΨΕ ΜΟΜ[Ι]! ΠΟΣΟΙ ΕΙΝΑΙ ΙΣΟΙ ΜΕ ΤΟΥΣ 5 ΜΕΓΑΛΥΤΕΡΟΥΣ (ΕΡΩΤΗΜΑ ΣΤ) ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 5 ΠΛΗΘΟΣ[J] ß 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΠΛ ΑΝ ΜΟΜ[J] = ΜΟ[Ι] ΤΟΤΕ ΠΛΗΘΟΣ [J] ß ΠΛΗΘΟΣ [J] + 1 ΓΡΑΨΕ ΠΛΗΘΟΣ [J] ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ ΥΠΟΛ1(Χ,Υ,Π): ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΕΣ: J, Υ, Π[100] ΠΡΑΓΜΑΤΙΚΕΣ: S, X[100,10] S ß 0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Π[Ι] S ß S + X[Y,J] ΥΠΟΛ1 ß S/10 ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΔΙΑΔΙΚΑΣΙΑ ΤΑΞΙΝ(ΜΟ,ΟΝ, Π) ΑΚΕΡΑΙΕΣ: Ι, J ΧΑΡΑΚΤΗΡΕΣ: ON[100], TEMP1 ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ[100], ΤΕΜP2 ΓΙΑ J ΑΠΟ 2 ΜΕΧΡΙ Π ΓΙΑ Ι ΑΠΟ Π ΜΕΧΡΙ J ΜΕ ΒΗΜΑ 1 ΑΝ ΜΟ[Ι-1]< ΜΟ[Ι] ΤΟΤΕ ΤΕΜP1 ß ΟΝ[Ι-1] ON[Ι-1] ß ON[Ι] ON[Ι] ß TEMP1 ΤΕΜP2 ß MO[Ι-1] MO[Ι-1] ß MO[Ι] MO[Ι] ß TEMP2 _ΑΝ ΜΟ[Ι-1]=ΜΟ[Ι] ΤΟΤΕ ΑΝ ΟΝ[Ι]<ΟΝ[Ι-1] ΤΟΤΕ ΤΕΜP1 ß ΟΝ[Ι-1] ΟΝ[Ι-1] ß ΟΝ[Ι] ΟΝ[Ι] ß TEMP1 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 16
13. Σε κάποιο δήμο του Νομού Ροδόπης τα ονοματεπώνυμα των 3000 δημοτών που δικαιούνται να ψηφίσουν στο δήμο αυτό πρέπει να καταχωρηθούν σε έναν πίνακα ΔΗΜΟΤΕΣ. Να γράψετε πρόγραμμα το οποίο: α. Να διαβάζει τα ονοματεπώνυμα των 3000 δημοτών που δικαιούνται να ψηφίσουν στο δήμο αυτό και να τα καταχωρεί στον πίνακα ΔΗΜΟΤΕΣ. Τα ονόματα πρέπει να είναι διαφορετικά. β. Στη συνέχεια να διαβάζει το όνομα ενός δημότη που προσέρχεται στο εκλογικό κέντρο, και να ελέγχει αν δικαιούται να ψηφίσει στο δήμο αυτό. Δημότης που δικαιούται να ψηφίσει στο εκλογικό κέντρο είναι εκείνος του οποίου το όνομα υπάρχει στον πίνακα ΔΗΜΟΤΕΣ. Ο έλεγχος θα γίνεται με τη βοήθεια συνάρτησης που θα κατασκευάσετε για το σκοπό αυτό, όπως περιγράφεται στο ερώτημα ε. Η διαδικασία αυτή θα σταματά όταν δοθεί ως όνομα το κενό. γ. Να υπολογίζει και να εμφανίζει: το πλήθος των δημοτών που προσήλθαν στις εκλογές, το ποσοστό αποχής. δ. Να εμφανίζει τα ονόματα των δημοτών που δεν προσήλθαν να ψηφίσουν. ε. Να κατασκευάσετε συνάρτηση η οποία θα δέχεται το όνομα ενός πολίτη που προσέρχεται στο εκλογικό κέντρο καθώς επίσης και τον πίνακα όπου είναι καταχωρημένα τα ονόματα των δημοτών που δικαιούνται να ψηφίσουν στο εκλογικό κέντρο και να επιστρέφει τη θέση στην οποία εντοπίστηκε το συγκεκριμένο όνομα ή διαφορετικά την τιμή 0. Παρατήρηση: Θεωρήστε, επίσης, ότι κανένας από τους δημότες που έχουν ήδη ψηφίσει δεν έρχεται για να ξαναψηφίσει. ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ13 ΑΚΕΡΑΙΕΣ: i, πλ_προσήλθαν, θέση ΧΑΡΑΚΤΗΡΕΣ: ΔΗΜΟΤΕΣ[3000], όνοµα ΠΡΑΓΜΑΤΙΚΕΣ: ποσοστό_αποχής ΛΟΓΙΚΕΣ: ΨΗΦΙΣΑΝ[3000], D ΔΙΑΒΑΣΕ ΔΗΜΟΤΕΣ[1] ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 3000 Αρχή_Επανάληψης ΔΙΑΒΑΣΕ ΔΗΜΟΤΕΣ[i] D ß Ψευδής Για J από 1 µέχρι (i - 1) Αν ΔΗΜΟΤΕΣ[J]=ΔΗΜΟΤΕΣ[Ι] Τότε D ß Αληθής Τέλος_Αν Τέλος_Επανάληψης Μέχρις_Ότου D=Ψευδής ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3000 ΨΗΦΙΣΑΝ[i] ΨΕΥΔΗΣ πλ_προσήλθαν 0 ΔΙΑΒΑΣΕ όνοµα ΟΣΟ όνοµα<> ΕΠΑΝΑΛΑΒΕ θέση Αναζήτηση(όνοµα,ΔΗΜΟΤΕΣ) ΑΝ θέση<>0 ΤΟΤΕ πλ_προσήλθαν πλ_προσήλθαν+1 ΨΗΦΙΣΑΝ[θέση] ΑΛΗΘΗΣ ΔΙΑΒΑΣΕ όνοµα ΓΡΑΨΕ πλ_προσήλθαν 17
ποσοστό_αποχής (3000-πλ_προσήλθαν)/3000 100 ΓΡΑΨΕ ποσοστό_αποχής, % ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3000 ΑΝ ΨΗΦΙΣΑΝ[i]= ΨΕΥΔΗΣ ΤΟΤΕ ΓΡΑΨΕ ΔΗΜΟΤΕΣ[i] ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ Αναζήτηση(ον,Χ): ΑΚΕΡΑΙΑ ΛΟΓΙΚΕΣ: βρέθηκε ΑΚΕΡΑΙΕΣ: θέση, i ΧΑΡΑΚΤΗΡΕΣ: ον, Χ[3000] βρέθηκε ΨΕΥΔΗΣ θέση 0 i 1 ΟΣΟ i<=3000 ΚΑΙ βρέθηκε=ψευδησ ΕΠΑΝΑΛΑΒΕ ΑΝ Χ[i]=ον ΤΟΤΕ βρέθηκε ΑΛΗΘΗΣ θέση i i i+1 Αναζήτηση θέση ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ Β[100] και ΟΝ[100] οι βαθμοί και τα ονόματα των 100 μαθητών ενός σχολείου και ΜΟ ο μέσος όρος των βαθμών. Να βρεθούν οι μαθητές με βαθμό πλησιέστερο στο μέσο όρο. Για Ι από 1 μέχρι 100 Δ[Ι] ß Α_Τ(Β[Ι] ΜΟ) Τέλος_Επανάληψης min ß Δ[1] Για Ι από 2 μέχρι 100 Αν min > Δ[I] τότε min ß Δ[Ι] Τέλος_Επανάληψης Για Ι από 1 μέχρι 100 Αν min = Δ[I] τότε Εμφάνισε ΟΝ[Ι] Τέλος_Επανάληψης Έλεγχος αν ο πίνακας Χ[Π] είναι παλινδρομικός (καρκινικός) d ß Ψευδής Ι ß 1 ΟΣΟ Ι<=Π DIV 2 ΚΑΙ d=ψευδής ΕΠΑΝΑΛΑΒΕ ΑΝ Χ[Ι] <> Χ[ Π + 1 I ] TOTE d ß Αληθής Ι ß Ι + 1 18
ΑΝ d = Ψευδής ΤΟΤΕ ΓΡΑΨΕ 'Ο ΠΙΝΑΚΑΣ ΕΙΝΑΙ ΚΑΡΚΙΝΙΚΟΣ' ΓΡΑΨΕ 'Ο ΠΙΝΑΚΑΣ ΔΕΝ ΕΙΝΑΙ ΚΑΡΚΙΝΙΚΟΣ' Μεταφορά Δισδιάστατου σε Μονοδιάστατο A[10,5] à B[50] και αντίστροφα B[50] à A[10,5] Νß0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 5 ΝßΝ+1 Β[Ν]ßΑ[Ι,Κ] Νß0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 5 ΝßΝ+1 Α[Ι,Κ] ß Β[Ν] (Συγχώνευση) Δίνονται δύο πίνακες Α[100] και Β[150] με ακέραιους αριθμούς ταξινομημένοι κατά αύξουσα σειρά ο καθένας. Να εκχωρήσετε τα στοιχεία τους σε έναν πίνακα Γ[250] με τέτοιο τρόπο ώστε να είναι συνέχεια ταξινομημένος κατά αύξουσα σειρά. Αλγόριθμος συγχώνευση Δεδομένα //Α, Β// I ß 1 J ß 1 K ß 1 Οσο I<=100 και J<=150 επανάλαβε Αν Α[I]<B[J] τότε Γ[K] ß A[I] I ß I + 1 Αλλιώς Γ[K] ß Β[J] J ß J + 1 K ß K + 1 Αν I>100 Tότε Για Z από K μέχρι 250 Γ[Z] ß B[J] J ß J + 1 Αλλιώς Για Z από K μέχρι 250 Γ[Z] ß Α[I] I ß I + 1 Tέλος_αν Τέλος συγχώνευση Συγχώνευση 2 πινάκων που δεν είναι ταξινομημένοι ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100 Γ[Ι] ß Α[Ι] ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 150 Γ[100+Ι] ß Β[Ι] 19
Έξυπνη Φυσαλίδα για πίνακα Α[100] N ß 100 _ΕΠΑΝΑΛΗΨΗΣ Τ ß 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν - 1 ΑΝ Α[Ι] > Α[Ι+1] ΤΟΤΕ ΤΕΜΡ ß Α[Ι + 1] Α[Ι + 1] ß Α[ Ι ] Α[ Ι ] ß ΤΕΜΡ Τ ß Ι Ν ß Τ ΜΕΧΡΙΣ_ΟΤΟΥ Τ=0 Τ ß 0 Ν ß 2 _ΕΠΑΝΑΛΗΨΗΣ d ß ΨΕΥΔΗΣ ΓΙΑ Ι ΑΠΟ 100 ΜΕΧΡΙ Ν ΜΕ ΒΗΜΑ -1 ΑΝ Α[Ι-1] > Α[Ι] ΤΟΤΕ ΤΕΜΡ ß Α[Ι-1] Α[Ι-1] ß Α[Ι] Α[Ι] ß ΤΕΜΡ d ß ΑΛΗΘΗΣ Τ ß Κ Ν ß Τ + 1 ΜΕΧΡΙΣ_ΟΤΟΥ d=ψευδησ Αναζήτηση της τιμής Χ σε δισδιάστατο Α[100,200] d ß ΨΕΥΔΗΣ Θ1 ß 0 Θ2 ß 0 Ι ß 1 ΟΣΟ d=ψευδησ ΚΑΙ Ι<=100 ΕΠΑΝΑΛΑΒΕ Κ ß 1 ΟΣΟ d=ψευδησ ΚΑΙ Κ<=200 ΕΠΑΝΑΛΑΒΕ ΑΝ Α[Ι,Κ]=Χ ΤΟΤΕ d ß ΑΛΗΘΗΣ Θ1 ß Ι Θ2 ß Κ Κ ß Κ + 1 Ι ß Ι + 1 ΑΝ d=aληθησ ΤΟΤΕ ΓΡΑΨΕ Θ1, Θ2, 'ΘΕΣΗ' ΓΡΑΨΕ 'ΔΕ ΒΡΕΘΗΚΕ' d ß ΨΕΥΔΗΣ Θ1 ß 0 Θ2 ß 0 Ι ß 1 Κ ß 1 ΟΣΟ d=ψευδησ ΚΑΙ Ι<=100 ΕΠΑΝΑΛΑΒΕ ΑΝ Α[Ι,Κ]=Χ ΤΟΤΕ d ß ΑΛΗΘΗΣ Θ1 ß Ι Θ2 ß Κ _ΑΝ Κ<200 ΤΟΤΕ Κß Κ+ 1 Ι ß Ι + 1 Κ ß 1 ΑΝ d=aληθησ ΤΟΤΕ ΓΡΑΨΕ Θ1, Θ2, 'ΘΕΣΗ' ΓΡΑΨΕ 'ΔΕ ΒΡΕΘΗΚΕ' Ταξινόμηση κάθε γραμμής πινακα Α[100,50] κατά αύξουσα σειρά Για Κ από 1 μέχρι 100 Για J από 2 μέχρι 50 Για I από 50 μέχρι J με βήμα -1 Αν Α[ K, I ] < Α[ K, I 1 ] τότε Αντιμετάθεσε Α[ K, I ], Α[ K, I 1 ] 20
Έλεγχος αν κάθε γραμμή του πίνακα Α[100,50] είναι κατά αύξουσα σειρά ταξινομημένη Για I από 1 μέχρι 100 Π ß 0 Για J από 2 μέχρι 50 Αν Α[ I, J -1 ] <= Α[ I, J ] τότε Π ß Π + 1 Αν Π = 49 τότε Εμφάνισε η, Ι, γραμμή είναι ταξινομημένη κατά σειρά αύξουσα 21