Πίνακες (Arrays) Εισαγωγή στη C++

Σχετικά έγγραφα
Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

Δομές Επανάληψης. Εισαγωγή στη C++

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

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

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

Δομές δεδομένων (Structures) Εισαγωγή στη C++

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Β7.1.4 Δομές Επανάληψης. Β Λυκείου Κατεύθυνσης

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Γ7.8 Εγγραφές (Structures) Γ Λυκείου Κατεύθυνσης

Χωρική Βάση δεδοµένων Autocad

Συναρτήσεις (Functions) Εισαγωγή στη C++

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

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Διαδικασιακός Προγραμματισμός

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

Εισαγωγή στην πληροφορική

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολή if. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Πληροφορική 2. Γλώσσες Προγραμματισμού

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι οι πίνακες; Μονοδιάστατοι πίνακες. Απλές μεταβλητές: Κεντρική μνήμη

3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Πληροφορική 2. Αλγόριθμοι

Εισαγωγή στη γλώσσα προγραμματισμού C++

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

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

Εισαγωγή στην πληροφορική

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι οι πίνακες; Μονοδιάστατοι πίνακες. Απλές μεταβλητές: Κεντρική μνήμη

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

Αντικειμενοστραφής Προγραμματισμός

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Μονοδιάστατοι πίνακες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Το πρόγραμμα θα τυπώνει και τους τρεις πίνακες.

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Διαδικασιακός Προγραμματισμός

Στοιχειώδης προγραμματισμός σε C++

Παίρνοντας Αποφάσεις 1

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Δομές Δεδομένων & Αλγόριθμοι

Μονοδιάστατοι πίνακες

Ασκήσεις - Μελέτες περίπτωσης για το μάθημα Προγραμματισμός II

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Προγραµµατιστικές Τεχνικές

Δομημένος Προγραμματισμός

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

ΗΥ-150. Πίνακες (Arrays)

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Εισαγωγή στην πληροφορική

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Αναφορές, είκτες και Αλφαριθμητικά

Εισαγωγή στη γλώσσα προγραμματισμού C++

Ηλεκτρονικοί Υπολογιστές

Προγραμματισμός Η/Υ (ΤΛ2007 )

Διαδικασιακός Προγραμματισμός

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 3 ο (ΜΟΝΟΔΙΑΣΤΑΣΤΟΙ ΠΙΝΑΚΕΣ)

Εισαγωγή στην πληροφορική

Προγραμματισμός I (Θ)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

ΠΕΚ ΤΡΙΠΟΛΗΣ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠ/ΚΩΝ ΠΕ19,20 ΗΜ/ΝΙΑ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι χρειάζεται η εντολή if ; Εντολή if. Παράδειγμα #1. Παράδειγμα #1

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2018 ΤΟ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΑΠΟΤΕΛΕΙΤΑΙ ΑΠΟ ΔΕΚΑΤΡΕΙΣ (13) ΣΕΛΙΔΕΣ.

Κλάσεις και αντικείμενα #include <iostream.h<

Υπολογιστικά Mαθηματικά II

Εισαγωγή στον δομημένο προγραμματισμό

test.txt #include <iostream> #include <fstream> int main()

Διαδικασιακός Προγραμματισμός

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Transcript:

Πίνακες (Arrays) Εισαγωγή στη C++

Γενικά Στη C++, όπως και σε όλες τις γλώσσες προγραμματισμού, υπάρχει η δυνατότητα ομαδοποίησης δεδομένων ίδιου τύπου. Ο τρόπος με τον οποίο επιτυγχάνεται αυτό είναι με τη δημιουργία πινάκων (arrays). Με τη χρήση ενός πίνακα μπορούμε να αποθηκεύσουμε πολλές τιμές μέσα σε μια μόνο δομή: double scores[5]; 2

double scores[5]; Με την πιο πάνω δήλωση, δημιουργούμε πέντε στοιχεία τύπου double (πραγματικός αριθμός) τα οποία αποθηκεύονται σε σειρά στη μνήμη. Τα πέντε στοιχεία του πιο πάνω πίνακα αναφέρονται ως: scores[0], scores[1], scores[2], scores[3], scores[4] Οι αριθμοί μέσα στις αγκύλες καλούνται δείκτες (indexes) Στην C++ η αρίθμηση των στοιχείων ενός πίνακα ξεκινά πάντα από το μηδέν και μπορείτε να τον φανταστείτε όπως πιο κάτω: 3

Στοιχεία πίνακα Μέσα στο πρόγραμμα μπορούμε να χρησιμοποιήσουμε τα στοιχεία του πίνακα σαν κανονικές μεταβλητές: scores[0] = 2.7; scores[2] = 9.5; scores[1] = scores[2]; 4

Δήλωση πινάκων Για τον ορισμό ενός πίνακα παρέχουμε τρία στοιχεία. Το όνομα του πίνακα, τον τύπο δεδομένων των στοιχείων του και το πλήθος των στοιχείων του πίνακα ανάμεσα σε αγκύλες. Το πλήθος των στοιχείων καλείται και μέγεθος του πίνακα, αφού καθορίζει πόσες θέσεις δεδομένων του τύπου που ορίσαμε θα δεσμευτούν στη μνήμη. 5

Απόδοση αρχικών τιμών Αν γνωρίζουμε εκ των προτέρων τις τιμές που θα πάρουν τα στοιχεία του πίνακα, η απόδοση τιμών μπορεί να γίνει ως εξής: int grades[4] = {16, 18, 15, 20}; Η δήλωση του μεγέθους μέσα στις αγκύλες δεν είναι απαραίτητη: int primes[ ] = {1, 2, 3, 5, 7}; Αν το μέγεθος του πίνακα είναι μεγαλύτερο από το πλήθος των στοιχείων, στα στοιχεία του πίνακα που απομένουν θα αποδοθεί ως αρχική τιμή το 0: int a[5] = {12, 5, 4}; // a {12, 5, 4, 0, 0} Αν όμως το μέγεθος του πίνακα είναι μικρότερο από το πλήθος των στοιχείων, τότε υπάρχει σφάλμα: char letters[2] = {'a', 'b', 'c', 'd'}; //Σφάλμα! 6

Εισαγωγή στοιχείων σε πίνακα Για την εισαγωγή στοιχείων σε πίνακα μπορούμε να χρησιμοποιήσουμε τη δομή επανάληψης for μαζί με μια μεταβλητή-δείκτη. Η διαδικασία έχει ως ακολούθως: char arr[10]; for (int i=0; i<10; i++) cin >> arr[i]; // εισαγωγή και καταχώρηση 7

Εμφάνιση στοιχείων του πίνακα Για την εμφάνιση των στοιχείων του πίνακα στην οθόνη χρησιμοποιούμε παρόμοια δομή επανάληψης με την εισαγωγή στοιχείων, αυτή τη φορά με εντολή εξόδου: char arr[10]; for (int i=0; i<10; i++) cin >> arr[i]; for (int i=0; i<10; i++) cout << arr[i] << " "; // εμφάνιση στοιχείου 8

Παράδειγμα 1 Να γράψετε πρόγραμμα που να αποθηκεύει τους αριθμούς 8,0,69,167,349,428,29 σε ένα πίνακα ακεραίων και να τους εμφανίζει στην οθόνη, τον ένα κάτω από τον άλλο. 9

Παράδειγμα 1 #include<iostream> using namespace std; int main(){ int arr[] = {8,0,69,167,349,-428,29}; for (int i = 0; i < 7; i++) cout << arr[i] << endl; return 0; } 10

Παράδειγμα 2 Να γράψετε πρόγραμμα που να διαβάζει δέκα χαρακτήρες από το πληκτρολόγιο και να τους εμφανίζει σε αντίστροφη σειρά στην οθόνη. Παράδειγμα εισόδου A B C D E F G H I J Παράδειγμα εξόδου J I H G F E D C B A 11

Παράδειγμα 2 #include<iostream> using namespace std; int main(){ char arr[10]; for (int i = 0; i < 10; i++) cin >> arr[i]; for (int i = 9; i >= 0; i--) cout << arr[i] << " "; return 0; } 12

Παράδειγμα 3 Να γράψετε πρόγραμμα που να γεμίζει ένα πίνακα ακεραίων 100 θέσεων με τους 30 πρώτους αριθμούς της ακολουθίας: 1, 3, 7, 15, 31, 63, 2Ν-1+1. Ακολούθως να ζητά από το χρήστη ένα αριθμό Ν (1<=Ν<=30) και να επιστρέφει το Ν-οστό αριθμό της πιο πάνω σειράς. Παράδειγμα εισόδου 6 Παράδειγμα εξόδου 63 13

Παράδειγμα 3 #include<iostream> using namespace std; int main(){ int arr[30], Ν; arr[0]=1; for (int i = 1; i < 30; i++) arr[i] = 2 * arr[i-1] + 1; cin >> N; cout << arr[n-1]; return 0; } 14

Παράλληλοι πίνακες Πολλές φορές έχουμε περισσότερα δεδομένα, διαφορετικών τύπων, για να χειριστούμε. Για παράδειγμα, έχουμε τον πιο κάτω πίνακα που παρουσιάζει τα συνολικά κέρδη μια εταιρείας ανά έτος: Για να καταφέρουμε να συσχετίσουμε τα πιο πάνω στοιχεία, μπορούμε να χρησιμοποιήσουμε δύο παράλληλους πίνακες (parallel arrays). Αρχικά καταχωρούμε τα στοιχεία σε δύο πίνακες: int year[] = {2010, 2011, 2012, 2013, 2014}; double profit[] = {97.77, 98.34, 103.56, 102.68, 104.54}; 15

Παράλληλοι πίνακες Αν η τιμή του δείκτη ενός από τους πίνακες, είναι η ίδια με την τιμή του δείκτη του άλλου πίνακα, τότε αναφερόμαστε στα δύο στοιχεία της ίδιας χρονιάς. Δηλαδή τα στοιχεία year[3] και profit[3] θα αναφέρονται στα στοιχεία 2013 και 102.68 αντίστοιχα. Με αυτό τον τρόπο μπορούμε να επιτύχουμε το συσχετισμό ανόμοιων στοιχείων. Αν θέλουμε να εμφανίσουμε το πιο πάνω αποτέλεσμα στην οθόνη, τότε θα χρησιμοποιήσουμε τον πιο κάτω κώδικα: cout << "YEAR" << "\t" << "PROFIT" << endl; // for (int i = 0; i < 5; i++) cout << year[i] << "\t" << profit[i] << endl; \t = TAB 16

Παράδειγμα 4 Ο κανονισμός για την ελλιπή φοίτηση στα λύκεια είναι σαφής. Ειδικά για το Β Τετράμηνο, ο κανονισμός αναφέρει ότι παραπέμπονται σε ανεξετάσεις τον Σεπτέμβριο όσοι έχουν αριθμό αδικαιολόγητων απουσιών μεταξύ 21 και 25 ή στο σύνολο 76 μέχρι 80. Επίσης παραπέμπονται σε όσα μαθήματα συγκεντρώσουν εφταπλάσιο αριθμό απουσιών από τις ώρες διδασκαλίας του μαθήματος. Η γραμματεία έχει δημιουργήσει την πιο κάτω αναφορά για N μαθητές, η οποία παρουσιάζει αναλυτικά τα εξής: αριθμός μητρώου μαθητή, αδικαιολόγητες απουσίες Β τετραμήνου, συνολικές απουσίες Β τετραμήνου και εφταπλάσιο. Ενδεικτικά, η αναφορά εμφανίζεται όπως πιο κάτω. Συγκεκριμένα για το εφταπλάσιο, η αναφορά εμφανίζει 1 αν ο μαθητής έχει συμπληρώσει το εφταπλάσιο σε κάποιο μάθημα, αλλιώς εμφανίζει 0. Aρ. Μητρώου Αδικαιολόγητες Β Τετραμήνου Σύνολο Εφταπλάσιο 1001 30 90 1 1002 26 56 0 1003 19 93 0 1004 24 80 1 1005 25 76 0 Να γράψετε ένα πρόγραμμα να αποθηκεύει τα στοιχεία των μαθητών και να βρίσκει και να εμφανίζει στην οθόνη το πλήθος των μαθητών που παραπέμπονται για το Β τετράμηνο. 17

Παράδειγμα 4 #include <iostream> using namespace std; int main(){ int N, ans=0; cin >> N; int am[n], adik[n], sin[n]; bool eft[n]; for (int i=0; i<n; i++){ cin >> am[i] >> adik[i] >> sin[i] >> eft[i]; if ((adik[i]>=21 && adik[i]<=25) (sin[i]>=76 && sin[i<=80]) (eft[i]==1)) ans++; } cout << ans << endl; return 0; } 18