THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: vasilis1005 on January 15, 2014, 23:06:50 pm



Title: [C++] Άσκηση H - 2013/2014 - Προθεσμία 19/01
Post by: vasilis1005 on January 15, 2014, 23:06:50 pm
Εργασία H

Ένα ψηφιακό κύκλωμα αποτελείται από έναν αριθμό στοιχειωδών κυκλωμάτων συνδεδεμένων σε σειρά. Κάθε ένα από τα στοιχειώδη κυκλώματα διαθέτει δύο ακροδέκτες εισόδου a και b, και δύο ακροδέκτες εξόδου c και d οι οποίοι συνδέονται με τους ακροδέκτες εισόδου του επόμενου στοιχειώδους κυκλώματος έτσι ώστε να ολοκληρωθεί το ψηφιακό κύκλωμα. Στους ακροδέκτες του πρώτου στοιχειώδους κυκλώματος εφαρμόζονται τάσεις ενεργοποίησης  (0 ή 1) και ανιχνεύονται οι τιμές στους ακροδέκτες εξόδου c και d του τελευταίου στοιχειώδους κυκλώματος.  Τα στοιχειώδη κυκλώματα αποτελούνται από συνδυασμούς των πυλών AND, OR και NOT ενώ οι ακροδέκτες c και d του κάθε κυκλώματος συνδέονται μεταξύ τους με μια ωμική αντίσταση R. Η ισχύς που καταναλώνεται από μια πύλη ΑΝD εξαρτάται από τις τάσεις ενεργοποίησης που εφαρμόζονται στους ακροδέκτες εισόδου της πύλης. Αν οι τάσεις ενεργοποίησης και στους δύο ακροδέκτες είναι 0 η ισχύς που καταναλώνεται είναι 0. Αν ένας από τους ακροδέκτες έχει την τιμή 1 η ισχύς που καταναλώνεται είναι 0.5 mwatt ενώ αν και στους δύο ακροδέκτες δοθεί η τιμή 1 η ισχύς που καταναλώνεται είναι 1 mwatt. Για την πύλη OR αντίστοιχα η ισχύς είναι 0 αν και στους δύο ακροδέκτες εισόδου δοθεί η τιμή 0. Αν μόνο ένας ακροδέκτης εισόδου έχει τιμή 1 η ισχύς που καταναλώνεται είναι 0.5 mwatt , ενώ αν και οι δύο ακροδέκτες εισόδου έχουν τιμή 1 η ισχύς που καταναλώνεται είναι 1 mwatt. Η πύλη NOT καταναλώνει 1 mwatt αν ως είσοδος δοθεί η τιμή 1 και 0 mwatt αν δοθεί η τιμή 0. Τέλος η αντίσταση R καταναλώνει μια ισχύ ίση με V2/R , όπου V η τάση που εμφανίζεται ανάμεσα σε δύο ακροδέκτες από τους οποίους ο ένας έχει τιμή 1 και ο άλλος τιμή 0. Αν και οι δύο ακροδέκτες έχουν την ίδια τιμή δεν καταναλώνεται ισχύς από την αντίσταση. 

Να γραφεί το λογισμικό στο οποίο να ορίζεται η παραμετρική (template) κλάση make_circuit η οποία, ως παραμέτρους, να δέχεται δύο κλάσεις κάθε μια από τις οποίες υλοποιεί και ένα στοιχειώδες κύκλωμα. Με τη δημιουργία αντικειμένων στον τύπο της κλάσης να διαβάζονται οι ακέραιοι αριθμοί nCA και nCB και να δεσμεύεται δυναμικά μνήμη για τον πίνακα pA με nCA αντικείμενα στον τύπο της πρώτης παραμέτρου και για τον πίνακα pB με nCB αντικείμενα στον τύπο της δεύτερης παραμέτρου. Με τη δημιουργία αντικειμένων στον τύπο της κλάσης να ορίζονται ακόμη και οι πίνακες pos και cir με τιμές τύπου int με nCA + nCB στοιχεία ο κάθε ένας.

Στην κλάση να ορισθεί, ως συνάρτηση μέλος, η συνάρτηση cir_sort(). Η συνάρτηση, αφού ορίσει τον πίνακα R με  nCA + nCB τιμές τύπου float, να χειρίζεται του πίνακες R, pos και cir με την εξής διαδικασία. Αρχικά να καταχωρεί στις nCA πρώτες θέσεις του πίνακα R τις τιμές των αντιστάσεων των αντικειμένων του πίνακα pA, στις nCA πρώτες θέσεις του πίνακα pos τις θέσεις των αντικειμένων στον ίδιο πίνακα και στις nCA πρώτες θέσεις του πίνακα cir να καταχωρεί την τιμή 0. Στις υπόλοιπες nCB θέσεις των πινάκων R και pos να καταχωρεί τις αντίστοιχες τιμές για τα αντικείμενα του πίνακα pB και στις υπόλοιπες nCB θέσεις του πίνακα cir να καταχωρεί την τιμή 1. Τέλος η συνάρτηση να ταξινομεί τα στοιχεία των πινάκων R, pos και cir κατά αύξουσα τάξη των στοιχείων του πίνακα R.

Στο λογισμικό να ορισθεί ακόμη και η παραμετρική (template) συνάρτηση calc_circuit() η οποία, ως παραμέτρους, να δέχεται δύο πίνακες pA και pB αντικειμένων στον τύπο δύο κλάσεων η κάθε μια από τις οποίες υλοποιεί και ένα τύπο στοιχειώδους κυκλώματος. Η συνάρτηση να δέχεται ακόμη και δύο πίνακες του τύπου των πινάκων pos και cir που δημιουργεί η συνάρτηση cir_sort() της κλάσης make_circuit και να τους χρησιμοποιεί για να σχηματίσει ένα σύνθετο ψηφιακό κύκλωμα. Για τον σχηματισμό του σύνθετου κυκλώματος τα στοιχειώδη κυκλώματα να συνδέονται με τη σειρά που ορίζουν τα στοιχεία του πίνακα pos. Για την i θέση στο σύνθετο κύκλωμα, αν η τιμή του στοιχείου cir  του πίνακα cir είναι 0, να επιλέγεται από τον πίνακα pA το στοιχειώδες κύκλωμα που βρίσκεται στη θέση που δηλώνει το στοιχείο pos του πίνακα pos. Αν η τιμή cir είναι 1 η επιλογή να γίνεται από τα στοιχεία του πίνακα pB. Η συνάρτηση να δέχεται ακόμη, ως ορίσματα, τις τιμές 0 ή 1 για τους ακροδέκτες a και b του πρώτου από τα στοιχειώδη κυκλώματα που αποτελούν το σύνθετο κύκλωμα και να επιστρέφει τις τιμές που θα εμφανιστούν στους ακροδέκτες c και d του τελευταίου από τα στοιχειώδη κυκλώματα. Η συνάρτηση να επιστρέφει ακόμη και την τιμή της ισχύος που καταναλώνει το σύνθετο κύκλωμα για τις αντίστοιχες τιμές που εφαρμοστήκαν στους ακροδέκτες a και b του πρώτου από τα στοιχειώδη κυκλώματα.

Η συνάρτηση main() να ορίζει ένα αντικείμενο C στον τύπο της κλάσης make_circuit και να καλεί για αυτό το αντικείμενο τη συνάρτηση cir_sort(). Στη συνέχεια να διαβάζει δύο τιμές 0 ή 1 για τους ακροδέκτες εισόδου του σύνθετου κυκλώματος και να καλεί τη συνάρτηση calc_circuit() την οποία να τροφοδοτεί με τους πίνακες pA, pB, pos και cir που σχηματίστηκαν με τη δημιουργία του αντικειμένου C και την εκτέλεση της συνάρτησης cir_sort(). Το πρόγραμμα να εκτυπώνει την ισχύ που θα καταναλώνεται από το σύνθετο κύκλωμα που σχημάτισε η calc_circuit()  καθώς και τις αντίστοιχες τιμές στους ακροδέκτες εξόδου του.

Ως εφαρμογή να θεωρηθεί ότι το ψηφιακό κύκλωμα αποτελείται από δύο τύπους στοιχειωδών κυκλωμάτων Α και Β όπως φαίνονται στο σχήμα                                   


Boηθητικές παρατηρήσεις

Η αντίσταση R μπορεί να είναι διαφορετική από κύκλωμα σε κύκλωμα.

Η τάση V να θεωρηθεί ότι είναι 5 mvolt

 


Title: Re: [C++] Άσκηση H - 2013/2014 - Προθεσμία 19/01
Post by: vasilis1005 on January 15, 2014, 23:07:46 pm
βλέπει κανένας σχήμα; :???: :???:


Title: Re: [C++] Άσκηση H - 2013/2014 - Προθεσμία 19/01
Post by: PureForm on January 15, 2014, 23:43:36 pm
ναι


Title: Re: [C++] Άσκηση H - 2013/2014 - Προθεσμία 19/01
Post by: vasilis1005 on January 16, 2014, 01:08:11 am
ναι

mozilla;


Title: Re: [C++] Άσκηση H - 2013/2014 - Προθεσμία 19/01
Post by: geo89a on January 16, 2014, 22:47:06 pm
Εχει βρει κανεις ακρη τι θα παιχτει με τις παραμετρικες κλασεις???


Title: Re: [C++] Άσκηση H - 2013/2014 - Προθεσμία 19/01
Post by: skipper on January 16, 2014, 22:52:14 pm

Εγώ πάντως δε βλέπω σχήμα ούτε στον Firefox ούτε στον Chrome.


Title: Re: [C++] Άσκηση H - 2013/2014 - Προθεσμία 19/01
Post by: PureForm on January 16, 2014, 22:54:37 pm
τωρα?


Title: Re: [C++] Άσκηση H - 2013/2014 - Προθεσμία 19/01
Post by: skipper on January 16, 2014, 23:58:02 pm
τωρα?

Τώρα μια χαρά, thanks! 8))