ALS
Μηχανικών Πληροφορικής ΤΕ
Μηνύματα: 557
Θετικοί ψήφοι: +634
Αποσυνδεδεμένος
C'est la vie...
|
22 Ιουνίου 2014, 09:37
|
+1
|
Μήπως έχει κανείς τα θέματα απ΄ τη θεωρία της εξεταστικής του Ιανουαρίου να τα ανεβάσει; Η αν θυμάται κάποιος τι έπεσε να μας πει..
|
|
|
Καταγράφηκε
|
Think less..Live more...
|
|
|
|
DiStancE
Μηνύματα: 35
Θετικοί ψήφοι: +32
Αποσυνδεδεμένος
|
Να γραφεί πρόγραμμα στη γλώσσα C++, το οποίο θα επιτελεί τα ακόλουθα: i. Θα δημιουργεί μία κλάση A_base, με μεταβλητές-μέλη δύο αλφαριθμητικά a_char_1[20], a_char_2[30] και μία ακέραια μεταβλητή-μέλος a_int_1. Οι μεταβλητές-μέλη θα πρέπει να είναι άμεσα προσπελάσιμες από απορρέουσες από την A_base κλάσεις αλλά όχι από κώδικα εκτός της A_base και των απορρεουσών κλάσεων. i.1 Τα αντικείμενα της κλάσης A_base θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. i.2 Τα περιεχόμενα των μεταβλητών-μελών της κλάσης A_base θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση-μέλος printData(). i.3 Στα αντικείμενα της κλάσης Α_base θα γίνεται υπερφόρτωση του τελεστή ++, κατά την οποία θα αυξάνει κατά μία μονάδα η τιμή της μεταβλητής-μέλος a_int_1. ii. Θα δημιουργεί μία κλάση A_der, η οποία θα απορρέει με δημόσια κληρονομικότητα από την κλάση A_base, με μεταβλητή-μέλος αριθμό κινητής υποδιαστολής μονής ακρίβειας a_float_1. Η μεταβλητή-μέλος θα είναι ιδιωτική. ii.1 Τα αντικείμενα της κλάσης A_der θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. ii.2 Τα περιεχόμενα των μεταβλητών-μελών της κλάσης A_der θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση- μέλος printData(), η οποία θα υπερφορτώνει την συνώνυμη συνάρτηση της κλάσης A_base. ii.3 Η κλάση Α_der θα περιλαμβάνει συνάρτηση-μέλος prodNum(), η οποία επιστρέφει το γινόμενο των μεταβλητών-μελών a_int_1 και a_float_1 ως αριθμό κινητής υποδιαστολής μονής ακρίβειας. iii. Στη συνάρτηση main() θα δημιουργούνται αντικείμενα obj_1 και obj_3 κλάσης A_base, με αρχικές τιμές "John", "Doe", 1777 και "Chris", "Mullin", 2133, αντίστοιχα. Επίσης θα δημιουργείται αντικείμενο obj_2 κλάσης A_der, με αρχικές τιμές "Joanna", "Foe", 100, 231.673. Τα περιεχόμενα των τριών αντικειμένων θα απεικονίζονται στην οθόνη. Ακολούθως θα εκτελούνται οι προτάσεις obj_2.prodNum; και ++obj_3; και τα περιεχόμενα του obj_3 θα απεικονίζονται εκ νέου στην οθόνη.
|
|
|
Καταγράφηκε
|
|
|
|
DiStancE
Μηνύματα: 35
Θετικοί ψήφοι: +32
Αποσυνδεδεμένος
|
Να γραφεί πρόγραμμα στη γλώσσα C++, το οποίο θα επιτελεί τα ακόλουθα: i. Θα δημιουργεί μία κλάση B_base, με μεταβλητές-μέλη δύο αριθμούς κινητής υποδιαστολής μονής ακρίβειας b_float_1, b_float_2 και μία ακέραια μεταβλητή-μέλος b_int_1. Οι μεταβλητές-μέλη θα είναι ιδιωτικές. i.1 Τα αντικείμενα της κλάσης Β_base θα λαμβάνουν τιμές από το πληκτρολόγιο μέσω συνάρτησης-μέλους readData(). i.2 H κλάση B_base θα περιλαμβάνει συνάρτηση-μέλος returnFloat(char selection[]), η οποία θα δέχεται ως όρισμα το αλφαριθμητικό selection και θα επιστρέφει την τιμή της μεταβλητής μέλος b_float_1 ή της b_float_2 ανάλογα με το περιεχόμενο της selection ("One" ή "Two", αντίστοιχα). Εάν η selection έχει κάποιο άλλο περιεχόμενο, τότε η συνάρτηση θα επιστρέφει το 0.0. ii. Θα δημιουργεί μία κλάση B_der, η οποία θα απορρέει με δημόσια κληρονομικότητα από την κλάση B_base, με μεταβλητή-μέλος ένα αλφαριθμητικό b_char_1. Η μεταβλητή-μέλος θα είναι ιδιωτική. ii.1 Τα αντικείμενα της κλάσης Β_der θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. ii.2 Τα περιεχόμενα όλων των μεταβλητών-μελών της κλάσης Β_der θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση-μέλος printData(). iii. Στη συνάρτηση main() θα δημιουργείται δείκτης obj_1_ptr σε αντικείμενο κλάσης B_base. Ακολούθως με δυναμική δέσμευση μνήμης θα δημιουργείται αντικείμενο κλάσης Β_base, στο οποίο θα αποδίδονται τιμές από το πληκτρολόγιο. Τα περιεχόμενα του αντικειμένου θα απεικονίζονται στην οθόνη. Στη συνέχεια θα δημιουργείται αντικείμενο obj_2 κλάσης Β_der, με αρχικές τιμές 5.5, 2.0, 100, "Νew string". Τα περιεχόμενα του obj_2 αντικειμένου θα απεικονίζονται στην οθόνη. Τέλος θα καλείται δύο φορές η συνάρτηση-μέλος returnFloat του αντικειμένου κλάσης B_base με ορίσματα "One" και "Two" αντίστοιχα και οι επιστρεφόμενες τιμές των δύο κλήσεων θα πολλαπλασιάζονται μεταξύ τους. Το προκύπτον γινόμενο θα απεικονίζεται στην οθόνη.
|
|
|
Καταγράφηκε
|
|
|
|
DiStancE
Μηνύματα: 35
Θετικοί ψήφοι: +32
Αποσυνδεδεμένος
|
Να γραφεί πρόγραμμα στη γλώσσα C++, το οποίο θα επιτελεί τα ακόλουθα: i. Θα δημιουργεί μία κλάση C_base, με μεταβλητές-μέλη ένα αλφαριθμητικό c_char_1[40] και μία ακέραια μεταβλητή-μέλος c_int_1. Οι μεταβλητές-μέλη θα πρέπει να είναι άμεσα προσπελάσιμες από απορρέουσες από την C_base κλάσεις αλλά όχι από κώδικα εκτός της C_base και των απορρεουσών κλάσεων. i.1 Τα αντικείμενα της κλάσης C_base θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. i.2 Τα περιεχόμενα των μεταβλητών-μελών της κλάσης C_base θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση-μέλος printData(). i.3 Στα αντικείμενα της κλάσης C_base θα γίνεται υπερφόρτωση του τελεστή >, κατά την οποία θα συγκρίνονται οι μεταβλητές-μέλη c_int_1 δύο αντικειμένων κλάσης C_base και θα επιστρέφεται true σε περίπτωση που ισχύει η ανισότητα. Σε αντίθετη περίπτωση θα επιστρέφεται false. ii. Θα δημιουργεί μία κλάση C_der, η οποία θα απορρέει με δημόσια κληρονομικότητα από την κλάση C_base, με μεταβλητή-μέλος αλφαριθμητικό c_char_2[20]. Η μεταβλητή-μέλος θα είναι ιδιωτική. ii.1 Τα αντικείμενα της κλάσης C_der θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. ii.2 Τα περιεχόμενα των μεταβλητών-μελών της κλάσης C_der θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση- μέλος printData(), η οποία θα υπερφορτώνει την συνώνυμη συνάρτηση της κλάσης C_base. ii.3 Η κλάση C_der θα περιλαμβάνει συνάρτηση-μέλος replaceString(), η οποία δε θα έχει επιστρεφόμενη τιμή και θα προσαρτά στο τέλος της μεταβλητής-μέλος c_char_1 το περιεχόμενο της μεταβλητής-μέλος c_char_2. iii. Στη συνάρτηση main() θα δημιουργούνται αντικείμενα obj_1 και obj_3 κλάσης C_base, με αρχικές τιμές "John", 1777 και "Chris", 2133, αντίστοιχα. Επίσης θα δημιουργείται αντικείμενο obj_2 κλάσης C_der, με αρχικές τιμές "Joanna", 100, "Foe". Τα περιεχόμενα των τριών αντικειμένων θα απεικονίζονται στην οθόνη. Ακολούθως θα εκτελείται η πρόταση obj_2.replaceString;. Τέλος θα εκτελείται η ανισότητα obj_3 > ob_1 και, ανάλογα με το αποτέλεσμα, θα εμφανίζεται κατάλληλο μήνυμα στην οθόνη.
|
|
|
Καταγράφηκε
|
|
|
|
DiStancE
Μηνύματα: 35
Θετικοί ψήφοι: +32
Αποσυνδεδεμένος
|
i. Θα δημιουργεί μία κλάση D_base, με μεταβλητές-μέλη δύο ακεραίους d_int_1, d_int_2. Οι μεταβλητές-μέλη θα είναι ιδιωτικές. i.1 Τα αντικείμενα της κλάσης D_base θα λαμβάνουν τιμές από το πληκτρολόγιο μέσω συνάρτησης-μέλους readData(). i.2 H κλάση D_base θα επιτρέπει μετατροπή τύπου (casting). Δηλαδή θα επιτρέπεται να ανατίθεται σε αντικείμενό της αριθμός κινητής υποδιαστολής μονής ακρίβειας (π.χ. 116.4967) και θα αποδίδει στη μία μεταβλητή-μέλος το ακέραιο μέρος (π.χ. 116) και στην άλλη μεταβλητή-μέλος τα δύο πρώτα ψηφία του δεκαδικού μέρους χωρίς στρογγυλοποίηση (π.χ. 49). ii. Θα δημιουργεί μία κλάση D_der, η οποία θα απορρέει με δημόσια κληρονομικότητα από την κλάση D_base, με μεταβλητή-μέλος ένα αλφαριθμητικό d_char_1. Η μεταβλητή-μέλος θα είναι ιδιωτική. ii.1 Τα αντικείμενα της κλάσης D_der θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. ii.2 Τα περιεχόμενα όλων των μεταβλητών-μελών της κλάσης D_der θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση-μέλος printData(). iii. Στη συνάρτηση main() θα δημιουργoύνται δύο αντικείμενα obj_1, obj_3 κλάσης D_base. Στο πρώτο αντικείμενο θα αποδίδονται τιμές από το πληκτρολόγιο. Τα περιεχόμενα του obj_1 θα απεικονίζονται στην οθόνη. Στη συνέχεια θα δημιουργείται αντικείμενο obj_2 κλάσης D_der, με αρχικές τιμές 117, 23, "Final string". Τα περιεχόμενα του obj_2 θα απεικονίζονται στην οθόνη. Τέλος θα εκτελείται η εντολή obj_3 = 113.245; και ακολούθως τα περιεχόμενα του obj_3 θα απεικονίζονται στην οθόνη
|
|
|
Καταγράφηκε
|
|
|
|
DiStancE
Μηνύματα: 35
Θετικοί ψήφοι: +32
Αποσυνδεδεμένος
|
Να γραφεί πρόγραμμα στη γλώσσα C++, το οποίο θα επιτελεί τα ακόλουθα: i. Θα δημιουργεί μία κλάση A_base, με μεταβλητές-μέλη δύο αλφαριθμητικά a_char_1[20], a_char_2[30] και μία ακέραια μεταβλητή-μέλος a_int_1. Οι μεταβλητές-μέλη θα πρέπει να είναι άμεσα προσπελάσιμες από απορρέουσες από την A_base κλάσεις αλλά όχι από κώδικα εκτός της A_base και των απορρεουσών κλάσεων. i.1 Τα αντικείμενα της κλάσης A_base θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. i.2 Τα περιεχόμενα των μεταβλητών-μελών της κλάσης A_base θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση-μέλος printData(). i.3 Στα αντικείμενα της κλάσης Α_base θα γίνεται υπερφόρτωση του τελεστή ++, κατά την οποία θα αυξάνει κατά μία μονάδα η τιμή της μεταβλητής-μέλος a_int_1. ii. Θα δημιουργεί μία κλάση A_der, η οποία θα απορρέει με δημόσια κληρονομικότητα από την κλάση A_base, με μεταβλητή-μέλος αριθμό κινητής υποδιαστολής μονής ακρίβειας a_float_1. Η μεταβλητή-μέλος θα είναι ιδιωτική. ii.1 Τα αντικείμενα της κλάσης A_der θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. ii.2 Τα περιεχόμενα των μεταβλητών-μελών της κλάσης A_der θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση- μέλος printData(), η οποία θα υπερφορτώνει την συνώνυμη συνάρτηση της κλάσης A_base. ii.3 Η κλάση Α_der θα περιλαμβάνει συνάρτηση-μέλος prodNum(), η οποία επιστρέφει το γινόμενο των μεταβλητών-μελών a_int_1 και a_float_1 ως αριθμό κινητής υποδιαστολής μονής ακρίβειας. iii. Στη συνάρτηση main() θα δημιουργούνται αντικείμενα obj_1 και obj_3 κλάσης A_base, με αρχικές τιμές "John", "Doe", 1777 και "Chris", "Mullin", 2133, αντίστοιχα. Επίσης θα δημιουργείται αντικείμενο obj_2 κλάσης A_der, με αρχικές τιμές "Joanna", "Foe", 100, 231.673. Τα περιεχόμενα των τριών αντικειμένων θα απεικονίζονται στην οθόνη. Ακολούθως θα εκτελούνται οι προτάσεις obj_2.prodNum; και ++obj_3; και τα περιεχόμενα του obj_3 θα απεικονίζονται εκ νέου στην οθόνη.
#include <cstdlib> #include <iostream> using namespace std; class A_base { protected: char a_char_1[20], a_char_2[30]; int a_int_1; public: A_base() {} A_base(char x[], char y[], int z) { strcpy(a_char_1,x); strcpy(a_char_2,y); a_int_1 = z; } void printData() { cout << "\n a_char_1: " << a_char_1; cout << "\n a_char_2: " << a_char_2; cout << "\n a_int_1: " << a_int_1; } A_base operator ++ () { this ‐> a_int_1 ++; return *this; } }; class A_der : public A_base { private: float a_float_1; public: A_der() : A_base() {} A_der(char x[], char y[], int z, float w) : A_base(x, y, z) { // εναλλακτικά, θα μπορούσαν να αναγνωσθούν άμεσα όλες οι μεταβλητές‐μέλη λόγω protected a_float_1 = w; } void printData() { // εναλλακτικά, θα μπορούσαν να εκτυπωθούν άμεσα όλες οι μεταβλητές‐μέλη λόγω protected A_base::printData(); cout << "\n a_float_1: " << a_float_1; } float prodNum() { return(a_int_1*a_float_1); } }; //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ main() { A_base obj_1("John","Doe",1777); A_der obj_2("Joanna","Foe",100,231.673); cout << "\nObject of the base class:" << endl; obj_1.printData(); cout << endl << endl; cout << "\nObject of the derived class:" << endl; obj_2.printData(); cout << "\n Product of numeric variables: " << obj_2.prodNum() << endl; cout << "\nanother object of the base class:" << endl; A_base obj_3("Chris","Mullin",2133); obj_3.printData(); cout << "\n++ Operator overloading:" << endl; ++οβξ_3; ΄ οβξ_3.πριντΔατα(); ΄ ψοθτ << “\ν\ν\ν”; ΄ συστεμ(“ΠΑΘΣΕ”); ΄}
|
|
|
Καταγράφηκε
|
|
|
|
DiStancE
Μηνύματα: 35
Θετικοί ψήφοι: +32
Αποσυνδεδεμένος
|
Να γραφεί πρόγραμμα στη γλώσσα C++, το οποίο θα επιτελεί τα ακόλουθα: i. Θα δημιουργεί μία κλάση B_base, με μεταβλητές-μέλη δύο αριθμούς κινητής υποδιαστολής μονής ακρίβειας b_float_1, b_float_2 και μία ακέραια μεταβλητή-μέλος b_int_1. Οι μεταβλητές-μέλη θα είναι ιδιωτικές. i.1 Τα αντικείμενα της κλάσης Β_base θα λαμβάνουν τιμές από το πληκτρολόγιο μέσω συνάρτησης-μέλους readData(). i.2 H κλάση B_base θα περιλαμβάνει συνάρτηση-μέλος returnFloat(char selection[]), η οποία θα δέχεται ως όρισμα το αλφαριθμητικό selection και θα επιστρέφει την τιμή της μεταβλητής μέλος b_float_1 ή της b_float_2 ανάλογα με το περιεχόμενο της selection ("One" ή "Two", αντίστοιχα). Εάν η selection έχει κάποιο άλλο περιεχόμενο, τότε η συνάρτηση θα επιστρέφει το 0.0. ii. Θα δημιουργεί μία κλάση B_der, η οποία θα απορρέει με δημόσια κληρονομικότητα από την κλάση B_base, με μεταβλητή-μέλος ένα αλφαριθμητικό b_char_1. Η μεταβλητή-μέλος θα είναι ιδιωτική. ii.1 Τα αντικείμενα της κλάσης Β_der θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. ii.2 Τα περιεχόμενα όλων των μεταβλητών-μελών της κλάσης Β_der θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση-μέλος printData(). iii. Στη συνάρτηση main() θα δημιουργείται δείκτης obj_1_ptr σε αντικείμενο κλάσης B_base. Ακολούθως με δυναμική δέσμευση μνήμης θα δημιουργείται αντικείμενο κλάσης Β_base, στο οποίο θα αποδίδονται τιμές από το πληκτρολόγιο. Τα περιεχόμενα του αντικειμένου θα απεικονίζονται στην οθόνη. Στη συνέχεια θα δημιουργείται αντικείμενο obj_2 κλάσης Β_der, με αρχικές τιμές 5.5, 2.0, 100, "Νew string". Τα περιεχόμενα του obj_2 αντικειμένου θα απεικονίζονται στην οθόνη. Τέλος θα καλείται δύο φορές η συνάρτηση-μέλος returnFloat του αντικειμένου κλάσης B_base με ορίσματα "One" και "Two" αντίστοιχα και οι επιστρεφόμενες τιμές των δύο κλήσεων θα πολλαπλασιάζονται μεταξύ τους. Το προκύπτον γινόμενο θα απεικονίζεται στην οθόνη.
#include <cstdlib> #include <iostream> using namespace std; class B_base { private: float b_float_1, b_float_2; int b_int_1; public: B_base() {} B_base(float x, float y, int z) { b_float_1 = x; b_float_2 = y; b_int_1 = z; } void readData() { cout << "\nGive b_float_1: "; cin >> b_float_1; cout << "\nGive b_float_2: "; cin >> b_float_2; cout << "\nGive b_int_1: "; Αντικειμενοστραφής Προγραμματισμός – Φεβρουάριος 2014 - Β 2 cin >> b_int_1; cout << endl << endl; } void printData() { cout << "\n b_float_1: " << b_float_1; cout << "\n b_float_2: " << b_float_2; cout << "\n b_int_1: " << b_int_1; } float returnFloat(char selection[]) { if (strcmp(selection,"One") == 0) return b_float_1; else if (strcmp(selection,"Two") == 0) return b_float_2; else return 0.0; } }; class B_der : public B_base { private: char b_char_1[30]; public: B_der() : B_base() {} B_der(float x, float y, int z, char w[]) : B_base(x, y, z) { strcpy(b_char_1,w); } void printData() { B_base::printData(); cout << "\n b_char_1: " << b_char_1; } }; //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ main() { B_base *obj_1_ptr; obj_1_ptr=new B_base; obj_1_ptr ‐> readData(); B_der obj_2(5.5,2.3,100,"New string"); cout << "\nObject of the base class:" << endl; obj_1_ptr ‐> printData(); cout << endl << endl; cout << "\nObject of the derived class:" << endl; obj_2.printData(); cout << "\n Product of the float variables of obj_1: " << obj_1_ptr ‐> returnFloat("One")*obj_1_ptr ‐ > returnFloat("Two") << endl; cout << "\nanother object of the base class:" << endl; delete obj_1_ptr; cout << "\n\n\n"; system("PAUSE"); }
|
|
|
Καταγράφηκε
|
|
|
|
DiStancE
Μηνύματα: 35
Θετικοί ψήφοι: +32
Αποσυνδεδεμένος
|
Να γραφεί πρόγραμμα στη γλώσσα C++, το οποίο θα επιτελεί τα ακόλουθα: i. Θα δημιουργεί μία κλάση C_base, με μεταβλητές-μέλη ένα αλφαριθμητικό c_char_1[40] και μία ακέραια μεταβλητή-μέλος c_int_1. Οι μεταβλητές-μέλη θα πρέπει να είναι άμεσα προσπελάσιμες από απορρέουσες από την C_base κλάσεις αλλά όχι από κώδικα εκτός της C_base και των απορρεουσών κλάσεων. i.1 Τα αντικείμενα της κλάσης C_base θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. i.2 Τα περιεχόμενα των μεταβλητών-μελών της κλάσης C_base θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση-μέλος printData(). i.3 Στα αντικείμενα της κλάσης C_base θα γίνεται υπερφόρτωση του τελεστή >, κατά την οποία θα συγκρίνονται οι μεταβλητές-μέλη c_int_1 δύο αντικειμένων κλάσης C_base και θα επιστρέφεται true σε περίπτωση που ισχύει η ανισότητα. Σε αντίθετη περίπτωση θα επιστρέφεται false. ii. Θα δημιουργεί μία κλάση C_der, η οποία θα απορρέει με δημόσια κληρονομικότητα από την κλάση C_base, με μεταβλητή-μέλος αλφαριθμητικό c_char_2[20]. Η μεταβλητή-μέλος θα είναι ιδιωτική. ii.1 Τα αντικείμενα της κλάσης C_der θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. ii.2 Τα περιεχόμενα των μεταβλητών-μελών της κλάσης C_der θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση- μέλος printData(), η οποία θα υπερφορτώνει την συνώνυμη συνάρτηση της κλάσης C_base. ii.3 Η κλάση C_der θα περιλαμβάνει συνάρτηση-μέλος replaceString(), η οποία δε θα έχει επιστρεφόμενη τιμή και θα προσαρτά στο τέλος της μεταβλητής-μέλος c_char_1 το περιεχόμενο της μεταβλητής-μέλος c_char_2. iii. Στη συνάρτηση main() θα δημιουργούνται αντικείμενα obj_1 και obj_3 κλάσης C_base, με αρχικές τιμές "John", 1777 και "Chris", 2133, αντίστοιχα. Επίσης θα δημιουργείται αντικείμενο obj_2 κλάσης C_der, με αρχικές τιμές "Joanna", 100, "Foe". Τα περιεχόμενα των τριών αντικειμένων θα απεικονίζονται στην οθόνη. Ακολούθως θα εκτελείται η πρόταση obj_2.replaceString;. Τέλος θα εκτελείται η ανισότητα obj_3 > ob_1 και, ανάλογα με το αποτέλεσμα, θα εμφανίζεται κατάλληλο μήνυμα στην οθόνη.
#include <cstdlib> #include <iostream> using namespace std; class C_base { protected: char c_char_1[40]; int c_int_1; public: C_base() {} C_base(char x[], int y) { strcpy(c_char_1,x); c_int_1 = y; } void printData() { cout << "\n c_char_1: " << c_char_1; cout << "\n c_int_1: " << c_int_1; } bool operator > (C_base c_object) { Αντικειμενοστραφής Προγραμματισμός – Φεβρουάριος 2014 - Γ 2 if (c_int_1 > c_object.c_int_1) return true; else return false; } }; class C_der : public C_base { private: char c_char_2[20]; public: C_der() : C_base() {} C_der(char x[], int y, char z[]) : C_base(x, y) { // εναλλακτικά, θα μπορούσαν να αναγνωσθούν άμεσα όλες οι μεταβλητές‐μέλη λόγω protected strcpy(c_char_2,z); } void printData() { // εναλλακτικά, θα μπορούσαν να εκτυπωθούν άμεσα όλες οι μεταβλητές‐μέλη λόγω protected C_base::printData(); cout << "\n c_char_2: " << c_char_2; } void replaceString() { strcpy(c_char_1,c_char_2); } }; //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ main() { C_base obj_1("John",1777); C_der obj_2("Joanna",100,"Foe"); cout << "\n\nObject of the base class:" << endl; obj_1.printData(); cout << endl << endl; cout << "\n\nObject of the derived class:" << endl; obj_2.printData(); cout << "\n\nobj_2 after string replacement: "; obj_2.replaceString(); obj_2.printData(); cout << "\n\nanother object of the base class:" << endl; C_base obj_3("Chris",2133); obj_3.printData(); cout << "\n\n\nOperator overloading:" << endl; if (obj_3 > obj_1) cout << "object's obj_3 integer value is greater than that of obj_1"; else cout << "object's obj_3 integer value is less than or equal to that of obj_1"; cout << "\n\n\n"; system("PAUSE"); }
|
|
|
Καταγράφηκε
|
|
|
|
DiStancE
Μηνύματα: 35
Θετικοί ψήφοι: +32
Αποσυνδεδεμένος
|
i. Θα δημιουργεί μία κλάση D_base, με μεταβλητές-μέλη δύο ακεραίους d_int_1, d_int_2. Οι μεταβλητές-μέλη θα είναι ιδιωτικές. i.1 Τα αντικείμενα της κλάσης D_base θα λαμβάνουν τιμές από το πληκτρολόγιο μέσω συνάρτησης-μέλους readData(). i.2 H κλάση D_base θα επιτρέπει μετατροπή τύπου (casting). Δηλαδή θα επιτρέπεται να ανατίθεται σε αντικείμενό της αριθμός κινητής υποδιαστολής μονής ακρίβειας (π.χ. 116.4967) και θα αποδίδει στη μία μεταβλητή-μέλος το ακέραιο μέρος (π.χ. 116) και στην άλλη μεταβλητή-μέλος τα δύο πρώτα ψηφία του δεκαδικού μέρους χωρίς στρογγυλοποίηση (π.χ. 49). ii. Θα δημιουργεί μία κλάση D_der, η οποία θα απορρέει με δημόσια κληρονομικότητα από την κλάση D_base, με μεταβλητή-μέλος ένα αλφαριθμητικό d_char_1. Η μεταβλητή-μέλος θα είναι ιδιωτική. ii.1 Τα αντικείμενα της κλάσης D_der θα λαμβάνουν τιμές αποκλειστικά μέσα από συνάρτηση δόμησης. ii.2 Τα περιεχόμενα όλων των μεταβλητών-μελών της κλάσης D_der θα εκτυπώνονται μέσα από κατάλληλη συνάρτηση-μέλος printData(). iii. Στη συνάρτηση main() θα δημιουργoύνται δύο αντικείμενα obj_1, obj_3 κλάσης D_base. Στο πρώτο αντικείμενο θα αποδίδονται τιμές από το πληκτρολόγιο. Τα περιεχόμενα του obj_1 θα απεικονίζονται στην οθόνη. Στη συνέχεια θα δημιουργείται αντικείμενο obj_2 κλάσης D_der, με αρχικές τιμές 117, 23, "Final string". Τα περιεχόμενα του obj_2 θα απεικονίζονται στην οθόνη. Τέλος θα εκτελείται η εντολή obj_3 = 113.245; και ακολούθως τα περιεχόμενα του obj_3 θα απεικονίζονται στην οθόνη
#include <cstdlib> #include <iostream> using namespace std; class D_base { private: int d_int_1, d_int_2; public: D_base() {} D_base(int x, int y) { d_int_1 = x; d_int_2 = y; } D_base(float x) { d_int_1 = (int)x; d_int_2 = (int)((x‐(int)x)*100); } void readData() { cout << "\nGive d_int_1: "; cin >> d_int_1; cout << "\nGive d_int_2: "; cin >> d_int_2; Αντικειμενοστραφής Προγραμματισμός – Φεβρουάριος 2014 - Δ 2 cout << endl << endl; } void printData() { cout << "\n d_int_1: " << d_int_1; cout << "\n d_int_2: " << d_int_2; } }; class D_der : public D_base { private: char d_char_1[30]; public: D_der() : D_base() {} D_der(int x, int y, char z[]) : D_base(x, y) { strcpy(d_char_1,z); } void printData() { D_base::printData(); cout << "\n d_char_1: " << d_char_1; } }; //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ main() { D_base obj_1, obj_3; obj_1.readData(); D_der obj_2(117,23,"Final string"); cout << "\nObject of the base class:" << endl; obj_1.printData(); cout << endl << endl; cout << "\nObject of the derived class:" << endl; obj_2.printData(); obj_3 = 113.245; cout << endl << endl; cout << "\nAnother object of the base class:" << endl; obj_3.printData(); cout << "\n\n\n"; system("PAUSE"); }
|
|
|
Καταγράφηκε
|
|
|
|
ALS
Μηχανικών Πληροφορικής ΤΕ
Μηνύματα: 557
Θετικοί ψήφοι: +634
Αποσυνδεδεμένος
C'est la vie...
|
Εντάξει είσαι φοβερός !! Ευχαριστώ πολύ !
|
|
|
Καταγράφηκε
|
Think less..Live more...
|
|
|
|