THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: ^^DaRk_HunTeR on November 20, 2007, 20:34:36 pm



Title: Προγραμματιστικές Τεχνικές Εργασία D 2007
Post by: ^^DaRk_HunTeR on November 20, 2007, 20:34:36 pm
Εργασία D   (Hμ/νία λήξης δηλώσεων: 26/11/2007)

Να γραφεί το πρόγραμμα στο οποίο ορίζονται:
α) Η κλάση Α η οποία περιέχει ως protected στοιχεία τους ακεραίους n και m και την μεταβλητή a τύπου pointer σε pointer σε στοιχεία τύπου int. Στην κλάση να ορίζεται μια συνάρτηση αρχικών συνθηκών η οποία να δέχεται ως ορίσματα τις τιμές των n και m και δεσμεύει δυναμικά μνήμη έτσι ώστε η μεταβλητή a να μπορεί να χρησιμοποιηθεί ως πίνακας τύπου n x m. Στην κλάση να ορισθούν ακόμη οι κατάλληλες συναρτήσεις για το διάβασμα και την εκτύπωση των στοιχείων του πίνακα.
β) Η κλάση Β η οποία να περιέχει ως protected στοιχεία τον ακέραιο n και την μεταβλητή b τύπου pointer σε στοιχεία τύπου int. Στην κλάση να ορίζεται μια συνάρτηση αρχικών συνθηκών η οποία να δέχεται ως όρισμα την τιμή του n και να δεσμεύει δυναμικά μνήμη έτσι ώστε η μεταβλητή b να μπορεί να χρησιμοποιηθεί ως πίνακας διαστάσεως n. Στην κλάση να ορισθούν ακόμη οι κατάλληλες συναρτήσεις για το διάβασμα και την εκτύπωση των στοιχείων του πίνακα.
γ) Η κλάση C ως public παραγόμενη από τις κλάσεις A και B η οποία να περιέχει ως private στοιχεία τον ακέραιο n και την μεταβλητή  c τύπου pointer σε στοιχεία τύπου int. Στην κλάση να ορίζεται μια συνάρτηση αρχικών συνθηκών η οποία να δέχεται ως όρισμα την τιμή του n και να δεσμεύει δυναμικά μνήμη έτσι ώστε η μεταβλητή c να μπορεί να χρησιμοποιηθεί ως πίνακας διαστάσεως n. Στην κλάση να ορισθούν ακόμη οι κατάλληλες συναρτήσεις για το διάβασμα και την εκτύπωση των στοιχείων του πίνακα. Τέλος στην κλάση να ορισθεί η συνάρτηση void mul(void) η οποία να υπολογίζει το διάνυσμα c ως το γινόμενο των πινάκων a και b.
Η συνάρτηση main να διαβάζει τις τιμές των n και m, να ορίζει ένα αντικείμενο τύπου C και να εκτυπώνει για το αντικείμενο αυτό το διάνυσμα c ως γινόμενο των πινάκων a και b.



Title: Re: Προγραμματιστικές Τεχνικές Εργασία D 2007
Post by: TED on November 23, 2007, 11:44:45 am
εδώ θέλει να κάνουμε καινούριο τελεστή για τον πολλαπλασιασμό πινάκων;


Title: Re: Προγραμματιστικές Τεχνικές Εργασία D 2007
Post by: thanasis_leo on November 24, 2007, 17:03:54 pm
Ρε παιδια δεν καταλαβαινω. Ή εγω δεν εχω την καταληλλη νοημοσυνη για να καταλαβω τις ασκησεις ή δεν ξέρουν τι ζητανε.

Λοιπον,στην C class μας ζηταει "να ορισθούν οι κατάλληλες συναρτήσεις για το διάβασμα και την εκτύπωση των στοιχείων του πίνακα" .Αφου ο πινακας θα ειναι αποτέλεσμα του γινομενου των b kai a.Δηλαδη να δημιουργησουμε μια συναρτηση που θα παιρνει τιμες απο το πληκτρολογιο και θα γεμιζει τον πινακα c και μετα θα αντικαταθουν τα στοιχεια του c απο το αποτελεσμα της mul ? Για ποιο λογο να γεμισουμε την C στην αρχη ?

Επιπλεον, στην main ζηταει να δημιουργησουμε μια C η οποια εχει μονο σαν παραμετρο την n. Την μεταβλητη m πως θα την βαλουμε στην C για να δημιουργησουμε τον πινακα a?Με μια καινουρια συναρτηση? Αφου δεν μας λεει να δημιουργησουμε καμια αλλη συναρτηση.      Αααααααααχχχχ.


Title: Re: Προγραμματιστικές Τεχνικές Εργασία D 2007
Post by: 4Dcube on November 26, 2007, 21:22:57 pm
θανάση_λεο εφόσον σου λέει "κατάλληλες" θα δεις τι σε βολεύει στο πρόγραμμά σου αι θα πράξεις ανάλογα. Στις εργασίες λέει μεν τι να κάνεις αλλά δεν σε κόβει αν κάνεις κάτι δικό σου.

Για το δεύτερο ερώτημα εγώ έβαλα 2 ορίσματα στον constructor της c.



Έχει να κάνει η εργασία με copy constructors? Είπε τπτ για αυτά στο μάθημα; Γιατί μου βγάινει ένα σφάλμα
"no matching function for call"
πριν τον constructor της c και ψυλλιάζομαι...



Title: Re: Προγραμματιστικές Τεχνικές Εργασία D 2007
Post by: Wade on November 26, 2007, 21:29:47 pm
Έχει να κάνει η εργασία με copy constructors? Είπε τπτ για αυτά στο μάθημα; Γιατί μου βγάινει ένα σφάλμα
"no matching function for call"
πριν τον constructor της c και ψυλλιάζομαι...

Λογικά οι συναρτήσεις αρχικών συνθηκών της κλάσης C θα καλούν και συναρτήσεις αρχικών συνθηκών των κλάσεων από τις οποίες κληρονομήθηκε...  Αν υπάρχει μια constructor στις A και B που να μη δέχεται ορίσματα, τότε θα κληθεί αυτή.  Αλλιώς θα πρέπει να προσδιοριστεί ποια constructor την μητρικών κλάσεων θα κληθεί...  Παράδειγμα, C::C(int a, int b):A(a, b), B(a){...}.