THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: L on December 07, 2013, 20:42:03 pm



Title: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: L on December 07, 2013, 20:42:03 pm
Εργασία F

Σε ένα νησί είναι εγκατεστημένος ένας σταθμός ο οποίος, για να λειτουργήσει, χρειάζεται μια ελάχιστη ισχύ n_pow. Στο νησί υπάρχουν διάφοροι τύποι πηγών ηλεκτρικής ενέργειας που τροφοδοτούν τον σταθμό. Η ισχύς που παράγουν αυτές οι πηγές, μια δεδομένη στιγμή, εξαρτάται από τις συνθήκες που επικρατούν και σχετίζονται με τον τύπο της κάθε πηγής. Το αν λειτουργεί μια πηγή εξαρτάται από μια πιθανότητα βλάβης που δίνεται από τον κατασκευαστή της ως ένας αριθμός μεταξύ του 0 και του 1.
Να σχεδιαστεί και να γραφεί το λογισμικό στο οποίο να ορίζεται η συνάρτηση int control(…) η οποία να επεξεργάζεται ένα πίνακα που αφορά τις πηγές τροφοδοσίας του σταθμού και να επιστρέφει την τιμή 1 αν η ισχύς που παράγουν όλες μαζί οι πηγές δεν επαρκεί για την τροφοδοσία του σταθμού, την τιμή 2 αν αυτή η ισχύς επαρκεί για την τροφοδοσία του σταθμού αλλά δε ξεπερνά το 110% της ελάχιστης ισχύος n_pow που απαιτεί ο σταθμός και την τιμή 3 σε κάθε άλλη περίπτωση. Πριν υπολογιστεί η ισχύς που αποδίδει μια πηγή να γίνεται έλεγχος αν η πηγή δε λειτουργεί λόγω βλάβης.
Το λογισμικό, για κάθε τύπο πηγής, να διαβάζει τον αριθμό των πηγών και να δεσμεύει δυναμικά μνήμη για τα αντίστοιχα αντικείμενα. Στη συνέχεια να καλεί τη συνάρτηση control() για να ελέγξει την κατάσταση τροφοδοσίας του σταθμού για τη δεδομένη στιγμή.  Αν η συνάρτηση επιστρέψει την τιμή 1 να τυπώνει το μήνυμα «Η ισχύς δεν επαρκεί», αν επιστρέψει την τιμή 2 να τυπώνει το μήνυμα «Η ισχύς είναι κάτω από το όριο ασφαλείας» και στην περίπτωση που επιστρέψει την τιμή 3 το μήνυμα «Η τροφοδοσία γίνεται ομαλά». Σε κάθε περίπτωση να τυπώνεται και η συνολική ισχύς που παράγουν οι πηγές.      
Το λογισμικό, συμπεριλαμβανομένης και της συνάρτησης main(), να είναι ανεξάρτητο από τον αριθμό και των τύπο των πηγών.
Ως εφαρμογή να θεωρήσετε ότι υπάρχουν δύο τύποι πηγών.
Ο πρώτος τύπος διαθέτει ηλιακούς συλλέκτες και η ισχύς που αποδίδεται ισούται με το γινόμενο της επιφάνειας του συλλέκτη επί τη φωτεινή ροή, επί ένα συντελεστή S που σχετίζεται με την τεχνολογία κατασκευής του συλλέκτη.
Ο δεύτερος τύπος αφορά ανεμογεννήτριες για τις οποίες η παραγομένη ισχύ ισούται με το γινόμενο της ταχύτητας του ανέμου επί ένα συντελεστή Α που σχετίζεται με την τεχνολογία κατασκευής της ανεμογεννήτριας.
  
Βοηθητικές παρατηρήσεις
Το λογισμικό να ακολουθεί τις αρχές της ενσωμάτωσης και της ανοικτής κλειστής σχεδίασης.
Η φωτεινή ροή, η ταχύτητα του ανέμου και οι συντελεστές S και A μπορεί να διαφέρουν από πηγή σε πηγή.
Με τη δημιουργία των αντικειμένων να διαβάζονται όλα τα απαραίτητα στοιχεία για την υλοποίησή τους.
Για να ελέγξετε αν μια πηγή λειτουργεί να χρησιμοποιήσετε τη συνάρτηση βιβλιοθήκης rand(), ή όποια άλλη διαθέτει ο μεταγλωττιστής που χρησιμοποιείτε, για να παράγετε ένα τυχαίο αριθμό στο διάστημα [0,1]. Αν ο αριθμός αυτός είναι μικρότερος από την πιθανότητα βλάβης της πηγής να θεωρήσετε ότι η πηγή δε λειτουργεί.
Η συνάρτηση rand() ορίζεται στο αρχείο stdlib.h και κάθε φορά που καλείται, επιστρέφει έναν τυχαίο ακέραιο στο διάστημα [0, RAND_MAX]. Η τιμή RAND_MAX ορίζεται και αυτή στο πιο πάνω αρχείο.
Αν βρεθεί ότι μια πηγή δε λειτουργεί λόγω βλάβης να εκτυπώνεται σχετικό μήνυμα με την ταυτότητα της πηγής.


Title: Re: [C++] Άσκηση F - 2013/2014
Post by: TechSupport on December 08, 2013, 20:59:43 pm
εχει πει ποσες θα βαλει συνολο?
8 θυμάμαι είχε πει πως θα είναι συνολικά!  :)


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: giorgos4934 on December 09, 2013, 18:09:45 pm
εχω μια απορια σχετικα με το παραδειγμα του mach3p.cpp..μεσα στις create_units δεσμευει μνημη για τα αντικειμενα αλλα μετα δεν  κραταει πουθενα το p..μου ξεφευγει εμενα κατι η του κορτεση?


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: L on December 09, 2013, 18:22:50 pm
Εσένα :P Καλείται ο κενός constructor της βασικής κλάσης... Δες τι κάνει...  ;)


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: Mumm-ra ο παντοντινός on December 09, 2013, 19:01:14 pm
Έχει καταλάβει κανένας τι καινούριο χρησιμοποιούμε στην εργασία? Static?


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: PureForm on December 09, 2013, 20:16:48 pm
γιεπ,στατικ συναρτησεις


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: Vicky Serres on December 09, 2013, 20:33:58 pm
Static μονο για να κανω return?Γιατι στην control δεν μου φαινεται λογικο να ειναι static, αλλα ουτε και για τον υπολογισμο της ισχυος


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: giorgos4934 on December 09, 2013, 23:17:35 pm
Εσένα :P Καλείται ο κενός constructor της βασικής κλάσης... Δες τι κάνει...  ;)
ναι οντως. πρωτα εκτελειται εκεινος ο constructor..εισαι ωραιος. thnx.


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: PureForm on December 10, 2013, 00:17:54 am
το παραδειγμα του κορτεση mach3ps.cpp(οχι το mach3p.cpp) τι φαση ειναι εχει σχεση με την ασκηση η απλα μπορουμε να μεινουμε στην πιο "απλη" εκδοση ακομα?


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: Fcoriolis on December 10, 2013, 01:24:50 am
το παραδειγμα του κορτεση mach3ps.cpp(οχι το mach3p.cpp) τι φαση ειναι εχει σχεση με την ασκηση η απλα μπορουμε να μεινουμε στην πιο "απλη" εκδοση ακομα?
Καλύτερα να μείνετε στην πιο απλή έκδοση που ζητάει κατά κόρον και στις εξετάσεις.
Το άλλο μόνο για προσωπικό ενδιαφέρον.


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: PureForm on December 10, 2013, 01:28:48 am
το θεμα ειναι οτι δεν καταλαβαινω τι κανει σε εκεινο το παπραδειγμα η μαλλον τι παραπανω θελει να πετυχει απο την προηγουμενη εκδοση οποτε δεν ξερω αν μου χρειαζεται και τωρα


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: Fcoriolis on December 10, 2013, 01:35:23 am
το θεμα ειναι οτι δεν καταλαβαινω τι κανει σε εκεινο το παπραδειγμα η μαλλον τι παραπανω θελει να πετυχει απο την προηγουμενη εκδοση οποτε δεν ξερω αν μου χρειαζεται και τωρα
Από ότι θυμάμαι δεν προσπαθεί να κάνει κάτι διαφορετικό απλά κάνει μια άλλη υλοποίηση
πχ στο πρώτο κάνει global μεταβλητές ενώ στο άλλο κάνει static.
Γενικά ακολουθείς όποιο θέλεις, αλλά μιας και οι static μεταβλητές είναι οι καλύτερες για αυτήν την υλοποίηση καλό είναι να κάνει αυτές.
Ούτε εγώ το είχα πολυκαταλάβει τότε και το παράτησα το 3ps.


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: vasilis1005 on December 10, 2013, 17:39:34 pm
η control θα επιστρεφει 1 ή 2 ή 3 και μεσα στην control ή στην main θα τυπωνονται αυτα που πρεπει;

(αν ειναι να τυπωνονται μεσα στην main θα χρειαστει να βαλω την control static; γιατι προς το παρον δεν το εχω χρησιμοποιησει πουθενα :-\)


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: cdvasile on December 12, 2013, 18:19:41 pm
η control θα επιστρεφει 1 ή 2 ή 3 και μεσα στην control ή στην main θα τυπωνονται αυτα που πρεπει;

(αν ειναι να τυπωνονται μεσα στην main θα χρειαστει να βαλω την control static; γιατι προς το παρον δεν το εχω χρησιμοποιησει πουθενα :-\)
+1


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: giorgos4934 on December 13, 2013, 01:14:13 am
εχω κανει τη βασικη κλαση, την δουλεψα με την μια παραγομενη και δουλεψε..μετα εκανα τη δευτερη παραγομενη πανομοιοτυπη με την αλλη(μιας που εχει μονο μια μεταβλητη διαφορα) και στους constructors της δευτερης μου βαραει error
" undefined reference to 'vtable for (ονομα της δευτερης κλασης)' " ενω δεν το βαραει στην πρωτη και ειναι ολοιδιες..ξερει κανεις τι παιζει;


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: giorgos4934 on December 13, 2013, 14:39:04 pm
τελικα δεν ειχα κανει τις δυο κλασεις ολοιδιες..στη virtual στη δευτερη ξεχασα να δηλωσω οτι ανηκει στην δευτερη κλαση και μου χτυπουσαν οι constructors..


Title: Re: [C++] Άσκηση F - 2013/2014 - Προθεσμία 15/12
Post by: vlad on December 15, 2013, 12:13:10 pm
η control θα επιστρεφει 1 ή 2 ή 3 και μεσα στην control ή στην main θα τυπωνονται αυτα που πρεπει;

(αν ειναι να τυπωνονται μεσα στην main θα χρειαστει να βαλω την control static; γιατι προς το παρον δεν το εχω χρησιμοποιησει πουθενα :-\)

Η control δεν ειναι συναρτηση-μελος κλασης.Παιρνει σαν ορισμα τον διπλο pointer στην βασικη κλαση και εκει μεσα καλεις την-τις virtual.Και ναι,την καλεις στην main.