8. ΠΙΝΑΚΕΣ (ARRAYS) (Πρόχειρο σχέδιο - Μαθήµατος 5) //26. Array.cpp #include <iostream> using namespace std;

Σχετικά έγγραφα
Σελίδα 1/17. //01 CAFES.cpp -EΙΣΑΓΩΓΙΚΟ #include <cstdlib> #include <iostream> using namespace std;

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

18. ΡΕΥΜΑΤΑ(STREAMS) ΚΑΙ ΑΡΧΕΙΑ (FILES)

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

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

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

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

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

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

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

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

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

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

Διάλεξη 11η: Δείκτες, μέρος 1

Δομημένος Προγραμματισμός (ΤΛ1006)

Διδάσκων: Παναγιώτης Ανδρέου

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Θεόδωρος Γ. Λάντζος Διάλεξη Νο1

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

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

Διάλεξη 6: Δείκτες και Πίνακες

Οι δείκτες στη γλώσσα C

οµές (structures) και Eνώσεις (unions)

Προγραμματισμό για ΗΜΥ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( )

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Βασικά Στοιχεία της Java

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

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

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

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

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

Ερώτημα Α 1. Να γράψετε τις εντολές που πραγματοποιούν τα ακόλουθα:

Περιεχόμενα. Πρόλογος... 17

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

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

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Εντολές επανάληψης Εντολές επανάληψης while for do-while ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Παράδειγμα #1 Εντολή while

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

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

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

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

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

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

Γλώσσες Προγραμματισμού

Υπερφόρτωση τελεστών (operator(

Εισαγωγή στον Προγραµµατισµό «C»

Περιεχόμενα. Πρόλογος... 21

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Δομημένος Προγραμματισμός (ΤΛ1006)

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

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

Βασικά Στοιχεία της Java

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

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

Transcript:

(Πρόχειρο σχέδιο - Μαθήµατος 5) 8. ΠΙΝΑΚΕΣ (ARRAYS) //26. Array.cpp int main(void) int age[4]; //Πίνακας από 4 ακεραίους cout << "DOSTE 4 numbers"<< endl; for(int j = 0; j < 4; j++) cout << " : "; cin >> age[j]; cout << "NA TI EXOYME" << endl; for(int j = 0; j < 4; j++) cout << j<<":" << age[j]<< endl; Το µέγεθος του πίνακα προσδιορίζει πόσα στοιχεία θα έχει ο πίνακας (age[4] έχει 4 στοιχεία). Ο αριθµός µέσα στα [..] είναι το µέγεθος του πίνακα και είναι ακέραια σταθερή. Θα µπορούσε να είχε δηλωθεί και ως const int NB=4; int age[nb]; // Πίνακας από NB=4 ακεραίους Tα δεδοµένα του πίνακα ονοµάζονται στοιχεία σε αντίθεση µε τα δεδοµένα της δοµής που λέγονται µέλη. Όλα τα στοιχεία ενός πίνακα είναι ίδιου τύπου (εδώ ακέραιοι). Το πρώτο στοιχείο αριθµείται µε 0. (στο παράδειγµά µας int age[4], έχουµε 4 ακεραίους που απαιτούν 4x4=16 byte (32bit sys) µνήµη) Αρχικές τιµές σε πίνακα int days[12]=31,28,31, 30,31,30, 31,31,30, 31,30,31; ή και int days[ ]=31,28,31,30,31,30,31,31,30,31,30,31; //εδώ ξέρει ότι έχει 12 στοιχεία αν είχα int days[12]=31,28,31 //τα υπόλοιπα 9 στοιχεία θα πάρουν τιµή 0 Πολυδιάστατος πίνακας //27. 2DArray.cpp δυσδιάστατος πίνακας #include <iomanip> const int DISTRICTS = 3; //περιοχές const int MONTHS = 2; //µήνες int main(void) int d, m; double sales[districts][months]; VK - page 36

cout << endl; for(d = 0; d < DISTRICTS; d++) for(m = 0; m < MONTHS; m++) cout << "Sales for district " << d + 1; cout << ", minas " << m + 1 << ": "; cin >> sales[d][m]; cout << "\n\n"; cout << "\nminas "; for(m = 0; m < MONTHS; m++) cout<<setw(10)<<m+1; for(d = 0; d < DISTRICTS; d++) cout << "\ndistrict " << d + 1; for(m = 0; m < MONTHS; m++) cout << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(2) << setw(10) << sales[d][m]; cout << endl; Ο παραπάνω πίνακας sales είναι ένας πίνακας από πίνακες. Κάθε µία από τις 3 περιοχές έχει για 2 µήνες στοιχεία πωλήσεων. (double sales[districts][months] ή double sales[3][2] Εποµένως αν θέλω τις πωλήσεις της 2 ης περιοχής το 2 ο µήνα γράφω sales[1][1]. Κάθε δεικτης έχει τα δικά του [..] //δεν βάζω, δηλ όχι sales[3,2] Αρχική τιµή double sales[3][2]= 1,4, 5,3, 8.4,9.5 ; //3 σετ των 2 Μπορώ να έχω παραπάνω από 2 διαστάσεις πίνακα Μπορώ να περάσω πίνακα σαν παράµετρο σε συνάρτηση Πίνακες µπορεί να είναι τύπου δοµής, ή και τύπου κλάσης και να έχω πίνακα από αντικείµενα. Πίνακες µπορεί να είναι µέλη κλάσης. Αν έχω ένα πίνακα από αντικείµενα π.χ. klasi Κ[3]; για να καλέσω µια συνάρτηση-µέλος της κλάσης klasi, µε όνοµα π.χ. show() θα προσπελάσω τα 3 αντικείµενα του πίνακα δίνοντας: Κ[0].show();Κ[1].show();Κ[2].show(); VK - page 37

9. ΕΙΚΤΕΣ (POINTEURS) Μπορείς να βρεις την διεύθυνση µια µεταβλητής µε τον τελεστή &. int a; cout<< &a; // 0x 22ff18 Οι µεταβλητές που κρατούν διευθύνσεις άλλων µεταβλητών καλούνται δείκτες (pointeurs). ηλώνονται µε * που σηµαίνει δείχνει προς.π.χ. int* ptr; //µεταβλητή δείκτη προς ακέραιο char* ptr; //µεταβλητή δείκτη προς χαρακτήρα //28. pointeurs int a=3; int* ptr; ptr=&a; cout<< &a <<endl; // 0x 22ff18 ptr=&a; //0x 22ff18 -ανάθεση τιµής στη µεταβλητή ptr ίση µε την διεύθυνση του a cout<<*ptr<<endl; // 3 - η τιµή της µεταβλητής που δείχνει ο ptr είναι 3 cout<<&ptr<<endl; system( "PAUSE" ); αmεταβλητή είκτη ptr = 0x 22ff18 βρίσκεται στο 0x 22ff25 Ακέραια µεταβλητή a =3 βρίσκεται στο 0x 22ff18 Η µεταβλητή δείκτη ptr έχει τιµή την διεύθυνση της a και έχει την ιδιότητα να µπορεί να δώσει την τιµή της µεταβλητής a στην οποία δείχνει. *ptr=3 Ο τελεστής * πριν το όνοµα της µεταβλητής λέγεται τελεστής αποαναφοροποίησης (dereference operator) Μερικές φορές λέγεται και τελεστής έµµεσης αναφοράς (indirection operator). Συντακτικά όµοιο να µπαίνει * πριν το όνοµα της µεταβλητής int* ptr; //µεταβλητή δείκτη προς ακέραιο int *ptr; //» Οι δείκτες πρέπει να έχουν τιµή γιατί αρχικά ένας δείκτης δεν έχει τιµή είκτης σε void H διεύθυνση, που τοποθετείτε σε ένα δείκτη πρέπει να είναι ίδιου τύπου δεδομένων με τον δείκτη. float flovar=98.6; int* ptrint=&flovar; //λάθος δεν είναι ίδιου τύπου Εξαίρεση void *ptr; // ο pointeur μπορεί να δείξει σε οποιοδήποτε τύπο δεδομένων είκτες και Πίνακες Το όνοµα ενός πίνακα είναι η διεύθυνσή του. Τα στοιχεία του πίνακα µπορούν να προσπελαστούν και µε συµβολισµό δεικτών VK - page 38

//29. Pointeurs & arrays int A[5]=31,54,77,52,93; for (int j=0;j<5;j++) //cout<<a[j]<<" "; cout<<*(a+j)<<" "; * (Α++); // είναι λάθος, δεν µπορεί να τροποποιηθεί µια σταθερά Ταξινόµηση µε δείκτες //30. Ταξινόµηση 2 αριθµών µε δείκτες void order (int*, int*); int n1=100, n2=30; order(&n1,&n2); cout<<"n1="<<n1<<endl; cout<<"n2="<<n2<<endl; void order (int* a, int* b) if (*a >*b) int temp=*a; *a=*b; //αντιµετάθεση *b=temp; //31. Ταξινόµηση πίνακα µε δείκτες, bsort παραλλαγή του bubble Sort void bsort(int* ptr, int n); const int n=10; int A[n]=37,84,62,91,11,65,57,28,19,49; VK - page 39

bsort(a,n); for (int j=0;j<n; j++) cout<<a[j]<<" "; void bsort(int* ptr, int n) void order (int*, int*); int j,k; for (j=0;j<n-1; j++) for (k=0;k<n; k++) order(ptr+j,ptr+k); void order (int* a, int* b) if (*a > *b) int temp=*a; *a=*b; //αντιµετάθεση *b=temp; VK - page 40