343 Ειςαγωγι ςτον Προγραμματιςμό

Σχετικά έγγραφα
343 Ειςαγωγι ςτον Προγραμματιςμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

17. Πολυδιάςτατοι πίνακεσ

343 Ειςαγωγι ςτον Προγραμματιςμό

16. Πίνακεσ και Συναρτήςεισ

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

Δομζσ Δεδομζνων Πίνακεσ

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

343 Ειςαγωγι ςτον Προγραμματιςμό

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

343 Ειςαγωγι ςτον Προγραμματιςμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Οντοκεντρικόσ Προγραμματιςμόσ

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Η γλώςςα προγραμματιςμού C

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Η διαδικαςία επιλογήσ μαθημάτων

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Εργαςτιριο Βάςεων Δεδομζνων

Στα προθγοφμενα δφο εργαςτιρια είδαμε τθ δομι απόφαςθσ (ι επιλογισ ι ελζγχου ροισ). Ασ κυμθκοφμε:

343 Ειςαγωγι ςτον Ρρογραμματιςμό

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

ΟΔΗΓΙΕ ΔΗΜΙΟΤΡΓΙΑ ΚΑΙ ΡΤΘΜΙΗ ΔΩΡΕΑΝ ΗΛΕΚΣΡΟΝΙΚΟΤ ΣΑΧΤΔΡΟΜΕΙΟΤ ΣΟ GOOGLE (G-MAIL)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Πίνακες.

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

Μονάδες 6. Μονάδες ΓΑΨΕ Δεν υπάρχει ρίηα 2. ΑΝ Α>0 ΤΟΤΕ 3. ΤΕΛΟΣ_ΑΝ 4. ΑΛΛΙΩΣ 5. ίηα Τ_(Α)

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Ρρογραμματιςμό

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

Μεθόδων Επίλυσης Προβλημάτων

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

Συναρτήσεις και Πίνακες

343 Ειςαγωγι ςτον Ρρογραμματιςμό

Ειδικά Θζματα Βάςεων Δεδομζνων

Προγραμματισμός Υπολογιστών με C++

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

Γομέρ Γεδομένων (Data Structures) Χαπμανδάπηρ Δςάγγελορ, Τμήμα Δθαπμοζμένων Μαθημαηικών, Δαπινό Δξάμηνο 2010/11. Διζαγωγή: Σύνηομη Δπιζκόπηζη ηηρ C++

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Βάςεισ Δεδομζνων Ι. Ενότθτα 10: Συνακροιςτικζσ ςυναρτιςεισ. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικών Πλθροφορικισ ΣΕ

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. Διαφάνειεσ: Βαςικζσ Αρχζσ Προγραμματιςμοφ Α.Π.Θ. Δθμιτρθσ Βράκασ

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

Ηλεκτρονικι Επιχειρθςιακι Δράςθ Εργαςτιριο 1

Βαγγζλθσ Οικονόμου Διάλεξθ 7. Συναρτιςεισ Μζροσ 2ο

Πρόςβαςη και δήλωςη μαθημάτων ςτον Εφδοξο

Ανάπτυξη Εφαρμογών Σε Προγραμματιςτικό Περιβάλλον

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

Προγραμματισμός Υπολογιστών με C++

ΗΥ-150. Προγραμματισμός

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

1. Κατέβαςμα του VirtueMart

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

ΟΝΟΜΑΣΟΛΟΓΙΑ ΠΑΡΑΜΕΣΡΩΝ ΓΙΑ ΠΡΟΑΡΜΟΜΕΝΕ ΑΝΑΦΟΡΕ. παραμζτρου> (Εμφανίηεται ςαν Caption ςτθν φόρμα των φίλτρων).

ΑΝΑΠΣΤΞΗ ΕΥΑΡΜΟΓΩΝ Ε ΠΡΟΓΡΑΜΜΑΣΙΣΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΤΚΕΙΟΤ ΣΕΦΝΟΛΟΓΙΚΗ ΚΑΣΕΤΘΤΝΗ

ΗΥ-150. Προγραμματισμός

Πανεπιςτιμιο Κφπρου ΟΙΚ 223: Μακθματικά για οικονομολόγουσ ΙΙ Διδάςκων:

Σχεδίαςη Σφγχρονων Ακολουθιακών Κυκλωμάτων

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

Οντοκεντρικόσ Ρρογραμματιςμόσ

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

1. Εγκατάςταςη κειμενογράφου JCE

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Ιδιότθτεσ πεδίων Γενικζσ.

ΑΝΑΠΣΤΞΘ ΕΦΑΡΜΟΓΩΝ Ε ΠΡΟΓΡΑΜΜΑΣΙΣΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 3 ο ΓΕΝΙΚΟ ΛΤΚΕΙΟ Ν. ΜΤΡΝΘ- ΕΠΙΜΕΛΕΙΑ: ΠΤΡΙΔΑΚΘ Λ.

343 Ειςαγωγι ςτον Ρρογραμματιςμό

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Ραραμετροποίθςθ ειςαγωγισ δεδομζνων περιόδων

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 6: Το γραφικό περιβάλλον Επικοινωνίασ (Γ.Π.Ε)

Γενικά Μαθηματικά ΙΙ

8 τριγωνομετρία. βαςικζσ ζννοιεσ. γ ςφω. εφω και γ. κεφάλαιο

ΑΝΣΙΣΡΟΦΗ ΤΝΑΡΣΗΗ. f y x y f A αντιςτοιχίηεται ςτο μοναδικό x A για το οποίο. Παρατθριςεισ Ιδιότθτεσ τθσ αντίςτροφθσ ςυνάρτθςθσ 1. Η. f A τθσ f.

Εισαγωγή στον Προγραμματισμό

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

Transcript:

343 Ειςαγωγι ςτον Προγραμματιςμό Σμιμα Μακθματικϊν Πανεπιςτιμιο Ιωαννίνων Ακαδθμαϊκό Ζτοσ 2016-2017 Χάρθσ Παπαδόπουλοσ 207δ, B όροφοσ e-mail: charis@cs.uoi.gr Ωρεσ Γραφείου: Πζμπτθ 11-13

Σμιματα Εργαςτθρίων Εργαςτήριο (μεγάλο): Εργαςτιριο Η/Τ 1 ο όροφο δίπλα από το Αναγνωςτιριο Σα εργαςτιρια κα ξεκινιςουν Δευτζρα 24 Οκτωβρίου και Σρίτη 25 Οκτωβρίου Εργαςτήρια Δευτζρα (14:00-20:15) Α1 Δευτζρα 14:00-15:15-10992 Α2 Δευτζρα 15:15-16:30 10993-11036 Α3 Δευτζρα 16:30-17:45 11037-11088 Α4 Δευτζρα 17:45-19:00 11089-11146 Α5 Δευτζρα 19:00-20:15 11147-11196 Εργαςτήριο Σρίτη (14:00-15:15) Β1 Σρίτη 14:00-15:15 11197 - Αλλαγζσ ΔΕΝ επιτρζπονται! Διάρκεια Εργαςτηρίου: 1h:15m

Θ: διάλεξη (θεωρία) Ε: Εργαστήριο Q: Σεστ quiz Επιπλζον Προαιρετικό Εργαςτιριο Οκτώβριος 2015 Δ Σ Σ Π Π 3 4 5 6 7 Θ 10 11 12 13 14 Θ 17 18 19 20 21 Θ 24 Ε 25 Ε 26 27 28 Νοέμβριος 2015 Δ Σ Σ Π Π 1 2 3 4 Θ 7 Ε 8 Ε 9 10 11 Θ 14 Ε 15 16 17 18 Θ 21 Σ 22 23 24 25 Θ 28 Ε 29 Ε 30 Δεκέμβριος 2015 Δ Σ Σ Π Π 1 2 Θ 6 ο Εργαςτήριο: Προαιρετικό (χωρίσ παρουςία) Δευτζρα 19 Δεκεμβρίου ϊρεσ 14-15:30, Σμιματα Α1 & Α2-11036 ϊρεσ 15:30-17, Σμιματα Α3 & Α4 11037-11146 ϊρεσ 17-18:30, Σμιματα Α5 & Β1 11147-5 E 6 Ε 7 8 9 Θ 12 Q 13 14 15 16 Θ 19 Ε 20 21 22 23 Ιανουάριος 2016 Δ Σ Σ Π Π 2 3 4 5 6 9 10 11 12 13 Θ

Θ: διάλεξη (θεωρία) Ε: Εργαστήριο Q: Σεστ quiz Οκτώβριος 2015 Δ Σ Σ Π Π 3 4 5 6 7 Θ 10 11 12 13 14 Θ 17 18 19 20 21 Θ 24 Ε 25 Ε 26 27 28 Νοέμβριος 2015 Δ Σ Σ Π Π 1 2 3 4 Θ 7 Ε 8 Ε 9 10 11 Θ 14 Ε 15 16 17 18 Θ 21 Σ 22 23 24 25 Θ 28 Ε 29 Ε 30 Δεκέμβριος 2015 Δ Σ Σ Π Π 1 2 Θ 5 E 6 Ε 7 8 9 Θ 12 Q 13 14 15 16 Θ 19 Ε 20 21 22 23 Ιανουάριος 2016 Δ Σ Σ Π Π 2 3 4 5 6 9 10 11 12 13 Θ Ημερολόγιο Μακιματοσ Εβδομάδα Θζματα Υλη βιβλιογραφίασ Πα, 7 Οκτωβρίου Εισαγωγικά μαθήματος & Δυαδική *1+: 1.1, Παράρτθμα 3 αναπαράσταση *2+: Κεφ. 1, Β, Δ Πα, 14 Οκτωβρίου Είσοδος/Έξοδος δεδομένων, τύποι δεδομένων & *1+: 1.2, 1.3, 1.4, 1.5, Παράρτθμα 1 μεταβλητών *2+: Κεφ. 2, Γ Πα, 21 Οκτωβρίου Προεπεξεργαστής, αριθμητικοί και λογικοί *1+: 2.1, Παράρτθμα 2 τελεστές *2+: 4.11, 4.12, Α, Σ Δε, Σρ, 24-25 Οκτ 1 ο Εργαστήριο Πα, 4 Νοεμβρίου Ροή ελέγχου: if/else, switch, for, while, do-while [1]: 2.2, 2.3 και ροή ελέγχου if/else *2+: Κεφ. 4, Κεφ. 5 Δε, Σρ, 7-8 Νοε 2 ο Εργαστήριο Πα, 11 Νοεμβρίου υναρτήσεις, εμβέλεια μεταβλητών και [1]: 3.1, 3.2, 3.3, 4.1, 4.2, 13.1, 13.2 αναδρομή *2+: Κεφ. 6 Δε, Σρ, 14-15 Νοε 3 ο Εργαστήριο Πα, 18 Νοεμβρίου Επανάληψη Εργαστηρίου [1]: 5.1, 5.2, 5.4 *2+: Κεφ. 7 Δε, 21 Νοε 1 ο Test (Ανάπτυξη κώδικα) Πα, 25 Νοεμβρίου Επανάληψη με Παραδείγματα [1]: 5.1, 5.2, 5.4 *2+: Κεφ. 7 Δε, Σρ, 28-29 Νοε 4 ο Εργαστήριο Πα, 2 Δεκεμβρίου Πίνακες (μονοδιάστατοι και πολυδιάστατοι) *1+: Παράρτθμα 4, 9.1, 9.2, 9.3 *2+: 6.7, 6.8, Κεφ. 18 Δε, Σρ, 5-6 Δεκ 5 ο Εργαστήριο Πα, 9 Δεκεμβρίου Εφαρμογές σε ταξινομήσεις και αναζήτηση *1+: Παράρτθμα 4, 9.1, 9.2, 9.3 στοιχείων *2+: 6.7, 6.8, Κεφ. 18 Δε, 12 Δεκ 2 ο Quiz (Ερωτήσεις πολλαπλών επιλογών) Πα, 16 Δεκεμβρίου υμβολοσειρές, εγγραφές, δομές και χρήση [1]: 6.1, 5.3, 12.1, 12.2, 12.4, 13.3 αρχείων *2+: Κεφ. 21, 7.7, 7.8, 17.1-17.10, 19 Δε, 19 Δεκ 6 ο Εργαστήριο (Προαιρετικό) Πα, 13 Ιανουαρίου Επανάληψη

Θ: διάλεξη (θεωρία) Ε: Εργαστήριο Q: Σεστ quiz Οκτώβριος 2015 Δ Σ Σ Π Π 3 4 5 6 7 Θ 10 11 12 13 14 Θ 17 18 19 20 21 Θ 24 Ε 25 Ε 26 27 28 Νοέμβριος 2015 Δ Σ Σ Π Π 1 2 3 4 Θ 7 Ε 8 Ε 9 10 11 Θ 14 Ε 15 16 17 18 Θ 21 Σ 22 23 24 25 Θ 28 Ε 29 Ε 30 Δεκέμβριος 2015 Δ Σ Σ Π Π 1 2 Θ 5 E 6 Ε 7 8 9 Θ 12 Q 13 14 15 16 Θ 19 Ε 20 21 22 23 Ιανουάριος 2016 Δ Σ Σ Π Π 2 3 4 5 6 9 10 11 12 13 Θ Ημερολόγιο Μακιματοσ Εβδομάδα Θζματα Υλη βιβλιογραφίασ Πα, 7 Οκτωβρίου Εισαγωγικά μαθήματος & Δυαδική *1+: 1.1, Παράρτθμα 3 αναπαράσταση *2+: Κεφ. 1, Β, Δ Πα, 14 Οκτωβρίου Είσοδος/Έξοδος δεδομένων, τύποι δεδομένων & *1+: 1.2, 1.3, 1.4, 1.5, Παράρτθμα 1 μεταβλητών *2+: Κεφ. 2, Γ Πα, 21 Οκτωβρίου Προεπεξεργαστής, αριθμητικοί και λογικοί *1+: 2.1, Παράρτθμα 2 τελεστές *2+: 4.11, 4.12, Α, Σ Δε, Σρ, 24-25 Οκτ 1 ο Εργαστήριο Πα, 4 Νοεμβρίου Ροή ελέγχου: if/else, switch, for, while, do-while [1]: 2.2, 2.3 και ροή ελέγχου if/else *2+: Κεφ. 4, Κεφ. 5 Δε, Σρ, 7-8 Νοε 2 ο Εργαστήριο Πα, 11 Νοεμβρίου υναρτήσεις, εμβέλεια μεταβλητών και [1]: 3.1, 3.2, 3.3, 4.1, 4.2, 13.1, 13.2 αναδρομή *2+: Κεφ. 6 Δε, Σρ, 14-15 Νοε 3 ο Εργαστήριο Πα, 18 Νοεμβρίου Επανάληψη Εργαστηρίου [1]: 5.1, 5.2, 5.4 *2+: Κεφ. 7 Δε, 21 Νοε 1 ο Test (Ανάπτυξη κώδικα) Πα, 25 Νοεμβρίου Επανάληψη με Παραδείγματα [1]: 5.1, 5.2, 5.4 *2+: Κεφ. 7 Δε, Σρ, 28-29 Νοε 4 ο Εργαστήριο Πα, 2 Δεκεμβρίου Πίνακες (μονοδιάστατοι και πολυδιάστατοι) *1+: Παράρτθμα 4, 9.1, 9.2, 9.3 *2+: 6.7, 6.8, Κεφ. 18 Δε, Σρ, 5-6 Δεκ 5 ο Εργαστήριο Πα, 9 Δεκεμβρίου Εφαρμογές σε ταξινομήσεις και αναζήτηση *1+: Παράρτθμα 4, 9.1, 9.2, 9.3 στοιχείων *2+: 6.7, 6.8, Κεφ. 18 Δε, 12 Δεκ 2 ο Quiz (Ερωτήσεις πολλαπλών επιλογών) Πα, 16 Δεκεμβρίου υμβολοσειρές, εγγραφές, δομές και χρήση [1]: 6.1, 5.3, 12.1, 12.2, 12.4, 13.3 αρχείων *2+: Κεφ. 21, 7.7, 7.8, 17.1-17.10, 19 Δε, 19 Δεκ 6 ο Εργαστήριο (Προαιρετικό) Πα, 13 Ιανουαρίου Επανάληψη

Ενότθτα 14 ΠΙΝΑΚΕ 7-6

Οριςμόσ: Πίνακεσ υλλογι δεδομζνων ίδιου τφπου Η πρϊτθ ςφνκετθ δομι τφπων: ςφνκετθ: "ομαδοποίθςθ" int, float, double, char, bool: απλζσ δομζσ τφπων Ομαδοποιεί κοινζσ μεταβλθτζσ ςε μια "λίςτα" Βακμολογίεσ, κερμοκραςίεσ, ονόματα, κ.τ.λ. Αποφεφγουμε να δθλϊςουμε πολλζσ απλζσ μεταβλθτζσ Μπορεί να χειριςτεί τθν "λίςτα" ωσ μια οντότθτα 7-7

Διλωςθ Πινάκων Διλωςθ πίνακα ανοίγει κατάλλθλεσ κζςεισ ςτθν μνιμθ 5 μεταβλθτζσ τφπου int: int score[5]; οι 5 μεταβλθτζσ κα είναι: score[0], score[1], score[2], score[3], score[4] υςτατικά ενόσ πίνακα: όνομα ςτοιχεία δείκτθσ δθλωμζνο μζγεκοσ βαςικόσ τφποσ 7-8

Επιςθμάνςεισ Χριςθ for για διαχείριςθ ενόσ πίνακα for(i = 0; i < 5; i++) cout << score[i] << " " << (max - score[i]); Οι δείκτεσ των πινάκων αρχίηουν πάντοτε από το 0 αρχίηουν πάντοτε από το 0 αρχίηουν πάντοτε από το 0 αρχίηουν πάντοτε από το 0 αρχίηουν πάντοτε από το 0... τελειϊνουν με τον ακζραιο που είναι μικρότεροσ κατά 1 από το μζγεκοσ του πίνακα 7-9

φνταξθ διλωςθσ πίνακα φνταξη όλοκα_ηύποσ όλοκα_πίλαθα[ Δειωκέλο_κέγεζος ]; Παράδειγμα int bigarray[100]; double a[3]; double b[5]; char grade[10], onegrade; Ορίηει Δειωκέλο_κέγεζος ςτοιχεία: όλοκα_πίλαθα[0],..., όλοκα_πίλαθα[δειωκέλο_κέγεζος 1] Κάκε ςτοιχείο είναι μια μεταβλθτι τφπου όλοκα_ηύποσ a[0] a[1] a[2] όλα τφπου double b[0] b[1] b[2] b[3] b[4] όλα τφπου double 7-10

Προςοχι ςτο μζγεκοσ του πίνακα Δεν επιτρζπεται διλωςθ πίνακα μεταβλθτοφ μεγζκουσ cout << "Δώζε αρηζκό \n"; cin >> number; int score[number]; ΛΑΘΟ!! Χριςθ κακοριςμζνθσ ςτακεράσ για το μζγεκοσ του πίνακα: αντί να χρθςιμοποιοφμε ζναν αρικμό (π.χ., 5) για το μζγεκοσ του πίνακα μποροφμε να κάνουμε χριςθ προκακοριςμζνθσ ςτακεράσ const int NUM_OF_STUDENTS = 5; Σότε θ διλωςθ του πίνακα: Και αντίςτοιχα: int score[num_of_students]; for(i = 0; i < NUM_OF_STUDENTS; i++) cout << score[i] << " " << (max - score[i]); 7-11

Παράδειγμα με πίνακα #include <iostream> int main( ) int i, score[5], max; cout << "Enter 5 scores:\n"; cin >> score[0]; max = score[0]; for (i = 1; i < 5; i++) cin >> score[i]; if (score[i] > max) max = score[i]; Παράδειγμα Enter 5 scores:: 5 9 2 10 6 Max is 10 The scores and differences from max are: 5 5 9 1 2 8 10 0 6 4 cout << "Max is " << max << endl << "The scores and differences from max are:\n"; for (i = 0; i < 5; i++) cout << score[i] << " " << (max - score[i]) << endl; 7-12

Παράδειγμα με προκακοριςμζνο μζγεκοσ #include <iostream> int main( ) const int NUM_OF_STUDENTS = 5; int i, score[num_of_students], max; cout << "Enter " << NUM_OF_STUDENTS << " scores:\n"; cin >> score[0]; max = score[0]; for (i = 1; i < NUM_OF_STUDENTS; i++) cin >> score[i]; if (score[i] > max) max = score[i]; cout << "Max is " << max << endl << "The scores and differences from max are:\n"; for (i = 0; i < NUM_OF_STUDENTS; i++) cout << score[i] << " " << (max - score[i]) << endl; 7-13

Οι πίνακεσ ςτθν μνιμθ Μια απλι μεταβλθτι περιγράφεται από διεφκυνςθ μνιμθσ (αρχι του πρϊτου byte) τφποσ μεταβλθτισ (πόςα byte καταλαμβάνει) Πίνακεσ: όλα τα ςτοιχεία τοποκετοφνται το ζνα δίπλα ςτο άλλο int a[6]; Δεςμεφει 6 κζςεισ για μεταβλθτζσ τφπου int Θυμάται τθν διεφκυνςθ του ςτοιχείου a[0] και κανενόσ άλλου 7-14

Οι πίνακεσ ςτθν μνιμθ 7-15

Δείκτθσ πίνακα εκτόσ ορίων Η C++ ςασ επιτρζπει να αναφερκείτε ςε ςτοιχεία εκτόσ ορίου τα αποτελζςματα είναι αςαφι ο μεταφραςτισ δεν αναγνωρίηει τζτοια λάκθ το χζρι ςασ να αποφφγετε τζτοια λάκθ Οι δείκτεσ κυμαίνονται από 0 ζωσ δθλωμζνο_μζγεκοσ 1 double temperature[24]; temperature[24] = 5; // 24 : array size Ο δείκτθσ 24 είναι "εκτόσ ορίων"! Δεν βγαίνει κάποιο μινυμα: καταςτροφικά αποτελζςματα Π.χ., ςτθ διεφκυνςθ temperature[24] υπάρχει άλλθ μεταβλθτι 7-16

Απόδοςθ αρχικϊν τιμϊν Αρχικζσ τιμζσ κατά τθν διλωςθ ενόσ πίνακα με, -: int children[3] = 2, 12, 1; Ιςοδφναμο με: int children[3]; children[0] = 2; children[1] = 12; children[2] = 1; Αν παραλθφκεί κάποια τιμι μζςα ςε, - : int children[3] = 2, 12; Θεωρεί ότι children[2] = 0 Γεμίηει τισ τελευταίεσ τιμζσ με μθδενικζσ τιμζσ του βαςικοφ τφπου Αν παραλθφκεί το μζγεκοσ του πίνακα : int b[ ] = 5, 12, 11; Βρίςκει το ελάχιςτο μζγεκοσ για τον πίνακα (int b[3]) 7-17

Παραδείγματα - Ερωτιςεισ char symbol[3] = 'a', 'b', 'c'; for(int index = 0; index < 3; index++) cout << symbol[index]; double a[3] = 1.1, 2.2, 3.3; cout << a[0] << " " << a[1] << " " << a[2] << endl; a[1] = a[2]; cout << a[0] << " " << a[1] << " " << a[2] << endl; int array[10]; for(int index = 1; index <= 10; index++) cout << array[index]; int b[10]; //?? πώς ζα δηαβάδακε; for(int i = 0; i < 10; i++) cout << b[i] << " " << endl; int i, a[10]; for(i = 0; i < 10; i++) a[i] = 2*i; for(i = 0; i < 10; i++) cout << a[i] << " "; cout << endl; for(i=0;i<10;i = i + 2) cout << a[i] << " "; cout << endl; 7-18

Ενότθτα 15 ΠΙΝΑΚΕ ΜΕΑ Ε ΤΝΑΡΣΗΕΙ 7-19

Πίνακεσ ςε ςυναρτιςεισ Ωσ παράμετροι ςε ςυναρτιςεισ: Μεμονωμζνα ςτοιχεία του πίνακα Ολόκλθρο τον πίνακα Ωσ επιςτρεφόμενεσ τιμζσ από ςυναρτιςεισ: Δεν κα το δοφμε (Κεφάλαιο 10) 7-20

τοιχεία πινάκων ωσ παράμετροι Χρθςιμοποιοφνται όπωσ οι απλζσ μεταβλθτζσ Ζςτω θ ακόλουκθ ςυνάρτθςθ: void myfunction( double par1 ); Και οι ακόλουκεσ δθλϊςεισ: int i; double n, a[10]; Σότε μποροφμε να καλζςουμε τθν ςυν/ςθ με διάφορουσ τρόπουσ: myfunction(i); // i κεηαηρέπεηαη ζε double myfunction(a[3]); // a[3] είλαη double myfunction(n); // n είλαη double 7-21

Αποτίμθςθ των παραμζτρων Ζςτω: myfunction( a[i] ); Η τιμι τθσ i κακορίηεται πρϊτα Κακορίηει ποιο ςτοιχείο του πίνακα να ςτείλει ωσ παράμετρο myfunction( a[i*5] ); Απολφτωσ ςυμβατό ωσ προσ τον μεταφραςτι Ο προγραμματιςτισ είναι υπεφκυνοσ για να κρατιςει τον δείκτθ μζςα ςτα όρια του πίνακα 7-22

Παράδειγμα Ζςτω θ ακόλουκθ ςυνάρτθςθ: void tripler( int& n ) n = 3 * n; Σι εκτυπϊνουν τα ακόλουκα; int a[3] = 4, 5, 6, number = 2; tripler( a[2] ); tripler( a[3] ); tripler( a[number] ); tripler( a ); tripler( number ); 7-23

Ολόκλθροι πίνακεσ ωσ παράμετροι Αν κζλουμε να περάςουμε ωσ παράμετρο ολόκλθρο τον πίνακα: Χρθςιμοποιοφμε το όνομα του πίνακα Παράμετροσ πίνακα τζλνουμε και το μζγεκοσ του πίνακα ωσ παράμετρο: ωσ μια τυπικι παράμετρο τφπου int void fillup(int a[], int size) cout << "Enter " << size << " numbers:\n"; for (int i = 0; i < size; i++) cin >> a[i]; cout << "The last array index:" << (size - 1) << endl; int a[5], b[10]; fillup(a, 5); fillup(b, 10); Παράμετροσ πίνακα: ςαν παράμετροσ με αναφορά 7-24

Ολόκλθροι πίνακεσ ωσ παράμετροι το κάλεςμα ςτζλνουμε ολόκλθρο τον πίνακα μόνο με το όνομά του (χωρίσ * + ) Πίνακασ 3 ςυςτατικά: Διεφκυνςθ τθσ πρϊτθσ μεταβλθτισ (a[0]) βαςικόσ τφποσ μζγεκοσ του πίνακα void fillup(int a[], int size) cout << "Enter " << size << " numbers:\n"; for (int i = 0; i < size; i++) cin >> a[i]; cout << "The last array index:" << (size - 1) << endl; int a[5], b[10]; fillup(a, 5); fillup(b, 10); 7-25

Ολόκλθροι πίνακεσ ωσ παράμετροι το κάλεςμα ςτζλνουμε ολόκλθρο τον πίνακα μόνο με το όνομά του (χωρίσ * + ) Πίνακασ 3 ςυςτατικά: Διεφκυνςθ τθσ πρϊτθσ μεταβλθτισ (a[0]) βαςικόσ τφποσ μζγεκοσ του πίνακα Όταν καλοφμε ςτζλνουμε μόνο τθ διεφκυνςθ a[0] void fillup(int a[], int size) cout << "Enter " << size << " numbers:\n"; for (int i = 0; i < size; i++) cin >> a[i]; cout << "The last array index:" << (size - 1) << endl; int a[5], b[10]; fillup(a, 5); fillup(b, 10); Παράμετροσ πίνακα: ςαν παράμετροσ με αναφορά 7-26

Παράμετροι Πινάκων Φαίνονται λίγο περίεργοι: Δεν ζχουν * + ςτθ παράμετρο Πρζπει να ςτζλνουμε και το μζγεκοσ Μια καλι ιδιότθτα: Μποροφμε να χρθςιμοποιοφμε τθν ΙΔΙΑ ςυνάρτθςθ για να γεμίςουμε πίνακεσ διαφορετικοφ μεγζκουσ! Επαναχρθςιμοποίθςθ ςυναρτιςεων int a[5], b[10]; fillup(a, 5); fillup(b, 10); Πϊσ φαντάηεςτε τθν ακόλουκθ ςυνάρτθςθ; void sumarray(double& sum, double a[], int size) 7-27

Ο προςδιοριςμόσ παραμζτρων const Αν και θ παράμετροσ πίνακα φαίνεται καλι ιδιότθτα διότι επιτρζπει τθν αλλαγι τιμϊν ςτα ςτοιχεία του πίνακα: Μερικζσ φορζσ δεν είναι επικυμθτό Προςτατεφουμε τα περιεχόμενα του πίνακα από πικανι τροποποίθςθ χριςθ const πριν από τθν παράμετρο πίνακα λζει ςτον μεταφραςτι ότι δεν πρζπει να αλλάξουν τα ςτοιχεία void showtheworld(const int a[], int size) cout << "Ο πίλαθας έτεη ηης αθόιοσζες ηηκές:\n"; for (int i = 0; i < size; i++) cout << a[i] << " "; cout << endl; 7-28

Ο προςδιοριςμόσ παραμζτρων const Αν και θ παράμετροσ πίνακα φαίνεται καλι ιδιότθτα διότι επιτρζπει τθν αλλαγι τιμϊν ςτα ςτοιχεία του πίνακα: Μερικζσ φορζσ δεν είναι επικυμθτό Προςτατεφουμε τα περιεχόμενα του πίνακα από πικανι τροποποίθςθ χριςθ const πριν από τθν παράμετρο πίνακα λζει ςτον μεταφραςτι ότι δεν πρζπει να αλλάξουν τα ςτοιχεία void showtheworld(const int a[], int size) cout << "Ο πίλαθας έτεη ηης αθόιοσζες ηηκές:\n"; for (int i = 0; i < size; a[i]++) cout << a[i] << " "; cout << endl; Δεν το επιτρζπει θ χριςθ const 7-29

Μερικϊσ ςυμπλθρωμζνοι πίνακεσ Είναι ςχετικά δφςκολο να γνωρίηουμε το ακριβζσ μζγεκοσ του πίνακα που χρειαηόμαςτε τθ διλωςθ πρζπει να το δθλϊςουμε όςο γίνεται μεγαλφτερο (χωρίσ υπερβολζσ!!!) Σότε πρζπει να ςθμειϊνουμε τα κανονικά δεδομζνα του πίνακα Χριςθ επιπλζον μεταβλθτισ που παρακολουκεί το πλικοσ των αναγκαίων ςτοιχείων int numberused; Παρακολουκεί το πλικοσ ςτοιχείων ενόσ πίνακα Σθν μεταβλθτι αυτι πρζπει να τθν δθλϊνουμε ςαν ξεχωριςτι μεταβλθτι ςτα ορίςματα των ςυναρτιςεων 7-30

void fillarray(int a[], int size, int& numberused) cout << "Δώζηε κέτρη " << size << " κε αρλεηηθούς.\n" << "ζεκεηώζηε ηο ηέιος κε έλαλ αρλεηηθό αρηζκό.\n"; int next, index = 0; cin >> next; while ((next >= 0) && (index < size)) a[index] = next; index++; cin >> next; numberused = index; const int MAX_NUMBER_SCORES = 10; int score[max_number_scores], numberused; cout << "Δώζηε βαζκοιογίες:\n"; fillarray(score, MAX_NUMBER_SCORES, numberused); 7-31

#include <iostream> using namespace std; const int MAX_NUMBER_SCORES = 10; void fillarray(int a[], int size, int& numberused); double computeaverage(const int a[], int numberused); void showdifference(const int a[], int numberused); int main( ) int score[max_number_scores], numberused; cout << " Δώζηε βαζκοιογίες:\n"; fillarray(score, MAX_NUMBER_SCORES, numberused); showdifference(score, numberused); return 0; 7-32

double computeaverage(const int a[], int numberused) double total = 0.0; for (int index = 0; index < numberused; index++) total = total + a[index]; if (numberused > 0) return (total/numberused); else cout << "ERROR.\n" << "computeaverage returns 0.\n"; return 0.0; void showdifference(const int a[], int numberused) double average = computeaverage(a, numberused); cout << "Μέζος όρος είλαη" << average << endl << "Με δηαθορές:\n"; for (int index = 0; index < numberused; index++) cout << a[index] << " "<< (a[index] - average) << endl; 7-33

Ενότθτα 16 ΠΟΛΤΔΙΑΣΑΣΟΙ ΠΙΝΑΚΕ 7-34

Πολυδιάςτατοι πίνακεσ Πίνακεσ με παραπάνω από ζνα δείκτθ char page[30][100]; Δφο δείκτεσ: "πίνακασ από πίνακεσ" Οπτικοποιοφμε ωσ: page[0][0], page[0][1],, page[0][99] page[1][0], page[1][1],, page[1][99] page[29][0], page[29][1],, page[29][99] Η C++ επιτρζπει οποιοδιποτε αρικμό από δείκτεσ Δεν κα αςχολθκοφμε με παραπάνω από δφο 7-35

Παράδειγμα Ποια είναι θ ζξοδοσ του ακόλουκου παραδείγματοσ; int myarray[4][4], index1, index2; for(index1 = 0; index1 < 4; index1++) for(index2 = 0; index2 < 4; index2++) myarray[index1][index2] = index2; for(index1 = 0; index1 < 4; index1++) for(index2 = 0; index2 < 4; index2++) cout << myarray[index1][index2] << " "; cout << endl; 7-36

Παράδειγμα Ποια είναι θ ζξοδοσ του ακόλουκου παραδείγματοσ; int myarray[4][4], index1, index2; for(index1 = 0; index1 < 4; index1++) for(index2 = 0; index2 < 4; index2++) myarray[index1][index2] = index2; for(index1 = 0; index1 < 4; index1++) for(index2 = 0; index2 < 4; index2++) cout << myarray[index1][index2] << " "; cout << endl; Παράδειγμα 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 7-37

Πολυδιάςτατοι πίνακεσ ωσ παράμετροι Παρόμοια με μιασ διάςταςθσ πίνακα Με ςθμαντικζσ διαφορζσ: 1 θ διάςταςθ δεν δίνεται * + Πρζπει να δϊςουμε μια επιπλζον παράμετρο για το μζγεκοσ 2 θ διάςταςθ ΔΙΝΕΣΑΙ Παράδειγμα: void DisplayPage(const char p[][100], int sizedimension1) for (int index1=0; index1<sizedimension1; index1++) for (int index2=0; index2 < 100; index2++) cout << p[index1][index2]; cout << endl; char array[50][100]; DisplayPage(array, 50); 7-38

Ενότθτεσ 14-16 ΟΛΟΚΛΗΡΩΜΕΝΑ ΠΑΡΑΔΕΙΓΜΑΣΑ 4-39

Μθ-αφξουςα τάξθ Γράψτε μια ςυνάρτθςθ θ οποία κα παίρνει ωσ παραμζτρουσ ζναν πίνακα τφπου double και μια παράμετρο int και κα επιςτρζφει μια τιμι int. Θα ελζγχει αν ο πίνακασ είναι ταξινομθμζνοσ κατά αφξουςα τάξθ: a[0] <= a[1] <= a[2] <=... Επιςτρζφει -1 αν ο πίνακασ είναι ταξινομθμζνοσ διαφορετικά επιςτρζφει τον δείκτθ του πρϊτου ςτοιχείου (από αριςτερά προσ τα δεξιά) που είναι εκτόσ ςειράσ. Π.χ., για double a[6] = 1.2, 2.1, 3.3, 2.5, 1.4, 0.0 ; επιςτρζφει 3 7-40

int outoforder(double a[ ], int size) for (int i = 0; i < size; i++) if( a[i] > a[i+1] ) return -1; return (i+1); 7-41

int outoforder(double a[ ], int size) for (int i = 0; i < size; i++) if( a[i] > a[i+1] ) return -1; return (i+1); int outoforder(double a[ ], int size) for (int i = 0; i < size 1; i++) if( a[i] > a[i+1] ) return -1; return (i+1); 7-42

Ειςαγωγι χαρακτιρων Γράψτε ζνα πρόγραμμα που κα ειςάγει μζχρι 10 χαρακτιρεσ μζςα ςε ζναν πίνακα και κα τα εμφανίηει με αντίςτροφθ ςειρά. Για παράδειγμα αν θ είςοδοσ είναι: abcd. τότε θ ζξοδοσ κα είναι: dcba Χρθςιμοποιείςτε μια τελεία. για να ςθματοδοτιςετε το τζλοσ ειςόδου. 7-43

#include <iostream> const int FULL_SIZE = 10; int main( ) cout << "Enter 10 letters:"; char letters[full_size], next; int i = 0, num; cin >> next; while ( (next!= '.') && (i < FULL_SIZE) ) letters[i] = next; i++; cin >> next; num = i; cout << "Reversed:\n"; for( i = num 1; i >= 0; i--) cout << letters[i]; return 0; 7-44

Αναηιτθςθ ςτοιχείου Γράψτε μια ςυνάρτθςθ που κα παίρνει ωσ παράμετρο ζναν πίνακα int, ζναν ακζραιο αρικμό target και ψάχνει αν ο target υπάρχει ςτον πίνακα. Θα επιςτρζφει το δείκτθ του πρϊτου ςτοιχείου που υπάρχει αλλιϊσ κα επιςτρζφει -1 (αν δεν υπάρχει) 7-45

int search(int a[ ], int numberused, int target) int index = 0; bool found = false; while ((!found) && (index < numberused)) if (target == a[index]) else found = true; index++; if (found) return index; else return -1; return -1; 7-46

int search(int a[ ], int numberused, int target) int index = 0; bool found = false; while ((!found) && (index < numberused)) if (target == a[index]) else found = true; index++; Αν μασ ζδιναν τον οριςμό τθσ ςυνάρτθςθσ: bool search(int a[ ],...) if (found) return index; else return -1; return -1; 7-47

bool search(int a[ ], int numberused, int target, int& where) int index = 0; bool found = false; while ((!found) && (index < numberused)) if (target == a[index]) else found = true; index++; Αν μασ ζδιναν τον οριςμό τθσ ςυνάρτθςθσ: bool search(int a[ ],...) if (found) where = index; return found; 7-48

Ιςτόγραμμα Τπάρχουν 4 γραμμζσ παραγωγισ ςε ζνα εργοςτάςιο. Θζλουμε να διαβάηουμε τιμζσ που αντιςτοιχοφν ςτισ ποςότθτεσ προϊόντων από κάκε γραμμι παραγωγισ (άγνωςτο ςε πλικοσ) και να εκτυπϊνουμε μια "ράβδο από *" για κάκε γραμμι παραγωγισ. Η ράβδοσ να ζχει κλιμάκωςθ ςτα 1000 προϊόντα π.χ., κάκε * αντιςτοιχεί ςε 1000, με ςτρογγυλοποίθςθ για 1600 προϊόντα: * * Παράδειγμα...ςυνζχεια Δώζε δεδομένα για ηο εργοζηάζιο 1 (αρνηηικό για ηέλος): 2000 3000 1000-1 Σύνολο = 6000 Δώζε δεδομένα για ηο εργοζηάζιο 2 (αρνηηικό για ηέλος): 2050 3002 1300-1 Σύνολο = 6352 Δώζε δεδομένα για ηο εργοζηάζιο 3 (αρνηηικό για ηέλος): 5000 4020 500 4338-1 Σύνολο = 13868 Δώζε δεδομένα για ηο εργοζηάζιο 4 (αρνηηικό για ηέλος): 2507 6050 1809-1 Σύνολο = 10306 Εργοζηάζιο 1: ****** Εργοζηάζιο 2: ****** Εργοζηάζιο 3: ************** Εργοζηάζιο 4: ********** 7-49

#include <iostream> const int NUMBER_OF_PLANTS = 4; void inputdata(int a[], int lastplantnumber); void scale(int a[], int size); void graph(const int asteriskcount[], int lastplantnumber); void gettotal(int& sum); int round(double number); void printasterisks(int n); int main( ) int production[number_of_plants]; inputdata(production, NUMBER_OF_PLANTS); scale(production, NUMBER_OF_PLANTS); graph(production, NUMBER_OF_PLANTS); return 0; 7-50

void inputdata(int a[], int lastplantnumber) for (int p = 1; p <= lastplantnumber; p++) cout << "Δώζε δεδομένα για ηο εργοζηάζιο " << p ; gettotal(a[p - 1]); void gettotal(int& sum) cout << "(αρνηηικό για ηέλος):\n"; sum = 0; int next; cin >> next; while (next >= 0) sum = sum + next; cin >> next; cout << "Σύνολο = " << sum << endl; 7-51

void scale(int a[], int size) for (int index = 0; index < size; index++) a[index] = round(a[index]/1000.0); int round(double number) return static_cast<int>(floor(number + 0.5)); void graph(const int asteriskcount[], int lastplantnumber) for (int p = 1; p <= lastplantnumber; p++) cout << "Εργοζηάζιο " << p << ": "; printasterisks(asteriskcount[p - 1]); cout << endl; void printasterisks(int n) for (int count = 1; count <= n; count++) cout << "*"; 7-52

Εκλογζσ 10 φοιτθτζσ είναι υποψιφιοι και 40 ψιφοι ζχουν καταχωρθκεί ςε ζναν πίνακα responses. Γράψτε μια ςυνάρτθςθ που δζχεται τον πίνακα responses και εκτυπϊνει τα αποτελζςματα των εκλογϊν. Δθλαδι πόςουσ ψιφουσ πιρε ο κάκε ζνασ από τουσ 10 υποψθφίουσ. Παράδειγμα: int responses[] = 1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10 ; Παράδειγμα Υπ. Ψήθοι 1 2 2 2 3 2 4 2 5 5 6 11 7 5 8 7 9 1 10 3 7-53

#include <iostream> void elections( int responses[], int size ); int main( ) int responses[] = 1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10 ; elections( responses, 40 ); return 0; void elections( int responses[], int size ) int psifoi[11]; for ( int i = 0; i < 11; i++ ) psifoi[ i ] = 0 ; for ( int k = 0; k < size; k++ ) psifoi[ responses[ k ] ] = psifoi[ responses[ k ] ] + 1; cout << "Υποψ. \t Ψήθοι\n"); for ( int i = 0; i < 11; i++ ) cout << i << "\t" << psifoi[ i ] << endl; 7-54

Διάβαςμα και εκτφπωςθ 4x5 πίνακα Γράψτε ζνα πρόγραμμα το οποίο κα ςυμπλθρϊνει ζναν πίνακα a με αρικμοφσ που ειςάγονται από το πλθκτρολόγιο. Οι αρικμοί κα ειςάγονται 5 ανά γραμμι ςε 4 γραμμζσ. Ο πίνακασ κα είναι δθλωμζνοσ: int a[4][5]; τθ ςυνζχεια γράψτε ςυνάρτθςθ τφπου void με το όνομα echo που εκτυπϊνει τον πίνακα που δθμιουργιςατε. Θα τθν καλείτε ωσ εξισ: echo(a, 4); 7-55

void echo(int a[][5], int lines); int main( ) int a[4][5]; int i,j; for(i = 0; i < 4; i++) for(j = 0; j < 5; j++) cin >> a[i][j]; echo(a, 4); void echo(int a[][5], int lines) int i,j; for(i = 0; i < lines; i++) for(j = 0; j < 5; j++) cout << a[i][j] << " "; cout << endl; 7-56

Παράδειγμα μζςου όρου Διςδιάςτατοσ πίνακασ (grades) με βακμολογίεσ φοιτθτϊν Μία γραμμι ανά φοιτθτι τιλεσ βακμολογία ςε test Εκτφπωςθ πίνακα, μζςου όρου / φοιτθτι, μζςου όρου / test test1 test2 test3 φοιτθτισ1 10, 10, 10 φοιτθτισ2 2, 0, 1 φοιτθτισ3 8, 6, 9 φοιτθτισ3 8, 4, 10 7-57

Παράδειγμα μζςου όρου Διςδιάςτατοσ πίνακασ (grades) με βακμολογίεσ φοιτθτϊν Μία γραμμι ανά φοιτθτι τιλεσ βακμολογία ςε test Εκτφπωςθ πίνακα, μζςου όρου / φοιτθτι, μζςου όρου / test test1 test2 test3 φοιτθτισ1 grades[0][0] grades[0][1] grades[0][2] φοιτθτισ2 grades[1][0] grades[1][1] grades[1][2] φοιτθτισ3 grades[2][0] grades[2][1] grades[2][2] φοιτθτισ3 grades[3][0] grades[3][1] grades[3][2] 7-58

Παράδειγμα μζςου όρου Διςδιάςτατοσ πίνακασ (grades) με βακμολογίεσ φοιτθτϊν Μία γραμμι ανά φοιτθτι τιλεσ βακμολογία ςε test Εκτφπωςθ πίνακα, μζςου όρου / φοιτθτι, μζςου όρου / test test1 test2 test3 φοιτθτισ1 grades[0][0] grades[0][1] grades[0][2] φοιτθτισ2 grades[1][0] grades[1][1] grades[1][2] φοιτθτισ3 grades[2][0] grades[2][1] grades[2][2] φοιτθτισ3 grades[3][0] grades[3][1] grades[3][2] quizave[ ]: quizave[0] quizave[1] quizave[2] 7-59

Παράδειγμα μζςου όρου Διςδιάςτατοσ πίνακασ (grades) με βακμολογίεσ φοιτθτϊν Μία γραμμι ανά φοιτθτι τιλεσ βακμολογία ςε test Εκτφπωςθ πίνακα, μζςου όρου / φοιτθτι, μζςου όρου / test test1 test2 test3 φοιτθτισ1 grades[0][0] grades[0][1] grades[0][2] φοιτθτισ2 grades[1][0] grades[1][1] grades[1][2] φοιτθτισ3 grades[2][0] grades[2][1] grades[2][2] φοιτθτισ3 grades[3][0] grades[3][1] grades[3][2] stav[ ]: stav[0] stav[1] stav[2] stav[3] quizave[ ]: quizave[0] quizave[1] quizave[2] 7-60

#include <iostream> const int NUMBER_ST = 4, NUMBER_QZ = 3; void computestave(const int grade[][number_qz], double stave[]); void computequizave(const int grade[][number_qz], double quizave[]); void display(const int grade[][number_qz], const double stave[], const double quizave[]); int main( ) int grade[number_st][number_qz]; double stave[number_st], quizave[number_qz]; grade[0][0] = 10; grade[0][1] = 10; grade[0][2] = 10; grade[1][0] = 2; grade[1][1] = 0; grade[1][2] = 1; grade[2][0] = 8; grade[2][1] = 6; grade[2][2] = 9; grade[3][0] = 8; grade[3][1] = 4; grade[3][2] = 10; computestave(grade, stave); computequizave(grade, quizave); display(grade, stave, quizave); 7-61

void computestave(const int grade[][number_qz], double stave[]) for (int stnum = 1; stnum <= NUMBER_ST; stnum++) double sum = 0; for (int quiznum = 1; quiznum <= NUMBER_QZ; quiznum++) sum = sum + grade[stnum-1][quiznum-1]; stave[stnum-1] = sum/number_qz; void computequizave(const int grade[][number_qz], double quizave[]) for (int quiznum = 1; quiznum <= NUMBER_QZ; quiznum++) double sum = 0; for (int stnum = 1; stnum <= NUMBER_ST; stnum++) sum = sum + grade[stnum-1][quiznum-1]; quizave[quiznum-1] = sum/number_st; //Average for quiz quiznum is the value of quizave[quiznum-1] 7-62

void display(const int grade[][number_qz], const double stave[], const double quizave[]) for (int stnum = 1; stnum <= NUMBER_ST; stnum++) cout << stnum << stave[stnum-1] << " "; for (int quiznum = 1; quiznum <= NUMBER_QZ; quiznum++) cout << grade[stnum-1][quiznum-1]; cout << endl; cout << "Quiz averages = "; for (int quiznum = 1; quiznum <= NUMBER_QZ; quiznum++) cout << quizave[quiznum-1]; cout << endl; 7-63

Πίνακεσ (ςφνοψθ) Είναι μια ςυλλογι από μεταβλθτζσ Βρόχοι for ταιριάηουν απόλυτα για τουσ πίνακεσ Είςτε υπεφκυνοι για να μθν βγείτε ζξω από τα όρια του πίνακα Η παράμετροσ Πίνακα είναι ζνα "νζοσ" τφποσ Παρόμοια με τθ παράμετρο με αναφορά Σα ςτοιχεία του πίνακα αποκθκεφονται ςειριακά "υνεχόμενο" κομμάτι ςτθν μνιμθ Μόνο θ διεφκυνςθ του 1 ου ςτοιχείου περνάει ςε ςυν/ςεισ Μερικϊσ ςυμπλθρωμζνοι πίνακεσ περιςςότερεσ μεταβλθτζσ Πολυδιάςτατοι πίνακεσ "πίνακασ από πίνακεσ" 7-64

Συχαίοι αρικμοί #include <iostream> #include <cstdlib> using namespace std; int main() int a[10]; double b[20]; srand(time(0)); for(int i=0; i< 10; i++) a[i] = rand()%10 + 1; //random integers in [1,10] for(int j=0; j< 20; j++) b[j] = (RAND_MAX - rand())/static_cast<double>(rand_max); // random doubles in [0,1] for(int i=0; i< 10; i++) cout << a[i] << endl; for(int j=0; j< 20; j++) cout << b[j] << endl; 7-65

PreLab-5.pdf ΠΡΙΝ το 5 ο Εργαςτιριο κα πρζπει να αςχολθκείτε με τα (απλά) ηθτιματα. 1 ο Θζλουμε να ςυμπλθρϊςουμε τα 20 ςτοιχεία ενόσ μονοδιάςτατου πίνακα με τυχαίες ακζραιεσ τιμζσ ( rand() )και ςτθ ςυνζχεια να βροφμε: (α) το άκροιςμα των ςτοιχείων (β) τον μζςο όρο (γ) το μζγιςτο και (δ) το ελάχιςτο. Για κάκε ζναν υπολογιςμό από τουσ (α) (δ) φτιάξτε και μια ξεχωριςτι ςυνάρτθςθ. 2 ο Γράψτε μια ςυνάρτθςθ που δζχεται ζναν πίνακα από ακεραίουσ και εκτυπϊνει με τθν μορφι ιςτογράμματοσ τθν ποςότθτα κάκε ςτοιχείου του πίνακα με τουσ χαρακτιρεσ «*». Π.χ., αν Α*+ =,3,4,5-: *** **** ***** τθ ςυνζχεια δοκιμάςτε το αποτζλεςμα τθσ ςυνάρτθςθσ με ζναν πίνακα 10 ακεραίων. Η τιμι κάκε ςτοιχείου του πίνακα να είναι ζνασ τυχαίοσ αρικμόσ ( rand() ) ςτο διάςτθμα *5,15+. 7-66

Βιβλιογραφία Καλι Μελζτθ [1] W. Savitch, Πλιρθσ C++, Εκδόςεισ Σηιόλα, 2011 [2+ Η. Deitel and P. Deitel, C++ Προγραμματιςμόσ 6θ Εκδοςθ, Εκδόςεισ Μ. Γκιοφρδασ, 2013 Υλη βιβλιογραφίασ [1]: 5.1, 5.2, 5.3, 5.4 [2]: Κεφ. 7 7-67