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

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

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

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

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

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

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

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

4 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

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

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

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

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

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

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

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

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

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

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

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

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

ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ ΑΣΚΗΣΗ

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

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

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

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

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

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

Διάλεξη 19η: Δομές δεδομένων

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

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

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

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

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

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

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

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

ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ ΑΣΚΗΣΗ

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

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

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

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

Διανύσματα στις 3 Διαστάσεις

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

Μάθημα 22: Δυαδικά δέντρα (Binary Trees)

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

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

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

2 using namespace s t d ; 4 { 12 int t= x ; 6 x=y ; 7 y=t ; 8 } 9 11 { 13 x= y ; 14 y=t ; 15 } {

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

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

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

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

17TimeThis.h function returns reference pointer to same object { return *this; }

Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

4.1 Αναζήτηση. Εισαγωγή στη C++

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

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

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

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

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

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

Συµβολοσειρές - Strings

Συναρτήσεις. Εισαγωγή

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

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

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

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα προηγούμενα ακαδημαϊκά έτη: ΚΑΛΗ ΕΠΙΤΥΧΙΑ!

Προγραμματισμός Δομές Δεδομένων

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

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

Transcript:

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

Γενικά Μια δομή (struct) είναι μία συλλογή δεδομένων. Μπορεί να περιέχει πλήθος μεταβλητών οι οποίες μπορεί να είναι διαφορετικών τύπων. Τα στοιχεία που αποτελούν τη δομή ονομάζονται μέλη της δομής. 2

Προσδιορισμός δομής Ξεκινά με τη δεσμευμένη λέξη struct και ακολούθως το όνομα της δομής. Τα άγκιστρα οριοθετούν τα μέλη της δομής. Το ερωτηματικό στο τέλος ορίζει το τέλος της δομής. struct product { int code; string description; double price; 3

Ορισμός και απόδοση τιμών Αφού προσδιορίσουμε μία δομή, μπορούμε να ορίσουμε μεταβλητές αυτού του τύπου. struct product { int code; string description; double price; int main(){ product apple, orange; // μεταβλητές τύπου product apple.code = 101; // αναφορά σε μεταβλητή μέλους της δομής apple.description = "ambrosia"; apple.price = 1.99; cin >> orange.code >> orange.description >> orange.price; //Ορισμός και απόδοση αρχικών τιμών μαζί product banana = { 102, "chiquita", 2.70 4

Εναλλακτικός ορισμός Ο ορισμός των μεταβλητών δομής μπορεί να γίνει και αμέσως μετά τον προσδιορισμό της. struct product { int code; string description; double price; apple, banana, orange, fruits[50]; 5

H δομή ως παράμετρος συνάρτησης struct Book{ string title; string author; string book_id; void readbook(book &bk) { getline(cin, bk.title); // Το getline() διαβάζει ολόκληρη τη γραμμή getline(cin, bk.author); // π.χ Edgar Allan Poe getline(cin, bk.book_id); void printbook(book bk) { cout << "Book title : " << bk.title <<endl; cout << "Book author : " << bk.author <<endl; cout << "Book id : " << bk.book_id <<endl; int main( ){ struct Book book1; readbook(book1); printbook(book1); 6

Ένθετες δομές Μια δομή δεδομένων μπορεί να χρησιμοποιηθεί σαν μέλος άλλης δομής. Η πρόσβαση στα μέλη της ένθετης δομής γίνεται ιεραρχικά. struct employee { int id; double salary; struct company { employee manager; int years; // ένθετη δομή int main(){ company nike; nike.manager.id = 778899; nike.manager.salary = 80000; nike.years = 12; 7

Παράδειγμα 1 Να ορίσετε μια δομή με το όνομα student με τα ακόλουθα μέλη: Αριθμός μητρώου (int) Επώνυμο (string) Τηλέφωνο (int) Εκτοπισμένος (bool) Να ορίσετε ένα πίνακα 20 θέσεων τύπου student με το όνομα C3 και να γίνεται καταχώριση στοιχείων για 20 μαθητές από το πληκτρολόγιο. 8

Παράδειγμα 1 #include <iostream> using namespace std; struct student { int am; string name; int tel; bool ekt; int main(){ student C3[20]; for (int i=0; i<20; i++) cin >> C3[i].am >> C3[i].name >> C3[i].tel >> C3[i].ekt; 9

Παράδειγμα 2 Διαχειρίζεστε μια ιστοσελίδα και θέλετε να υπολογίσετε τα έσοδα από τις διαφημίσεις. Να ορίσετε μια δομή (advertising) που να κρατά δεδομένα για το πλήθος των διαφημίσεων (int), το ποσοστό διαφημίσεων που έχει επιλεγεί για προβολή (int) και το ποσό που κερδίζετε από κάθε διαφήμιση που προβλήθηκε (double). Η είσοδος των δεδομένων να γίνεται από το πληκτρολόγιο. Να υλοποιήσετε μια συνάρτηση (calculate) που να δέχεται σαν παράμετρο μια δομή advertising και να υπολογίζει τα συνολικά κέρδη από τις διαφημίσεις. 10

Παράδειγμα 2 #include <iostream> using namespace std; struct advertising { int total; double percent; double avg; double calculate(advertising ad){ return (ad.total * ad.percent / 100 * ad.avg); int main(){ advertising ads; cin >> ads.total; cin >> ads.percent; cin >> ads.avg; cout << calculate(ads); 11

Παράδειγμα 3 Προσδιορίστε μια δομή (fraction) που να έχει ως μέλη τον αριθμητή (int) και τον παρονομαστή (int) ενός κλάσματος. Να ορίσετε δύο μεταβλητές τύπου fraction για τις οποίες το πρόγραμμα θα δέχεται τα δεδομένα εισόδου από το πληκτρολόγιο. Να υλοποιήσετε συνάρτηση (multiply) η οποία να δέχεται σαν παραμέτρους δύο δομές fraction και να υπολογίζει το γινόμενο των δύο κλασμάτων: (1/2)*(2/3) = (1*2)/(2*3) 12

#include <iostream> using namespace std; Παράδειγμα 3 struct fraction{ int numerator; int denominator; double multiply(fraction f1, fraction f2){ return ((double)(f1.numerator * f2.numerator) / (f1.denominator * f2.denominator)); int main(){ fraction fra1, fra2; cin >> fra1.numerator >> fra1.denominator; cin >> fra2.numerator >> fra2.denominator; cout << multiply(fra1, fra2); 13

Παράδειγμα 4 Προσδιορίστε μια δομή (member) που να έχει ως μέλη τον κωδικό (int), το email (string) και μια ένθετη δομή (date) η οποία θα έχει ως μέλη τη μέρα (int), το μήνα (int) και τη χρονολογία γεννήσεως (int). Το πρόγραμμα θα δέχεται τα δεδομένα για 50 άτομα και θα εμφανίζει το email όσων έχουν γεννηθεί τις 5 Σεπτεμβρίου του 1980. 14

Παράδειγμα 4 #include <iostream> #include <string> using namespace std; struct date{ int d; int m; int y; struct member{ int code; string email; date dob; int main(){ member mem[50]; for (int i=0; i<50; i++) cin >> mem[i].code >> mem[i].email >> mem[i].dob.d >> mem[i].dob.m >> mem[i].dob.y; for (int i=0; i<50; i++) if (mem[i].dob.d == 5 && mem[i].dob.m == 9 && mem[i].dob.y == 1980) cout << mem[i].email << endl; 15