THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: vasilis94 on December 15, 2014, 16:44:32 pm



Title: [C++] Άσκηση Η - 2014/2015 - Προθεσμία 11/1/2015
Post by: vasilis94 on December 15, 2014, 16:44:32 pm
Άσκηση H

         Για να επιλεγεί η πιο συμφέρουσα λύση για την εγκατάσταση ενός συστήματος κεντρικής θέρμανσης, για κάθε τύπο καυστήρα που κυκλοφορεί στην αγορά, οι καυστήρες που είναι διαθέσιμοι κατατάσσονται κατά φθίνουσα σειρά ως προς το λόγω P/FR, όπου P είναι η μέγιστη ισχύς που μπορεί να απόδοση ο καυστήρας και FR η ημερησία κατανάλωση καυσίμου για λειτουργία στη μέγιστή ισχύ. Από τη σειρά αυτή επιλέγεται ο καυστήρας με το μεγαλύτερο λόγω P/FR για τον οποίο όμως η μέγιστη ισχύς δεν είναι μικρότερη από την ελάχιστη ισχύ που απαιτείται για τις ανάγκες της εγκατάστασης και ταυτόχρονα το κόστος της αγοράς και της εγκατάστασής του δε ξεπερνά ένα ορισμένο ποσόν.
          Για να γίνει σύγκριση ανάμεσα σε δύο διαφορετικούς τύπους καυστήρων, αφού επιλεγεί από κάθε τύπο ο καυστήρας που ικανοποιεί τις πιο πάνω απαιτήσεις, επιλέγεται ο φτηνότερος εφόσον έχει και το μικρότερο κόστος ετήσιας λειτουργίας. Σε διαφορετική περίπτωση επιλέγεται ο ακριβότερος και υπολογίζεται ο χρόνος απόσβεσης της επιπλέον δαπάνης για την αγορά και την εγκατάστασή του.
          Να γραφεί το λογισμικό στο οποίο να ορίζεται η παραμετρική (template) κλάση device. Η κλάση να ορίζει την παράμετρο burner, η οποία δηλώνει τύπους αντικείμενων που ορίζουν οι κλάσεις που υλοποιούν διαφορετικούς τύπους καυστήρων. Η κλάση να διαθέτει μια συνάρτηση αρχικών συνθηκών η οποία να διαβάζει την τιμή της ακεραίας μεταβλητής n και να δεσμεύει δυναμικά μνήμη για έναν πίνακα με n αντικείμενα στον παραμετρικό τύπο burner. Η κλάση να διαθέτει ακόμη τη συνάρτηση b_short() η οποία να ταξινομεί τα αντικείμενα αυτά κατά φθίνουσα σειρά ως προς τον λόγω P/FR. Η συνάρτηση να επιστρέφει τη διεύθυνση του ταξινομημένου πίνακα.
          Το λογισμικό να ορίζει ακόμη την παραμετρική συνάρτηση choice() η οποία να δέχεται, ως παραμέτρους, τους τύπους burner1 και burner2. Ο κάθε παραμετρικός τύπος να ορίζει έναν πίνακα από αντικείμενα που υλοποιούν καυστήρες του ίδιου τύπου ταξινομημένους κατά φθίνουσα σειρά ως προς τον λόγω P/FR. Η συνάρτηση, αφού από κάθε πίνακα, επιλέξει τον καυστήρα που ικανοποιεί τις προδιαγραφές που ορίστηκαν αρχικά, να επιστρέφει την ταυτότητα του καυστήρα που πρέπει να επιλεγεί σύμφωνα με τα κριτήρια που οριστήκαν και αφορούν την επιλογή καυστήρα ανάμεσα σε δύο καυστήρες διαφορετικού τύπου. Η συνάρτηση να υπολογίζει ακόμη και τον χρόνο απόσβεσης στην περίπτωση που επιλεγεί ο ακριβότερος καυστήρας.
          Ως εφαρμογή να οριστούν οι κλάσεις oil_burner και gas_burner που υλοποιούν καυστήρες πετρελαίου και αερίου αντίστοιχα. Για τα αντικείμενα τις κάθε κλάσης, μέσα από μια συνάρτηση αρχικών συνθηκών, να διαβάζονται, για τον αντίστοιχο καυστήρα, μια ταυτότητα, η μέγιστη ισχύς, η αντίστοιχη ημερήσια κατανάλωση καυσίμου, το κόστος μιας μονάδας μέτρησης για το καύσιμό, το κόστος για την αγορά του καυστήρα και το κόστος της ετησίας συντήρησης. Για τους καυστήρες αερίου να διαβάζεται και ένα επιπλέον κόστος που αφορά τη σύνδεση του καυστήρα με το δίκτυο.
          Η συνάρτηση main του λογισμικού να διαβάζει την ελάχιστη ισχύ που απαιτεί η εγκατάσταση, τα χρήματα που είναι διαθέσιμα για την αγορά και την εγκατάσταση του καυστήρα και τις ημέρες που λειτουργεί η θέρμανση κατά την διάρκεια του έτους. Στη συνέχεια να δημιουργεί δύο αντικείμενα στον τύπο της κλάσης device, το πρώτο με παράμετρο την κλάση oil_burner και το δεύτερο με παράμετρο την κλάση gas_burner. Για τους πίνακες που  θα δημιουργήσουν τα δύο αυτά αντικείμενα να κληθεί η συνάρτηση b_short() για να τους ταξινομήσει κατά φθίνουσα σειρά ως προς τον λόγω P/FR. Τέλος να κληθεί η συνάρτηση choice(), για τους δύο αυτούς πίνακες, για να υπολογιστεί και στη συνέχεια να τυπωθεί η ταυτότητα του καυστήρα που πρέπει να επιλεγεί καθώς και ο χρόνος απόσβεσης στην περίπτωση που θα επιλεγεί ο ακριβότερος καυστήρας.


Title: Re: [C++] Άσκηση Η - 2014/2015 - Προθεσμία 11/1/2015
Post by: airguitar on December 15, 2014, 17:21:51 pm
τελευταια ?


Title: Re: [C++] Άσκηση Η - 2014/2015 - Προθεσμία 11/1/2015
Post by: vasilis94 on December 16, 2014, 21:31:59 pm
τελευταια ?

Λογικά... Πρέπει να κάνει και την εξέταση κάποια στιγμή :)


Title: Re: [C++] Άσκηση Η - 2014/2015 - Προθεσμία 11/1/2015
Post by: K on December 16, 2014, 23:21:12 pm
τελευταια ?

Λογικά... Πρέπει να κάνει και την εξέταση κάποια στιγμή :)


Θα το εκτιμούσα αν μπορούσες να μας δώσεις κάποιες επιπλέον πληροφορίες για την εξέταση.


Title: Re: [C++] Άσκηση Η - 2014/2015 - Προθεσμία 11/1/2015
Post by: vasilis94 on December 25, 2014, 22:48:29 pm
τελευταια ?

Λογικά... Πρέπει να κάνει και την εξέταση κάποια στιγμή :)


Θα το εκτιμούσα αν μπορούσες να μας δώσεις κάποιες επιπλέον πληροφορίες για την εξέταση.

Δεν είναι κάτι ιδιαίτερο, αν έχεις κάνει τις εργασίες και τις έχεις δει την προηγούμενη μέρα. Μπαίνεις, ανοίγει 1-2 εργασίες, και σε ρωτάει κάτι απλό (του στυλ "τι είναι αυτό το διπλό αστεράκι") ή και κάτι πιο σύνθετο ("τι είναι η virtual συνάρτηση?", "γιατί την βάζεις εδώ?" κλπ.). Κανά 5λεπτο πρέπει να ήταν. Ίσως και λίγο παραπάνω, αλλά στο τέλος επειδή είχε μαζέψει τεράστια ουρά μας ξεπετούσε γρήγορα. Μπορεί να σου σπάσει τα νεύρα, απαντώντας ο ίδιος μετά το ίδιο με άλλα λόγια, αλλά το παίρνεις το "ναι" ας πούμε.

Όλα αυτά για Κορτέση, αν το κάνει κανάς Συμεωνίδης φέτος ή βάλουν κανά διδακτορικό μπορεί να είναι διαφορετικό το στυλ.


Title: Re: [C++] Άσκηση Η - 2014/2015 - Προθεσμία 11/1/2015
Post by: magemenos pigasos on December 26, 2014, 20:12:29 pm
καποιος που πήγε στο τελευταίο μάθημα αν μπορεί να  μου πει τι είπε για την εργασία; Τι θα χρησιμοποιήσουμε; είπε τίποτα για vectors;


Title: Re: [C++] Άσκηση Η - 2014/2015 - Προθεσμία 11/1/2015
Post by: ablaoublas on December 27, 2014, 15:30:40 pm
Quote
H κλάση να διαθέτει μια συνάρτηση αρχικών συνθηκών η οποία να διαβάζει την τιμή της ακεραίας μεταβλητής n και να δεσμεύει δυναμικά μνήμη για έναν πίνακα με n αντικείμενα στον παραμετρικό τύπο burner.

Ο πίνακας και η μεταβλητή n πρέπει να δηλωθούν ως στατικές μέσα στην template κλάση ;

Ο χρόνος απόσβεσης πως υπολογίζεται ;


Title: Re: [C++] Άσκηση Η - 2014/2015 - Προθεσμία 11/1/2015
Post by: Vlassis on January 03, 2015, 20:10:55 pm
Quote
H κλάση να διαθέτει μια συνάρτηση αρχικών συνθηκών η οποία να διαβάζει την τιμή της ακεραίας μεταβλητής n και να δεσμεύει δυναμικά μνήμη για έναν πίνακα με n αντικείμενα στον παραμετρικό τύπο burner.

Ο χρόνος απόσβεσης πως υπολογίζεται ;
Δεν ειναι (κοστος_ακριβοτερου-κοστος_φθηνοτερου)/ FR*μερες*κόστος μιας μονάδας μέτρησης ?  ;)


Title: Re: [C++] Άσκηση Η - 2014/2015 - Προθεσμία 11/1/2015
Post by: ablaoublas on January 03, 2015, 20:17:39 pm
Quote
H κλάση να διαθέτει μια συνάρτηση αρχικών συνθηκών η οποία να διαβάζει την τιμή της ακεραίας μεταβλητής n και να δεσμεύει δυναμικά μνήμη για έναν πίνακα με n αντικείμενα στον παραμετρικό τύπο burner.

Ο χρόνος απόσβεσης πως υπολογίζεται ;
Δεν ειναι (κοστος_ακριβοτερου-κοστος_φθηνοτερου)/ FR*μερες*κόστος μιας μονάδας μέτρησης ?  ;)

Σωστόοος, αυτό έκανα και εγώ τελικά ...


Title: Re: [C++] Άσκηση Η - 2014/2015 - Προθεσμία 11/1/2015
Post by: Vlassis on January 03, 2015, 21:40:32 pm
 ;) Τον πινακα με τα P/FR καλα δεσμευουμε μνημη! Που βαζουμε τις τιμες ομως ;