THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: christgc on November 15, 2010, 12:15:43 pm



Title: [C++]4η Εργασία 2010
Post by: christgc on November 15, 2010, 12:15:43 pm
                                        Εργασια D (Hμ/νία λήξης δηλώσεων: 21/11/2010)

 

Την τροφοδοσία σε ηλεκτρική ενέργεια ενός σταθμού έχουν αναλάβει δύο εταιρίες παραγωγής ηλεκτρικού ρεύματος.

 Η εταιρία Α διαθέτει ένα σύστημα που λειτουργεί με ηλιακούς συλλέκτες και ένα σύστημα που λειτουργεί με φυσικό αέριο. Η ισχύς που αποδίδει το σύστημα ηλιακών συλλεκτών υπολογίζεται ως το γινόμενο της επιφάνειας των συλλεκτών επί την ένταση της φωτεινής ροής επί ένα συντελεστή απόδοσης S_k. Η ισχύς που αποδίδει το σύστημα φυσικού αερίου υπολογίζεται ως το γινόμενο της ωριαίας κατανάλωσης φυσικού αερίου επί ένα συντελεστή απόδοσης G_k. Η εταιρία χρεώνει για κάθε κιλοβατώρα ένα καθαρό πόσο στο οποίο προστίθεται ένα ποσό που αφορά έξοδα συντήρησης ανά κιλοβατώρα παραγόμενης ενέργειας για το κάθε σύστημα. Στην περίπτωση που χρησιμοποιείται φυσικό αέριο προστίθεται και το κόστος του φυσικού αερίου που απαιτείται για την παραγωγή μιας κιλοβατώρας.

Η εταιρία Β διαθέτει μια ανεμογεννήτρια και ένα σύστημα που λειτουργεί με πετρέλαιο. Η ισχύς που αποδίδει η ανεμογεννήτρια υπολογίζεται ως το γινόμενο της ταχύτητας του ανέμου επί ένα συντελεστή απόδοσης Α_k. Η ισχύς που αποδίδει το σύστημα πετρελαίου υπολογίζεται ως το γινόμενο της ωριαίας κατανάλωσης πετρελαίου επί ένα συντελεστή απόδοσης O_k. Η εταιρία χρεώνει για κάθε κιλοβατώρα ένα καθαρό πόσο στο οποίο προστίθεται ένα ποσό που αφορά έξοδα συντήρησης ανά κιλοβατώρα παραγόμενης ενέργειας για το κάθε σύστημα. Στην περίπτωση που χρησιμοποιείται πετρέλαιο προστίθεται και το κόστος του πετρελαίου που απαιτείται για την παραγωγή μιας κιλοβατώρας.

Για λόγους προστασίας του περιβάλλοντος, για την τροφοδοσία του σταθμού και έως ότου καλυφθεί η απαιτούμενη ισχύς, η σειρά με την οποία μπαίνουν σε λειτουργία τα συστήματα τροφοδοσίας του είναι: Το σύστημα ηλιακών συλλεκτών, η ανεμογεννήτρια, το σύστημα φυσικού αερίου και τέλος το σύστημα που λειτουργεί με πετρέλαιο.     

Να γραφεί το λογισμικό στο οποίο να ορίζονται:

α) Η κλάση SUN η οποία να υλοποιεί το σύστημα ηλιακών συλλεκτών. Η κλάση να ορίζει μια συνάρτηση αρχικών συνθηκών η οποία να δέχεται ως όρισμα την ένταση της φωτεινής ροής και να διαβάζει την επιφάνεια των συλλεκτών, τον συντελεστή απόδοσης του συστήματος, το κόστος με το οποίο χρεώνει την κάθε κιλοβατώρα η εταιρία καθώς και το ανά κιλοβατώρα κόστος συντήρησης του συστήματος. Η κλάση να διαθέτει τις κατάλληλες συναρτήσεις για τον υπολογισμό της ισχύος του συστήματος και της χρέωσης που κάνει η εταιρία για κάθε κιλοβατώρα.

β) Η κλάση GAS η οποία να υλοποιεί το σύστημα που λειτουργεί με φυσικό αέριο. Η κλάση να ορίζει μια συνάρτηση αρχικών συνθηκών η οποία να δέχεται ως όρισμα την ωριαία κατανάλωση φυσικού αερίου και να διαβάζει το κόστος ενός κυβικού μέτρου φυσικού αερίου, τον συντελεστή απόδοσης, το κόστος με το οποίο χρεώνει την κάθε κιλοβατώρα η εταιρία καθώς και το ανά κιλοβατώρα κόστος συντήρησης του συστήματος. Η κλάση να διαθέτει τις κατάλληλες συναρτήσεις για τον υπολογισμό της ισχύος του συστήματος και της χρέωσης που κάνει η εταιρία για κάθε κιλοβατώρα.

γ) Η κλάση AIR η οποία να υλοποιεί την ανεμογεννήτρια. Η κλάση να ορίζει μια συνάρτηση αρχικών συνθηκών η οποία να δέχεται ως όρισμα την ταχύτητα του ανέμου και να διαβάζει, τον συντελεστή απόδοσης του συστήματος, το κόστος με το οποίο χρεώνει την κάθε κιλοβατώρα η εταιρία καθώς και το ανά κιλοβατώρα κόστος συντήρησης του συστήματος. Η κλάση να διαθέτει τις κατάλληλες συναρτήσεις για τον υπολογισμό της ισχύος του συστήματος και της χρέωσης που κάνει η εταιρία για κάθε κιλοβατώρα.

δ) Η κλάση OIL η οποία να υλοποιεί το σύστημα που λειτουργεί με πετρέλαιο. Η κλάση να ορίζει μια συνάρτηση αρχικών συνθηκών η οποία να δέχεται ως όρισμα την ωριαία κατανάλωση πετρελαίου και να διαβάζει το κόστος ενός λίτρου πετρελαίου, τον συντελεστή απόδοσης, το κόστος με το οποίο χρεώνει την κάθε κιλοβατώρα η εταιρία καθώς και το ανά κιλοβατώρα κόστος συντήρησης του συστήματος. Η κλάση να διαθέτει τις κατάλληλες συναρτήσεις για τον υπολογισμό της ισχύος του συστήματος και της χρέωσης που κάνει η εταιρία για κάθε κιλοβατώρα.

e) Η κλάση company_A ως public παραγόμενη από τις κλάσεις SUN και GAS. Η κλάση να διαθέτει τη συνάρτηση calk_cost η οποία να δέχεται ως όρισμα τις ώρες λειτουργίας του σταθμού και να επιστρέφει το ποσόν που θα καταβληθεί στην εταιρία για το ρεύμα που κατανάλωσε ο σταθμός.

ζ) Η κλάση company_Β ως public παραγόμενη από τις κλάσεις AIR και OIL. Η κλάση να διαθέτει τη συνάρτηση calk_cost η οποία να δέχεται ως όρισμα τις ώρες λειτουργίας του σταθμού και να επιστρέφει το ποσόν που θα καταβληθεί στην εταιρία για το ρεύμα που κατανάλωσε ο σταθμός.

η) Η κλάση station ως public παραγόμενη από τις κλάσεις company_A και company_B. Η κλάση να διαθέτει τη συνάρτηση calc_total_cost η οποία να επιστρέφει το συνολικό πόσον που θα καταβληθεί για την λειτουργία του σταθμού.

Η συνάρτηση main του προγράμματος να διαβάζει την ισχύ που χρειάζεται ο σταθμός και τις ώρες που θα λειτουργήσει και να υπολογίζει, καλώντας τη συνάρτηση calc_total_cost, το συνολικό κόστος για την ηλεκτρική ενέργεια που θα καταναλωθεί.

Βοηθητικές παρατηρήσεις:

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

Να διατηρηθούν τα ονόματα των συναρτήσεων όπως αυτά ορίζονται στην εκφώνηση της εργασίας.


Title: Re: [C++]4η Εργασία 2010
Post by: Αιμιλία η φτερωτή χελώνα on November 15, 2010, 12:19:06 pm
ολοϊδια ειχε βαλει και περυσι σε λεω!!!!!!!!
αν και δεν πρεπει να ηταν η 4η, αργοτερα νομιζω την ειχαμε κανει αυτη :D :D


Title: Re: [C++]4η Εργασία 2010
Post by: christgc on November 15, 2010, 12:23:31 pm
Του ξέφυγε ένα calc  :D


Title: Re: [C++]4η Εργασία 2010
Post by: Αιμιλία η φτερωτή χελώνα on November 15, 2010, 12:25:20 pm
κι επιμενει
Να διατηρηθούν τα ονόματα των συναρτήσεων όπως αυτά ορίζονται στην εκφώνηση της εργασίας.
οοοοοοοχι!! :P ::)


Title: Re: [C++]4η Εργασία 2010
Post by: gr3gory on November 15, 2010, 18:32:50 pm
ολοϊδια ειχε βαλει και περυσι σε λεω!!!!!!!!
αν και δεν πρεπει να ηταν η 4η, αργοτερα νομιζω την ειχαμε κανει αυτη :D :D

Λάθος. Πέρυσι δεν υπήρχε GAS. Φέτος τα συστήματα αναβαθμίστηκαν.  :P


Title: Re: [C++]4η Εργασία 2010
Post by: The Stig on November 16, 2010, 17:38:03 pm
συντελεστή απόδοσης S_k, G_k, Α_k, O_k.

Το k από το koefficient? Τελικά όντως στηρίζει kde ή ακούει πολύ akon.  :D :P


Title: Re: [C++]4η Εργασία 2010
Post by: arashi on November 16, 2010, 19:24:53 pm
παντως βρεχει εργασιες , οχι αστεια.....


Title: Re: [C++]4η Εργασία 2010
Post by: Joseph D. on November 17, 2010, 14:47:13 pm
συντελεστή απόδοσης S_k, G_k, Α_k, O_k.

Το k από το koefficient? Τελικά όντως στηρίζει kde ή ακούει πολύ akon.  :D :P

Μπορεί να παίζει Mortal Kombat.


Title: Re: [C++]4η Εργασία 2010
Post by: Tracy_McGrady on November 17, 2010, 20:33:10 pm
Εγώ ένα έχω να δηλώσω!είμαι πάνω απο την εργασία 30 λεπτά και δεν μπορώ ν βγάλω νοημα! ! ΕΙΝΑΙ ΣΟΒΑΡΟΙ ΡΕ? >:(


Title: Re: [C++]4η Εργασία 2010
Post by: JakeLaMotta on November 19, 2010, 16:44:28 pm
νομιζω μπορω να βαλω ιδια ονοματα σε μεταβλητες που ειναι σε διαφορετικες κλασεις ε??γιατι θελει κ καμια 100 διαφορετικες μεταβλητες και χανεται λιγο η μπαλα!!


Title: Re: [C++]4η Εργασία 2010
Post by: πρεζ on November 19, 2010, 17:19:08 pm
νομιζω μπορω να βαλω ιδια ονοματα σε μεταβλητες που ειναι σε διαφορετικες κλασεις ε??γιατι θελει κ καμια 100 διαφορετικες μεταβλητες και χανεται λιγο η μπαλα!!

νομιζω γινεται και αν δεν κανω λαθος αυτη ειναι και η εννοια του πολυμορφισμου

εχει ωραιο σεναριο παντως
οχι σαν αυτες με τις φορολογιες και τα οικοπεδα :D


Title: Re: [C++]4η Εργασία 2010
Post by: JakeLaMotta on November 19, 2010, 17:50:33 pm
αληθεια,τις λυσεις των περσινων των εργασιων τις εχει πουθενα ανεβασμενες??αν ειναι παρομοια με καποια περσινη να ξερουμε,να παρουμε καμια ιδεα.Ή αν μπορει καποιος απο μεγαλυτερο ετος που εχει τις περσινες λυσεις να της ανεβασει??


Title: Re: [C++]4η Εργασία 2010
Post by: cindy on November 20, 2010, 14:26:01 pm
τον αριθμό των κιλοβατώρων που τον διαβάζει;;;και ο αριθμός των ωρών που χρησιμεύει;;δηλαδή,όταν θα πάμε να υπολογίσουμε το ποσόν που θα καταβληθεί στην εταιρία για το ρεύμα που κατανάλωσε ο σταθμός στισ κλάσεις company_A και company_B ποια σχέση θα πάρουμε που θα περιλαμβάνει και τις ώρες;;;;;


Title: Re: [C++]4η Εργασία 2010
Post by: Orfikoss on November 20, 2010, 14:29:38 pm
νομιζω μπορω να βαλω ιδια ονοματα σε μεταβλητες που ειναι σε διαφορετικες κλασεις ε??γιατι θελει κ καμια 100 διαφορετικες μεταβλητες και χανεται λιγο η μπαλα!!

νομιζω γινεται και αν δεν κανω λαθος αυτη ειναι και η εννοια του πολυμορφισμου

εχει ωραιο σεναριο παντως
οχι σαν αυτες με τις φορολογιες και τα οικοπεδα :D

κάθε μεταβλητή έχει εμβέλεια ανός block. Δηλαδή δεν έχει ισχύ όταν κλείνει το } όπου ορίστηκε...

Ο πολυμορφισμός είναι η δυνατότητα να εχουμε πολλές συναρτήσεις (με διαφορετικά ορίσματα) με το ίδιο όνομα στην ίδια περιοχή εμβέλειας...


Title: Re: [C++]4η Εργασία 2010
Post by: πρεζ on November 20, 2010, 14:33:11 pm
σωστος, δεν το ειχα ξεκαθαρισει και πολυ καλα στο μυαλο μου
τνξ


Title: Re: [C++]4η Εργασία 2010
Post by: Silvo the Beautiful on November 20, 2010, 15:25:08 pm
οποία να δέχεται ως όρισμα την ένταση της φωτεινής ροής


Aυτα τα ορισματα που ζηταει για τους constructors που τα διαβαζουμε και τα δηλωνουμε?


Title: Re: [C++]4η Εργασία 2010
Post by: png on November 20, 2010, 15:55:41 pm
λογικά στη main...εγώ εκεί τα έβαλα.


Title: Re: [C++]4η Εργασία 2010
Post by: Άντι ιστ κρίιγκ on November 20, 2010, 20:24:08 pm
1)  Στις συναρτήσεις calk_cost που ειναι στις κλάσεις company_A και company_B πως θα υπολογίζεται το ποσό που θα καταβάλλεται στην κάθε εταιρεία; Μόνο  χρέωση * ώρες;

2) Υποθέτουμε αυθαίρετα ότι για την παραγωγή μίας κιλοβατώρας [φυσικού αερίου πχ] χρειάζεται ένα κυβικό μέτρο φυσικού αερίου;


Title: Re: [C++]4η Εργασία 2010
Post by: Joseph D. on November 20, 2010, 23:10:20 pm
Έτσι όπως το έλυσα, δεν κατάλαβα γιατί χρειάζονται οι συναρτήσεις calk_cost.
Βασικά τι θα υπολογίζουν; Το κόστος με την προϋπόθεση ότι χρησιμοποιούνται οι ηλιακοί συλλέκτες σε συνδυασμό με το σύστημα φυσικού αερίου από τη μία και οι ανεμογεννήτριες σε συνδυασμό με το σύστημα πετρελαίου από την άλλη;
Αν ναι, πού μας χρησιμεύει αυτό;


Title: Re: [C++]4η Εργασία 2010
Post by: kickass on November 21, 2010, 00:43:29 am
Έτσι όπως το έλυσα, δεν κατάλαβα γιατί χρειάζονται οι συναρτήσεις calk_cost.
Βασικά τι θα υπολογίζουν; Το κόστος με την προϋπόθεση ότι χρησιμοποιούνται οι ηλιακοί συλλέκτες σε συνδυασμό με το σύστημα φυσικού αερίου από τη μία και οι ανεμογεννήτριες σε συνδυασμό με το σύστημα πετρελαίου από την άλλη;
Αν ναι, πού μας χρησιμεύει αυτό;


+1


Title: Re: [C++]4η Εργασία 2010
Post by: i_am_batman on November 21, 2010, 01:13:51 am
Έτσι όπως το έλυσα, δεν κατάλαβα γιατί χρειάζονται οι συναρτήσεις calk_cost.
Βασικά τι θα υπολογίζουν; Το κόστος με την προϋπόθεση ότι χρησιμοποιούνται οι ηλιακοί συλλέκτες σε συνδυασμό με το σύστημα φυσικού αερίου από τη μία και οι ανεμογεννήτριες σε συνδυασμό με το σύστημα πετρελαίου από την άλλη;
Αν ναι, πού μας χρησιμεύει αυτό;

Δεν ξέρω πως την έλυσες, αλλά με μια γρήγορη ματιά, νομίζω ότι είναι ως εξής:
Μέσα στη main θα δημιουργείς ένα αντικείμενο τύπου station και μέσω αυτού θα καλείς την tot_calck_cost().
Μέσα σε αυτήν, θα καλείς τις επιμέρους calck_cost() των βασικών κλάσεων "μέχρι" να καλύψεις τη ζητούμενη ισχύ.
Μέσα στις επιμέρους calck_cost() θα ακολουθείται η σειρά προτεραιότητας στη λειτουργία των σταθμών.Αν δηλαδή το σύστημα ηλιακών συλλεκτών καλύπτει την ζητούμενη ισχύ(1η calck_cost()), θα την πάρεις όλη από εκεί και δεν θα τεθούν σε λειτουργία οι άλλοι σταθμοί. Θα κοστολογήσεις δηλαδή με χρέωση ηλ.συλλέκτη. Αν χρειαστεί να μπει σε λειτουργία και η ανεμογεννήτρια (2η calck_cost()), θα καλύψεις ότι δεν μπορεί να καλύψει ο ηλ.συλλέκτης με αυτή (άρα κοστολόγηση με δύο διαφορετικές χρεώσεις).
Σε περίπτωση που και πάλι δεν έχεις καλυφθεί, ο κώδικας μέσα στην tot_calck_cost() θα βάζει σε λειτουργία το φυσικό αέριο ή/και το πετρέλαιο καλώντας ξανά τις επιμέρους calck_cost().

Δεν ξέρω αν ρωτάς αυτό που λέω, αλλά φαίνεται ποια είναι η χρήση των calck_cost().Θα αθροίζεις μέσω αυτών τα επιμέρους κόστη και θα τα επιστρέφεις μέσω της tot_calck_cost().


Title: Re: [C++]4η Εργασία 2010
Post by: i_am_batman on November 21, 2010, 01:15:38 am
Καλά με το όνομα της calc_total_cost() αυτοσχεδίασα λίγο, αλλά καταλαβαίνεις τι λέω..


Title: Re: [C++]4η Εργασία 2010
Post by: Joseph D. on November 21, 2010, 01:31:42 am
Μόνο που οι calk_cost() υπολογίζουν συνολικά για την κάθε εταιρεία κόστη.
Δηλαδή, η calk_cost() της company_A θα αθροίζει κόστη για ηλιακούς συλλέκτες και σύστημα φυσικού αερίου. Το αυτό και για της company_B.

Άλλωστε, μια συνάρτηση επιστρέφει μία μόνο τιμή. Μπορεί και να επιστρέψει εναλλακτικές κατά περίπτωση τιμές, μόνο όμως αν δέχεται κάποιο σχετικό όρισμα και στην άσκηση δηλώνεται καθαρά η ύπαρξη μοναδικού ορίσματος ωρών.


Title: Re: [C++]4η Εργασία 2010
Post by: i_am_batman on November 21, 2010, 01:43:14 am
Ε, τώρα αυτό που μου λες είναι τελείως σχεδιαστικό.. Βάλε ένα flag=0(private μέλος της κλάσης) μέσα στην κάθε calck_cost(), ώστε να βλέπεις αν την καλείς πρώτη ή δεύτερη φορά. Αν είναι η πρώτη, υπολογίζεις για ηλ. συλλέκτη (και αλλάζεις το flag). Βγαίνοντας από την calck_cost() και μέσα στην tot_calck_cost() το κρατάς αυτό το νούμερο.  Aν τελικά χρειαστείς και πετρέλαιο, την ξανακαλείς και αφού το flag είναι αλλαγμένο, με ένα if πας στο κομμάτι που υπολογίζει τα του πετρελαίου. Βγαίνοντας από την calck_cost() και μέσα στην tot_calck_cost() το κρατάς και αυτό. Η' κάνε κάτι άλλο, αυτό μου ήρθε εμένα έτσι στα γρήγορα..

Τώρα εντάξει ή διαφωνείς κάπου?


Title: Re: [C++]4η Εργασία 2010
Post by: Joseph D. on November 21, 2010, 01:59:43 am
Ναι, η αλήθεια είναι ότι αυτό που είπα παραπάνω για το όρισμα δεν ισχύει αφού οι συναρτήσεις είναι μέλη κλάσης. Ευχαριστώ για την ιδέα, αν και δε μου κολλάει πολύ με την έννοια δημιουργίας κλάσεων μια και είναι αρκετά διαδικασιακό. Αλλά θα μου πεις, μια main εκτελείς, 4η εργασία είναι, δε βαριέσαι.
Ευχαριστώ και πάλι πάντως. :)


Title: Re: [C++]4η Εργασία 2010
Post by: Argirios on November 21, 2010, 12:17:22 pm
πώς μπορούμε να όταν έχουμε σε μία παραγόμενη κλάση από δύο κλάσεις οι οποίες έχουν συναρτήσεις και μεταβλητές με ίδια ονόματα να λέμε πιά από τις δύο θα χρησημοποιήσει? πχ.
Code:
class a{                                               class c:public a,public b{
float a;                                                          public:
public:                                                              int k();
    int mpla();                                                  };   
};                                                                 

class b{
float a;
public:
int mpla();
};
και μέσα στην κ θέλω κάποιες φορές να χρησημοποιώ την mpla ή την a της κλάσης a και άλλες φορές της b


Title: Re: [C++]4η Εργασία 2010
Post by: png on November 21, 2010, 12:35:03 pm
a.mpla / b.mpla?


Title: Re: [C++]4η Εργασία 2010
Post by: Joseph D. on November 21, 2010, 13:39:11 pm
Νομίζω έτσι: (στη main)
Code:
c ct;
ct.a::mpla();
ct.b::mpla();


Title: Re: [C++]4η Εργασία 2010
Post by: Argirios on November 21, 2010, 13:42:32 pm
μάλλον έτσι είναι, δε βγάζει έρρορ
θέξ ^carnaval^


Title: Re: [C++]4η Εργασία 2010
Post by: kakashi on November 21, 2010, 17:19:13 pm
Για την περίπτωση του αερίου που υπάρχει και το κόστος παραγωγής της κιλοβατώρας,που ακριβώς θα το ορίζουμε;Στην συνάρτηση αρχικών συνθηκών;


Title: Re: [C++]4η Εργασία 2010
Post by: Burlitsa on November 21, 2010, 22:51:45 pm
ναι, ρώτα πόσα m3 αερίου/πετρελαίου χρειαζόμαστε για την παραγωγή μιας KWh..!


Title: Re: [C++]4η Εργασία 2010
Post by: kakashi on November 21, 2010, 23:23:51 pm
Μπορεί κάποιος να μου πει πως χειριζόμαστε τις μεταβλητές στις συναρτήσεις παραγώμενων κλάσεων;
πχ:έχω γράψει αυτό τον κώδικα:

Code:
class company_A:public SUN,public GAS{
      float poso;
      public:
             company_A(float p_roh,float p_katanalwsi):SUN(p_roh),GAS(p_katanalwsi);
             float calk_cost(wres);     
};

float company_A::calk_cost(wres){
      poso=???
      return poso;
}

Το poso πως θα το υπολογίσω;Τις συναρτήσεις που υπολογίζουν το ποσό τις έχω γράψει στις κλάσεις SUN και GAS.Δηλαδή έχω και στις δύο κλάσεις από μία get_poso συνάρτηση.