Εργασία Ε (Hμ/νία λήξης δηλώσεων: 28/11/2010)
Με στόχο να δημιουργηθεί μια βιβλιοθήκη η οποία να διαχειρίζεται πράξεις με πίνακες, να γραφεί το λογισμικό στο οποίο να ορίζεται η κλάση
array η οποία ως
private στοιχεία να διαθέτει τις ακέραιες μεταβλητές
n και
m και τον pointer σε pointer
a σε στοιχεία τύπου
float.
Στο λογισμικό να ορίζονται ακόμη:
α) Μια επικάλυψη του τελεστή
( ) τέτοια ώστε η έκφραση
ar(r,c), όπου
ar αντικείμενο τύπου
array και
r και
c τιμές τύπου
int, να δεσμεύει
δυναμικά μνήμη, χρησιμοποιώντας τον pointer
a, για την καταχώρηση ενός πίνακα με
r γραμμές και
c στήλες θέτοντας ταυτόχρονα
n=r και
m=c. Η επικάλυψη να επιστρέφει το αντικείμενο
ar.
b) Μια επικάλυψη του τελεστή
~ τέτοια ώστε η έκφραση
~ar, όπου
ar αντικείμενο τύπου
array, να επιστρέφει ένα αντικείμενο του ιδίου
τύπου στο οποίο ο πίνακας που ορίζεται να είναι ο ανάστροφος του πίνακα που ορίζει το αντικείμενο
ar.
γ) Μια επικάλυψη του τελεστή
* τέτοια ώστε η έκφραση
ar*ap, όπου
ar και
ap αντικείμενα τύπου
array, να επιστρέφει ένα αντικείμενο του
ιδίου τύπου στο οποίο ο πίνακας που ορίζεται να περιέχει το γινόμενο των πινάκων που ορίζουν τα αντικείμενα
ar και
ap. Η συνάρτηση
επικάλυψης να ελέγχει αν είναι δυνατή η πράξη του πολλαπλασιασμού για τους συγκεκριμένους πίνακες.
δ) Μια επικάλυψη του τελεστή
= τέτοια ώστε η έκφραση
ar=ap, όπου
ar και
ap αντικείμενα τύπου
array, να καταχωρεί στον πίνακα που
ορίζει το αντικείμενο
ar τα στοιχεία του πίνακα που ορίζει το αντικείμενο
ap. Η συνάρτηση επικάλυψης να ελέγχει αν είναι δυνατή η
καταχώρηση. Τέλος η συνάρτηση επικάλυψης να επιστρέφει το αντικείμενο
ar.
ε) Μια επικάλυψη του τελεστή
++ τέτοια ώστε η έκφραση
++ar όπου
ar αντικείμενο τύπου
array να διαβάζει και να καταχωρεί τις τιμές
των στοιχείων του πίνακα που ορίζει το αντικείμενο
ar.
ζ) Μια επικάλυψη του τελεστή
! τέτοια ώστε η έκφραση
!ar, όπου
ar αντικείμενο τύπου
array, να εκτυπώνει τα στοιχεία του πίνακα που
ορίζει το αντικείμενο
ar.
η) Μια επικάλυψη του τελεστή
<< τέτοια ώστε η έκφραση
p<<ar, όπου
p ένας pointer σε pointer σε στοιχεία τύπου
float και
ar αντικείμενο
τύπου
array, αφού δεσμεύσει δυναμικά την κατάλληλη μνήμη χρησιμοποιώντας τον pointer
p, να καταχωρεί στον πίνακα που
δημιουργήθηκε τα στοιχεία του πίνακα που ορίζει το αντικείμενο
ar. Ως επιστρεφόμενη τιμή για τη συνάρτηση επικάλυψης να είναι ο
τύπος
void.
Στο λογισμικό να οριστεί ακόμη η συνάρτηση
void make_pos η οποία να δέχεται ως όρισμα έναν πίνακα δύο διαστάσεων στον οποίο να αντικαθιστά τα στοιχεία του που είναι αρνητικά με τις απόλυτες τιμές τους.
Η συνάρτηση
main του προγράμματος να ορίζει τα αντικείμενα
a και
b τύπου
array και τον pointer σε pointer
p σε στοιχεία τύπου
float. Το πρόγραμμα να διαβάζει τις τιμές των
n και
m για το αντικείμενο
a και χρησιμοποιώντας της επικαλύψεις που ορίστηκαν, να δημιουργεί τον αντίστοιχο πίνακα για το αντικείμενο
a και να διαβάζει τις τιμές αυτού του πίνακα. Στη συνέχεια, αφού καταχωρίσει το αντικείμενο που επιστρέφει η έκφραση
a*(~a) ως τιμή για το αντικείμενο
b, να χρησιμοποιεί την έκφραση
p<<b για να δημιουργήσει τον πίνακα
p και να καταχωρίσει σε αυτόν τα στοιχεία του πίνακα που ορίζει το αντικείμενο
b. Τέλος αφού κληθεί η συνάρτηση
make_pos για τον πίνακα
p, να εκτυπώνεται ο πίνακας
p που θα προκύψει μετά την κλήση της συνάρτησης καθώς και ο πίνακας που όρισε το αντικείμενο
b. Με το τέλος του προγράμματος να απελευθερώνεται η όποια μνήμη δεσμεύτηκε δυναμικά.
Σημείωση: Εφόσον είναι δυνατόν οι συναρτήσεις επικάλυψης να οριστούν ως μέλη της κλάσης στην οποία ανήκουν τα αντίστοιχα
αντικείμενα.