THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: Anyparktos on November 18, 2008, 16:42:05 pm



Title: [C++] 5η εργασία 2008
Post by: Anyparktos on November 18, 2008, 16:42:05 pm
    

Εργασία E Πολλαπλή κληρονομικότητα (Hμ/νία λήξης δηλώσεων: 24/11/2008) Ομάδες

Εργασία Ε

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

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

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

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

α) Καμία πηγή δε διαθέτει καύσιμα.

β) Υπάρχουν καύσιμα μόνο για την πρώτη πηγή

γ) Η πρώτη πηγή δε διαθέτει καύσιμα ενώ υπάρχουν καύσιμα και των δύο τύπων για τη δεύτερη πηγή.

δ) Υπάρχουν διαθέσιμα καύσιμα όλων των τύπων και για τις δύο πηγές και οι πηγές τροφοδοτούν ταυτόχρονα το σύστημα. 

 

Βοηθητικά στοιχεία

Χρόνος λειτουργίας του σταθμού όταν τροφοδοτείται μόνο από την πηγή 1

T=F1*C1/(P+Ps2)

Χρόνος λειτουργίας του σταθμού όταν τροφοδοτείται μόνο από την πηγή 2

T=(Fa*Ca+Fb*Cb)/(P+Ps1)

Χρόνος λειτουργίας του σταθμού όταν τροφοδοτείται ταυτόχρονα και από τις δύο πηγές

Τ=(F1*C1+ Fa*Ca+Fb*Cb)/P

Ισχύς που παρέχεται από την πηγή 1 όταν ο σταθμός τροφοδοτείται ταυτόχρονα και από τις δύο πηγές

P1=P*F1*C1/(F*C1+Fa*Ca+Fb*Cb)

Ισχύς που παρέχεται από την πηγή 2 όταν ο σταθμός τροφοδοτείται ταυτόχρονα και από τις δύο πηγές

P2=P*( Fa*Ca+Fb*Cb)/(F*C1+Fa*Ca+Fb*Cb)

Όπου

P = Η ισχύς που απαιτείται για τη λειτουργία του σταθμού.

F1 = Η ποσότητα των καυσίμων για την πηγή 1

C1 = Ο συντελεστής απόδοσης του καυσίμου

Ps1 = Η απαιτούμενη ισχύς εφεδρείας για την πηγή 1

Fa =  Η ποσότητα των καυσίμων τύπου a για την πηγή 2

Ca = Ο συντελεστής απόδοσης του καυσίμου

Fb =  Η ποσότητα των καυσίμων τύπου b για την πηγή 2

Cb = Ο συντελεστής απόδοσης του καυσίμου

Ps2 = Η απαιτούμενη ισχύς εφεδρείας για την πηγή 2


Title: Re: [C++] 5η εργασία 2008
Post by: Anyparktos on November 18, 2008, 16:49:39 pm
Οποιος καταλαβε τι ζητάει ο μάστορας α) είναι ιδιοφυία και β) ας μοιραστεί μαζί μας τη γνώση  :D


Title: Re: [C++] 5η εργασία 2008
Post by: Grecs on November 18, 2008, 17:16:17 pm
Αυτο αν δε κανω λαθος το ειχε κανει στην προηγουμενη παραδοση και εχει να κανει με τις virtual.
Βασικα δε ζηταει virtual  οπως τη διαβασα αλλα εκανε το ιδιο παραδειγμα στην παραδοση με τη μονη διαφορα οτι ζητουσε virtual.


Title: Re: [C++] 5η εργασία 2008
Post by: ripper_george on November 18, 2008, 18:56:38 pm
Όταν η 2η πηγή είναι idle, ο τύπος που θα μας δίνει την ισχύ που παρέχει η 1η πηγή ποιος θα είναι???

Αντίσοτοιχα, όταν συμβαίνει το αντιστροφο, (1η idle, 2η ενεργή), ποιον τύπο θα πάρουμε???


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 18, 2008, 19:37:15 pm
Όταν η 2η πηγή είναι idle, ο τύπος που θα μας δίνει την ισχύ που παρέχει η 1η πηγή ποιος θα είναι???

Αντίσοτοιχα, όταν συμβαίνει το αντιστροφο, (1η idle, 2η ενεργή), ποιον τύπο θα πάρουμε???

Η ισχύς που θα παρέχουν οι πηγές στην περίπτωση αυτή θα είναι λογικά P+PS2 ή P+PS1

όπου P η ισχύς για να λειτουργήσει ο σταθμός και PS1,PS2  η ισχύς εφεδρείας των πηγών.


Title: Re: [C++] 5η εργασία 2008
Post by: billakos on November 18, 2008, 19:49:29 pm
Δεν ξέρω παιδιά αλλά εμένα με παιδεύει πιο πολύ πια να καταλάβω τι θέλει παρά να συντάξω τον κώδικα και να τον κάνω να τρέχει....Ίσως φταίω εγώ αλλά θα μπορούσε πιστεύω να είναι πιο κατανοητός..... :???:Επίσης νομίζω ότι η πηγή την ισχύς εφεδρείας θα την κρατάει για να δουλέυει και δεν θα την δίνει αλλά δεν είμαι σίγουρος....


Title: Re: [C++] 5η εργασία 2008
Post by: ripper_george on November 18, 2008, 20:07:26 pm
δεν θα μπορούσα να πω ότι η ισχύς που παρέχει η πηγή 2 όταν η πηγή 1 είναι idle είναι:

power_supplied2nd=fuelA*perA+fuelB*perB

όπου fuel = ποσότητα κασίμου
και per = απόδοση...

 :-\


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 18, 2008, 20:30:34 pm
δεν θα μπορούσα να πω ότι η ισχύς που παρέχει η πηγή 2 όταν η πηγή 1 είναι idle είναι:

power_supplied2nd=fuelA*perA+fuelB*perB

όπου fuel = ποσότητα κασίμου
και per = απόδοση...

 :-\
Αν δείς εδώ η ισχύς ισούται με
T=(Fa*Ca+Fb*Cb)/(P+Ps1)     =>(P+Ps1) =(Fa*Ca+Fb*Cb)/Τ   .Άρα αυτό που λες πρέπει να το διαιρέσεις με το χρόνο. Νομίζω είναι όπως είπα παραπάνω.


Title: Re: [C++] 5η εργασία 2008
Post by: ripper_george on November 18, 2008, 20:35:08 pm
ΣΩΣΤ!!!!!! :D :D :D :D :D :D :D :D :D :D :D


Title: Re: [C++] 5η εργασία 2008
Post by: N3ikoN on November 18, 2008, 21:04:34 pm
ΣΩΣΤ!!!!!! :D :D :D :D :D :D :D :D :D :D :D


xaxaxaxaxaxaxaxx καμενο σωστ!  :P

τι εργασια ειναι αυτη παλι....ουτε να τη διαβασω εχω ορεξη..δεν μπορω να τη βαλω κ στο φλασακι θα κρασαρει απο τα GB που πιανει η εκφωνηση  :P ελπιζω ν ναι ευκολη!


Title: Re: [C++] 5η εργασία 2008
Post by: mitsos_dlx on November 18, 2008, 21:14:29 pm
Στον τύπο: P1=P*F1*C1/(F*C1+Fa*Ca+Fb*Cb) το F τι είναι? Μήπως το F1???

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

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

Άλλη μία ενδιαφέρουσα άσκηση... :P :P :P


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 18, 2008, 21:45:09 pm
Εγώ τα διαβάζω όλα μια φορά και μετά χρησιμοποιώ τα ίδια για όλες τις περιπτώσεις.


Title: Re: [C++] 5η εργασία 2008
Post by: Itachi on November 19, 2008, 22:18:23 pm
Correct me if i am wrong, αλλα οι συναρτησεις αρχικων συνθηκων εκτελουνται μια φορα οταν δημιουργειται το αντικειμενο, σωστα; Δηλαδη αναλογα με ποιο ορισμα θα δωσουμε θα εκτελεστει και η αναλογη συναρτηση αρχικων συνθηκων...Εστω πχ οτι δημιουργω ενα αντικειμενο και δινω για ορισματα τις ισχυεις εφεδρειας(δηλαδη εκτελουνται οι συναρτησεις αρχικων συνθηκων με το ενα ορισμα), την ποσοτητα του καυσιμου και τους συντελεστες αποδοσης δεν θα πρεπει να τους διαβασω καπως διαφορετικα; Δηλαδη θελω να πω οτι αφου δημιουργησω ενα αντικειμενο και εκτελεστουν οι συναρτησεις αρχικων συνθηκων με το ενα ορισμα δεν μπορω να εκτελεσω τις συναρτησεις αρχικων συνθηκων με τα πολλα ορισματα χωρις να δημιουργησω ενα αλλο αντικειμενο....Η μηπως γινεται να καλεσω μεσα στο προγραμμα την αλλη συναρτηση αρχικων συνθηκων για να αρχικοποιησει τις τιμες στις μεταβλητες που θελω;


Title: Re: [C++] 5η εργασία 2008
Post by: N3ikoN on November 20, 2008, 02:03:26 am
αφου εχω κανει τις κλασεις κτλ γραφω μεσα στη μαιν μου : system s(q,r);
δλδ για να οριστει ενα αντικειμενο τυπου system με ορισματα τις εφεδρικες στη συγκεκριμενη περίπτωση, και ο κομπαιλερ μου λεει οτι λειπει ενα ερωτηματικό , κ οταν παταω διπλο κλικ ν μου πει που μου τοποθετει αναμεσα στο s και στο (q,r).......εκτοσ του οτι αυτο ειναι ακυρο..βαζω ερωτηματικο να δω τι θ μ βγαλει κ μ βγαζει παλι τ ιδιο..κ δεν παιζει να θελει αλλου ερωτηματικο..τ κοιταξα...καμια ιδεα?? :)


Title: Re: [C++] 5η εργασία 2008
Post by: billakos on November 20, 2008, 02:18:21 am
Το ίδιο έπαθα και εγώ...Άλλαξε όνομα την κλάση σου...Μην την έχεις system γιατί ο compiler επείδη είναι δεσμευμένη η λέξη νομίζει ότι καλείς τη συνάρτηση system...Κάν' την π.χ. sytem1
και θα τρέξει... ;)


Title: Re: [C++] 5η εργασία 2008
Post by: ripper_george on November 20, 2008, 02:20:22 am
αυτό πάθαινα και εγώ...
Δοκίμασε να μετονομάσεις την κλάση σου απο system σε System.

δεν ξέρω γιατί, αλλά όσο το έγραφα με μικρά γράμματα, μου έβγαζε σφάλμα, το ίδιο ακριβώς.
Σα να νόμιζε ότι το system ηταν συνάρτηση....

class System : private source_1, private source_2
{
......
}

και στην main()
{
........
System Station1(.....Βάλε εδώ τα ορίσματα.....);
........
}

P.S. Με πρόλαβαν!!


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 20, 2008, 03:22:12 am
Βασικά δε χρειάζεται να αλλάξεις όνομα. Απλά βάλε πιο μπροστά τι λέξη class και δε θα βγάλει σφάλμα. Δηλαδή:

class system s(q,r);


Title: Re: [C++] 5η εργασία 2008
Post by: N3ikoN on November 20, 2008, 12:12:22 pm
Το ίδιο έπαθα και εγώ...Άλλαξε όνομα την κλάση σου...Μην την έχεις system γιατί ο compiler επείδη είναι δεσμευμένη η λέξη νομίζει ότι καλείς τη συνάρτηση system...Κάν' την π.χ. sytem1
και θα τρέξει... ;)


muahahahahahahahaha!! εχασα τον υπνο μου για τον παλιοΚΟΜΠΑΙΛΕΡ!! εσπα , θενκς όλοους σας!  ;)


Title: Re: [C++] 5η εργασία 2008
Post by: costas122 on November 20, 2008, 21:03:40 pm
'Εχει καταλάβει κανείς τι είναι το F  στους τύπους των Ρ1 και Ρ2???

Quote
Ισχύς που παρέχεται από την πηγή 1 όταν ο σταθμός τροφοδοτείται ταυτόχρονα και από τις δύο πηγές

P1=P*F1*C1/(F*C1+Fa*Ca+Fb*Cb)

Ισχύς που παρέχεται από την πηγή 2 όταν ο σταθμός τροφοδοτείται ταυτόχρονα και από τις δύο πηγές

P2=P*( Fa*Ca+Fb*Cb)/(F*C1+Fa*Ca+Fb*Cb)

Μήπως εννοεί F1???????  :???:  grrrrrrrrrrrrrr  :o


Title: Re: [C++] 5η εργασία 2008
Post by: billakos on November 20, 2008, 21:15:47 pm
Ναι F1 εννοεί.....Εγώ τουλάχιστον έτσι νομίζω.....


Title: Re: [C++] 5η εργασία 2008
Post by: costas122 on November 20, 2008, 21:50:38 pm
'Ετσι πρέπει να είναι!!!


Title: Re: [C++] 5η εργασία 2008
Post by: tolis_1 on November 20, 2008, 23:09:44 pm
εκει που στον compiler ειχα εναν κανονικο κερσορα εκανα μια μαλακια κ ο κερσορασ <<παχυνε>> κ εγινε σαν εκεινο τον ελεινο που εχει στο εργαστηριο.ξερει κανεις να μου πει πως τον επαναφερω?


Title: Re: [C++] 5η εργασία 2008
Post by: Errikos on November 20, 2008, 23:14:29 pm
 ^que^  re toli trelenomai, ti kokkines boules kai prasinoi drakoi einai auta pou les..ase tis leptomereies, nai F1 einai.


Title: Re: [C++] 5η εργασία 2008
Post by: Καμένος on November 21, 2008, 00:20:21 am
Μπάς και πάτησες insert?


Title: Re: [C++] 5η εργασία 2008
Post by: guillem on November 21, 2008, 01:34:30 am
Μπάς και πάτησες insert?
^peace^σίγουρα είναι αυτο...


Title: Re: [C++] 5η εργασία 2008
Post by: N3ikoN on November 21, 2008, 18:25:49 pm
αυτο το καταραμμενο το ινσερτ.... τις προαλλες το χα μαθει κ γω..τοσα νευρα γ το τπτ ποσες φορες!   :D


Title: Re: [C++] 5η εργασία 2008
Post by: tomshare3 on November 21, 2008, 20:12:19 pm
Αυτο αν δε κανω λαθος το ειχε κανει στην προηγουμενη παραδοση και εχει να κανει με τις virtual.
Βασικα δε ζηταει virtual  οπως τη διαβασα αλλα εκανε το ιδιο παραδειγμα στην παραδοση με τη μονη διαφορα οτι ζητουσε virtual.

Δεν νομιζω να θελει virtual.. γιατι μπερδευεται πολυ το πραγμα μετα.. φανταζομαι θα το ζητουσε.. αλλωστε ο τιτλος της εργασιας ειναι Πολλαπλή κληρονομικότητα
Αν παντως το καναμε με virtual, τις διαφορετικες εκδοσης της Τ που θα τις γραφαμε? μια σε καθε κλαση?


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 21, 2008, 21:09:57 pm
Δε γίνεται με virtual ,αφού έχουμε μόνο μια παραγόμενη


Title: Re: [C++] 5η εργασία 2008
Post by: Anyparktos on November 22, 2008, 04:47:36 am
Quote
Ως εφαρμογή η συνάρτηση main να διαβάζει τα στοιχεία που αφορούν τη λειτουργία των πηγών και να εκτυπώνει τον χρόνο λειτουργίας του σταθμού και την ισχύ που θα προσφέρει η κάθε πηγή δημιουργώντας τα κατάλληλα αντικείμενα για κάθε μια από τις πιο κάτω περιπτώσεις.

α) Καμία πηγή δε διαθέτει καύσιμα.

β) Υπάρχουν καύσιμα μόνο για την πρώτη πηγή

γ) Η πρώτη πηγή δε διαθέτει καύσιμα ενώ υπάρχουν καύσιμα και των δύο τύπων για τη δεύτερη πηγή.

δ) Υπάρχουν διαθέσιμα καύσιμα όλων των τύπων και για τις δύο πηγές και οι πηγές τροφοδοτούν ταυτόχρονα το σύστημα.

Επειδή σαν κάτι να μη κατάλαβα ρε παιδιά,στην ουσία θα δημιουργήσουμε τα αντικείμενα και θα βάλουμε εκ των προτέρων τιμές στις διάφορες παραμέτρους - καύσιμα και λοιπά - τέτοιες ώστε να ικανοποιούνται αυτές οι περιπτώσεις?
Εννοώ,δε θα βάλουμε καμία cin στο πρόγραμμα στην ουσία?Και απλά θα βάλουμε όλες τις τιμές εκ των προτέρων?Δε το βρίσκω να έχει κάποια χρησιμότητα έτσι...Παραθέτω και τον κώδικα της system να μου πείτε αν έπρεπε να γράψω κάτι διαφορετικό...Βλέπε να προσθέσω συναρτήσεις ή κάτι αλλο...

PS: Aυτές οι εκφωνήσεις μας έχουν καταστρέψει τα μυαλά =_=

Code:
class system:private source_1,private source_2
{

 float T;

 public:

 void source1sim(float P);
 void source2sim(float P);
 void bothsourcessim(float P);

};


void system :: source1sim(float P)
{
 T=F1*C1/(P+Ps2);
 cout<<"\no xronos leitourgias tou sta8mou einai: "<<T;
 cout<<"\nisxys pou parexetai apo thn phgh 1: "<<P+Ps2;
 cout<<"\nisxys pou aporofatai apo thn phgh 2: "<<Ps2;
}

void system :: source2sim(float P)
{
 T=(Fa*Ca+Fb*Cb)/(P+Ps1);
 cout<<"\no xronos leitourgias tou sta8mou einai: "<<T;
 cout<<"\nisxys pou parexetai apo thn phgh 2 : "<<P+Ps1;
 cout<<"\nisxys pou aporofatai apo thn phgh 1: "<<Ps1;
}

void system :: bothsourcessim(float P)
{
 float P1,P2;
 T=(F1*C1+Fa*Ca+Fb*Cb)/P;
 cout<<"\no xronos leitourgias tou sta8mou einai: "<<T;
 P1=P*F1*C1/(F1*C1+Fa*Ca+Fb*Cb);
 P2=P*( Fa*Ca+Fb*Cb)/(F1*C1+Fa*Ca+Fb*Cb);
 cout<<"\nisxys pou parexetai apo thn phgh 1: "<<P1;
 cout<<"\nisxys pou parexetai apo thn phgh 2: "<<P2;
}


Title: Re: [C++] 5η εργασία 2008
Post by: Errikos on November 22, 2008, 12:53:25 pm
Koitakse egw ta diavazw OLA sti main, kai meta otan einai i wra na kalesw ta antikeimena exw balei mia if panw apo ka8e antikeimeno, dld lew if ta kausima kai twn dio==0  tote mpes se auto to antikeimeno if ta kausima tou 1==0 kai 2!=0 tote mpes sto deutero antikeimeno k oute ka8e ksis.


Title: Re: [C++] 5η εργασία 2008
Post by: Anyparktos on November 22, 2008, 13:42:08 pm
Οταν λες "εχω βαλει την if πανω σε καθε αντικειμενο" τι ακριβως εννοείς?
Επισης,αν ορισουμε ενα αντικειμενο πχ Α τυπου source_1 μετα μπορουμε να καλεσουμε τις συναρτησεις της system γι αυτο το αντικειμενο?
Στην περιπτωση που εχουν καυσιμα και οι δυο σταθμοι τι αντικείμενο ορίζουμε?Παραθετω όλο μου τον κώδικα πριν τη Main αν έχει κάποιος όρεξη να μου πει αν έχω κάνει κάτι λάθος αν και στην εργασία ορίζει στην ουσία πάνω κάτω τι συναρτήσεις να βάλουμε...

Code:
#include <iostream.h>
#include <stdlib.h>

class source_1
{
 protected:

 float F1,C1,Ps1;

 public:

 source_1(float idpwr);
 source_1(float fuel,float pf);

};


//orise edw tis arxikes ths source_1

source_1::source_1(float idpwr)
{
 Ps1=idpwr;
}

source_1::source_1(float fuel,float pf)
{
 F1=fuel;
 C1=pf;
}


class source_2
{
 protected:

 float Fa,Ca,Fb,Cb,Ps2;

 public:

 source_2(float idpwr);
 source_2(float fuela,float pfa,float fuelb,float pfb);

};

//orise edw tis arxikes ths source_2

source_2::source_2(float idpwr)
{
 Ps2=idpwr;
}

source_2::source_2(float fuela,float pfa,float fuelb,float pfb)
{
 Fa=fuela;
 Ca=pfa;
 Fb=fuelb;
 Cb=pfb;
}


class system:private source_1,private source_2
{

 float T;

 public:

 void source1sim(float P);
 void source2sim(float P);
 void bothsourcessim(float P);

};


void system :: source1sim(float P)
{
 T=F1*C1/(P+Ps2);
 cout<<"\no xronos leitourgias tou sta8mou einai: "<<T;
 cout<<"\nisxys pou parexetai apo thn phgh 1: "<<P+Ps2;
 cout<<"\nisxys pou aporofatai apo thn phgh 2: "<<Ps2;
}

void system :: source2sim(float P)
{
 T=(Fa*Ca+Fb*Cb)/(P+Ps1);
 cout<<"\no xronos leitourgias tou sta8mou einai: "<<T;
 cout<<"\nisxys pou parexetai apo thn phgh 2 : "<<P+Ps1;
 cout<<"\nisxys pou aporofatai apo thn phgh 1: "<<Ps1;
}

void system :: bothsourcessim(float P)
{
 float P1,P2;
 T=(F1*C1+Fa*Ca+Fb*Cb)/P;
 cout<<"\no xronos leitourgias tou sta8mou einai: "<<T;
 P1=P*F1*C1/(F1*C1+Fa*Ca+Fb*Cb);
 P2=P*( Fa*Ca+Fb*Cb)/(F1*C1+Fa*Ca+Fb*Cb);
 cout<<"\nisxys pou parexetai apo thn phgh 1: "<<P1;
 cout<<"\nisxys pou parexetai apo thn phgh 2: "<<P2;
}


Title: Re: [C++] 5η εργασία 2008
Post by: Errikos on November 22, 2008, 13:51:17 pm
ennow auto:

if (F1==0 && Fa==0 && Fb==0)
        System a(Ps1,Ps2,P);                           //kanena
if (F1!=0 && Fa==0 && Fb==0)
        System b(F1,C1,Ps2,P);                         //an thimamai kala mono to a exei kausima edw
if (F1==0 && Fa!=0 && Fb!=0)
        System c(Ps1,Fa,Ca,Fb,Cb,P);                  //logika mono to b(!)
if (F1!=0 && Fa!=0 && Fb!=0)
        System d(F1,C1,Fa,Ca,Fb,Cb,P);                  //kai ta dio


       


Title: Re: [C++] 5η εργασία 2008
Post by: Anyparktos on November 22, 2008, 14:03:24 pm
ennow auto:

if (F1==0 && Fa==0 && Fb==0)
        System a(Ps1,Ps2,P);                           //kanena
if (F1!=0 && Fa==0 && Fb==0)
        System b(F1,C1,Ps2,P);                         //an thimamai kala mono to a exei kausima edw
if (F1==0 && Fa!=0 && Fb!=0)
        System c(Ps1,Fa,Ca,Fb,Cb,P);                  //logika mono to b(!)
if (F1!=0 && Fa!=0 && Fb!=0)
        System d(F1,C1,Fa,Ca,Fb,Cb,P);                  //kai ta dio


       

Ετσι πως το βλεπω εγώ δλδ,εσύ στη system έκανες άλλες 4 constructor που να παίρνουν ορίσματα όλες τις παραμέτρους των σταθμών 1 και 2 που μας είναι απαραίτητες σε κάθε περίπτωση...Αμα δεις το δικο μου κώδικα στην ουσία έκανα μόνο τις 2 constructor που ζητά για τη source_1 και τις 2 που ζητά για τη source_2.To πρόβλημα μου στην ουσία είναι πως να διαχειριστώ τις τέσσερις καταστάσεις που ζητά η εκφώνηση μόνο με ένα αντικείμενο τύπου system απο τη στιγμή που οι 4 δεδομένες constructor που μας ζητά συμπληρώνουν ανα δυο τα στοιχεία μιας μόνο πηγής...


Title: Re: [C++] 5η εργασία 2008
Post by: Wanderer on November 22, 2008, 14:47:38 pm
Έτσι όπως το κατάλαβα από την εκφώνηση (υποθέτοντας ότι "αδράνεια" σημαίνει πως δεν υπάρχουν καύσιμα):

1.) Καμιά πηγή δεν διαθέται καύσιμα: Τότε εκτυπώνει απλά το μήνυμα "Δεν υπάρχουν σε καμιά πηγή καύσιμα, δεν λειτουργεί ο σταθμός"

2.) Υπάρχουν καύσιμα μόνο για την πρώτη πηγή--> ορίζεται ένα αντικείμενο source 1 με constructor που έχει ορίσματα για τα καύσιμα κ.λ.π. και ένα αντικείμενο source 2 με constructor που έχει ορίσματα για την ισχύ που παίρνει από τη πηγή 1.

Έτσι υποθέτω ότι τελικά η ισχύς που παρέχει η πηγή 1 προκύπτει από την σχετικό τύπο που δίνεται, μείον την ισχύ που δίνει στην πηγή 2 για να είναι σε κατάσταση εφεδρείας (Ps2, την ποσότητα αυτή λέει ότι τη δίνει ο χρήστης από τη main).

Και αντίστοιχα ο χρόνος προκύπτει από το σχετικό τύπο.

3.) Όμοια απλά το ρόλο της 1 παίζει η 2 ( source_1 object1(Ps1);  source_2 object2(P,Fa,Ca,Fb,Cb); )

4.) Δεν απορροφά καμιά πηγή ισχύ από την άλλη για να διατηρείται σε κατάσταση εφεδρείας, άρα ( source_1 object1(P,F1,C1); source_2 object2(P,Fa,Ca,Fb,Cb); ) )



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


Title: Re: [C++] 5η εργασία 2008
Post by: tomshare3 on November 23, 2008, 03:02:25 am
συμφωνω!
Οσο για το τελευταιο π λες ειναι θεμα του χρηστη τι τιμες θα δωσει... Αν θελεις μπορεις να κανεις ελεγχο των τιμων που εισαγονται αλλα δεν νομιζω να εχει σημασια..


Title: Re: [C++] 5η εργασία 2008
Post by: Wanderer on November 23, 2008, 03:18:37 am
Πάντως επειδή υπάρχει η κλάσση system που αυτή θα δίνει αποτελέσματα, πρέπει στη main να δημιουργηθούν λογικά αντικείμενα μόνο τύπου class, με τον κατάλληλο αριθμό ορισμάτων κάθε φορά.

Δλδ έτσι όπως το αντιλαμβάνομαι, θα έχει τρεις constructor η κλάσση system.

Άρα σε κάθε περίπτωση:

1.)cout<<"Δεν υπάρχουν καύσιμα, δεν λειτουργεί ο σταθμός\n";

2.)system objc(P,F1,C1,Ps2);

3.)system objc(P,Fa,Ca,Fb,Cb,Ps1);

4.) system objc(P,F1,C1,Fa,Ca,Fb,Cb);

Quote
Αμα δεις το δικο μου κώδικα στην ουσία έκανα μόνο τις 2 constructor που ζητά για τη source_1 και τις 2 που ζητά για τη source_2
Όμως πρέπει να έχεις constructor και για την κλάσση system, αφού θα δημιουργήσεις αντικείμενα τύπου system.

edit:τους constructors των κλάσσεων source1 & source2 θα τους χρησιμοποιήσεις μέσα στους constructors της κλάσσης system


Ελπίζω μη λέω καμιά βλακεία και μπερδέψω κανέναν...

edit:τώρα που το ξαναβλέπω, ο Ερρίκος λίγα ποστ πιο πάνω το ίδιο έγραψε :P


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 23, 2008, 03:21:21 am
Η system πρέπει να έχει 4 constructor ώστε να καλύπτονται όλες οι περιπτώσεις ,άσχετα αν αποφασίσεις να τις χρησιμοποιήσεις ή όχι. Κατά τα άλλα γίνεται πιστεύω περίπου όπως είπες στο τελευταίο ποστ σου.


Title: Re: [C++] 5η εργασία 2008
Post by: radio on November 23, 2008, 03:44:01 am
4 constructors??  :o  :o :o 1 ftanei kai perisseuei!!


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 23, 2008, 03:49:44 am
4 constructors??  :o  :o :o 1 ftanei kai perisseuei!!

οι source_1 ,source_2 έχουν από 2.       

Έστω   source_1 :           s11,s12
source_2:                       s21,s22

Οι constructors της system πρέπει να ικανοποιούν τους συνδυασμούς :
1)  s11,s21
2) s11,s22
3) s12,s21
4) s12,s22


Title: Re: [C++] 5η εργασία 2008
Post by: radio on November 23, 2008, 03:58:27 am
Efoson h system einai private paragomenh twn source_1 kai source_2 mporei na prospelasei ta stoixeia tous,synepws mporeis na baleis ston constructor tis system na thetei kapoies times mesw twn constructors twn source_1 kai source_2 kai tis ypoloipes na tis thetei o constructor tis system


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 23, 2008, 04:11:00 am
Efoson h system einai private paragomenh twn source_1 kai source_2 mporei na prospelasei ta stoixeia tous,synepws mporeis na baleis ston constructor tis system na thetei kapoies times mesw twn constructors twn source_1 kai source_2 kai tis ypoloipes na tis thetei o constructor tis system

Ναι, άλλα κάθε μια από τις παραγόμενες έχει 2 constructor. Πως θα περνάς τις μεταβλητές με μια constructor της system αφού κάθε φορά οι constructor των βασικών παίρνουν διαφορετικά όρισματα, τόσο σε είδος όσο και σε αριθμό?      Επίσης ακόμα και αν κατάφερες να το κάνεις δε νομίζω να είναι σωστή πρακτική.

Προφανώς δεν έρχεσαι στα μαθήματα θεωρίας.


Title: Re: [C++] 5η εργασία 2008
Post by: λήθη on November 23, 2008, 04:15:15 am
Προφανώς δεν έρχεσαι στα μαθήματα θεωρίας.

Ενταξει ρε..δε χρειαζεται να του τη λες..

και η κοπελια διπλα μου δεν εχει πατησει ουτε σε ενα μαθημα
αλλα το καταλαβε και το εκανε σωστα οπως λες απο μονη της..

Το να πηγαινει στα μαθηματα δεν ειναι αναγκαια συνθηκη, παρα μονο ικανη ;)


a_

577


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 23, 2008, 04:23:46 am
Προφανώς δεν έρχεσαι στα μαθήματα θεωρίας.

Ενταξει ρε..δε χρειαζεται να του τη λες..

και η κοπελια διπλα μου δεν εχει πατησει ουτε σε ενα μαθημα
αλλα το καταλαβε και το εκανε σωστα οπως λες απο μονη της..

Το να πηγαινει στα μαθηματα δεν ειναι αναγκαια συνθηκη, παρα μονο ικανη ;)


a_

577
Δε διαφωνώ,  απλά υπέθεσα ότι ο radio δεν παρακολουθεί .

Υ.Γ Δε σημαίνει ότι όποιος παρακολουθεί τα καταλαβαίνει καλύτερα,αλλά είναι πιο πιθανό ένας που δε παρακολουθεί να οδηγηθεί σε λάθη.


Title: Re: [C++] 5η εργασία 2008
Post by: radio on November 23, 2008, 04:24:30 am
Ola ta stoixeia ta diabazeis sthn main mia fora kai isxyoun kai gia tis 4 periptwseis,opote poios o logos na dhmiourghseis 4 antikeimena? Ayto gia ton arithmo,gia to eidos oles idioy tupou float einai....
Egw epeleksa h system na thetei tin isxy efedreias kai tis ypoloipes mesw twn source_1 kai source_2 alla den exei simasia opws thes to kaneis

System(float sps1,float sps2, float sf1 ,float sc1,float sfa,float sca,float sfb,float scb ):source_1(sf1,sc1),source_2(sfa,sfb,sca,scb){
Ps1=sps1;
Ps2=sps2;
}

System a(ps1,ps2,f1,c1,fa,ca,fb,cb);

.

Emfanever na exeis mia diaforetikh apopsh gia thn askhsh apo to 'tade efh' o kathigitis den einai kako..


Title: Re: [C++] 5η εργασία 2008
Post by: pitsa on November 23, 2008, 04:29:41 am
βασικά αν γίνεται μη γράφεις σε greeklish γιατί μας βγαίνουν τα μάτια...

όσο για αυτό που λες στο ποστ,δεν ξέρω αν κατάλαβα καλά,απλά επειδή στην εκφώνηση σου λέει ότι θέλεις 2 constructors για source_1 και άλλους 2 για τη source_2 οπότε απο τη system πρέπει να υπάρχουν και ανάλογοι constructors οι οποίοι να συνδιάζουν τους άλλους 4.

όσο για αυτό που λες για το ότι όλα ισχύουν για όλες τις περιπτώσεις δεν είναι έτσι...

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


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 23, 2008, 04:35:39 am
Ola ta stoixeia ta diabazeis sthn main mia fora kai isxyoun kai gia tis 4 periptwseis,opote poios o logos na dhmiourghseis 4 antikeimena? Ayto gia ton arithmo,gia to eidos oles idioy tupou float einai....
Egw epeleksa h system na thetei tin isxy efedreias kai tis ypoloipes mesw twn source_1 kai source_2 alla den exei simasia opws thes to kaneis

System(float sps1,float sps2, float sf1 ,float sc1,float sfa,float sca,float sfb,float scb ):source_1(sf1,sc1),source_2(sfa,sfb,sca,scb){
Ps1=sps1;
Ps2=sps2;
}

System a(ps1,ps2,f1,c1,fa,ca,fb,cb);

.

Emfanever na exeis mia diaforetikh apopsh gia thn askhsh apo to 'tade efh' o kathigitis den einai kako..

Δεν είναι κακό ,αλλά καθηγητής είναι , όλο και κάτι παραπάνω θα ξέρει, ειδικά σε αυτό το μάθημα που βασίζεται σε ορισμένες αρχές και τεχνικές που παίζουν σημαντικό ρόλο στον αντικειμενοστραφή προγρ. Στην τελική θα βαθμολογηθείς με βάση αυτά που ζητάει ο καθηγητής,γι'αυτό στο επισήμανα.


Title: Re: [C++] 5η εργασία 2008
Post by: radio on November 23, 2008, 04:47:22 am
sorry gia ta greeklish o firefox ftaiei  :P
Apla lew den exei nohma na kaneis 4 antikeimena kai 4 constructors efoson mporeis na ta metabibaseis ta stoixeia se enan me ena antikeimeno...
Isxyoun gia oles tis periptwseis, esy diabases gia kathe periptwsh ola ta p f kai c ksexwrista? 
H periptwsh pou anafereis einai h periptwsh 3 kai den sou xreazetai h ps2 alla auto ti sxesh exei?  :???:  Sth synarthsh thn system pou kaneis ypologismous den thn xrhsimopoieis
T=(Fa*Ca+Fb*Cb)/(P+Ps1);//xronos
P1=0;//isxys pou parexei h source 1
P2=P+Ps1;//isxys pou parexei h source 2

Emfanever Ok re megale na sai kala


Title: Re: [C++] 5η εργασία 2008
Post by: pitsa on November 23, 2008, 04:49:54 am
απλά σου είπα ότι δε σου χρειάζονται πάντα όλες οι μεταβλητές!!ναι κ γω στη μαιν όλες τις  διαβάζω,αλλά μετά με έναν έλγχο επιλέγω ποιες χρειάζομαι να "φορτώσω" στο εκάστοτε αντικείμενο που θα δημιουργήσω!
δλδ δε δημιουργώ ένα αντικείμενο για όλα,αλλά μόνο αυτό που μου χρειάζεται για την κάθε περίπτωση και έτσι καλώ τον αντίστοιχο constructor!


Title: Re: [C++] 5η εργασία 2008
Post by: radio on November 23, 2008, 04:58:52 am
Apo oti katalaba se enoxlei pou ta orismata tou constructor kai tou antikeimenou einai perissotera apo oti xreiazontai se kathe periptwsh,einai peritta..den einai peritto na kaneis 4 constructor kai 4 antikeimena kai elegxo??
Ola ta stoixeia ta diabazeis sthn main mia fora kai isxyoun kai gia tis 4 periptwseis,opote poios o logos na dhmiourghseis 4 antikeimena? Ayto gia ton arithmo,gia to eidos oles idioy tupou float einai....
Egw epeleksa h system na thetei tin isxy efedreias kai tis ypoloipes mesw twn source_1 kai source_2 alla den exei simasia opws thes to kaneis

System(float sps1,float sps2, float sf1 ,float sc1,float sfa,float sca,float sfb,float scb ):source_1(sf1,sc1),source_2(sfa,sfb,sca,scb){
Ps1=sps1;
Ps2=sps2;
}

System a(ps1,ps2,f1,c1,fa,ca,fb,cb);

.

Emfanever na exeis mia diaforetikh apopsh gia thn askhsh apo to 'tade efh' o kathigitis den einai kako..

Δεν είναι κακό ,αλλά καθηγητής είναι , όλο και κάτι παραπάνω θα ξέρει, ειδικά σε αυτό το μάθημα που βασίζεται σε ορισμένες αρχές και τεχνικές που παίζουν σημαντικό ρόλο στον αντικειμενοστραφή προγρ. Στην τελική θα βαθμολογηθείς με βάση αυτά που ζητάει ο καθηγητής,γι'αυτό στο επισήμανα.

Emfanever kati leipei apo to post sou....  ^ytold^  :P


Title: Re: [C++] 5η εργασία 2008
Post by: Emfanever on November 23, 2008, 05:11:31 am
 :)

Αυτό με τους constructors γίνεται περίπου όπως και στο παράδειγμα του ethmmy παρακάτω:
Code:
#include <iostream.h>
class A{
  protected:
    int a;
    float d;
  public:
    A(int n) {a=n;d=2.*a;}
    A(int n,float r){a=n;d=r;}
    ~A(){cout <<"Elements of A class has been destroyd \n";}
    void out_a(){cout <<"a = "<<a<<"\nd = "<<d<<'\n';}
};

class B{
  protected:
    int b;
  public:
    B(int n);
    ~B(){cout <<"Elements of B class has been destroyd \n";}
    void out_b(){cout <<"b = "<<b<<'\n';}
};

B::B(int n){b=n;}

class C : public A,public B{
    int c;
  public:
    C(int n,int m,int k);
    C(int n,int m,int k,float r);
    ~C(){cout <<"Elements of C class has been destroyd \n";;}
    void out_c(){cout <<"c = "<<c<<'\n';}
};

C::C(int n,int m,int k):A(m),B(k){c=n;}
C::C(int n,int m,int k,float r):A(m,r),B(k){c=n;}

void main()
{ C m(1,3,4);
  m.out_a();
  m.out_b();
  m.out_c();
}



Title: Re: [C++] 5η εργασία 2008
Post by: radio on November 23, 2008, 05:26:28 am
Telos. Den ginetai alliws.  :)


Title: Re: [C++] 5η εργασία 2008
Post by: Airmak_gr on November 23, 2008, 15:23:52 pm
παιδια εχω κανει σχεδον την ασκηση........απλα εχω καποια προβληματα με τα ορισματα στην System....μπορει να με pm καποιος να του στειλω τον κωδικα να μου πει τι λαθη εχω κανει???ευχαριστω


Title: Re: [C++] 5η εργασία 2008
Post by: zeus90 on November 23, 2008, 15:58:10 pm
Τους υπολογισμούς και την εκτύπωση των αντίστοιχων μηνυμάτων μπορούμε να την κάνουμε μέσα στην αντίστοιχη constructor ή θα πρέπει να δημιουργήσουμε ανεξάρτητες συναρτήσεις που θα κάνουν αυτήν τη δουλειά και θα τις καλέσουμε μετά την δημιουργία του κάθε αντικειμένου?Σας μπέρδεψα;

Αν όχι ξεμπερδέψτε με... :D


Title: Re: [C++] 5η εργασία 2008
Post by: Άγνωστος Χ on November 23, 2008, 16:13:29 pm
Ο συντελεστής απόδοσης είναι τα λίτρα/ώρα(όπως λέει) ή η ενέργεια/λίτρο όπως θα έπρεπε για να είναι σωστοί οι τύποι. Τι γίνεται αν κατά την ταυτόχρονη λειτουργία των δύο πηγών τελειώσουν τα καύσιμα της μιας; Τότε θα είχε νόημα το λίτρα/ώρα. Τα σχόλια σας... :???:


Title: Re: [C++] 5η εργασία 2008
Post by: Anyparktos on November 23, 2008, 16:42:06 pm
Oποιος βρει τι πάει στραβά μ αυτό κερδίζει αιώνια ευγνωμοσύνη...Δυστυχώς δύσκολα θα βρω άλλο χρόνο ν ασχοληθώ...
Μου βγάζει "cannot find default constructor" για όλα όσα έφτιαξα...

Code:
#include <iostream.h>
#include <stdlib.h>

class source_1
{
 protected:

 float F1,C1,Ps1;

 public:

 source_1(float idpwr);
 source_1(float fuel,float pf);

};


//orise edw tis arxikes ths source_1

source_1::source_1(float idpwr)
{
 Ps1=idpwr;
}

source_1::source_1(float fuel,float pf)
{
 F1=fuel;
 C1=pf;
}


class source_2
{
 protected:

 float Fa,Ca,Fb,Cb,Ps2;

 public:

 source_2(float idpwr);
 source_2(float fuela,float pfa,float fuelb,float pfb);

};

//orise edw tis arxikes ths source_2

source_2::source_2(float idpwr)
{
 Ps2=idpwr;
}

source_2::source_2(float fuela,float pfa,float fuelb,float pfb)
{
 Fa=fuela;
 Ca=pfa;
 Fb=fuelb;
 Cb=pfb;
}


class system:private source_1,private source_2
{

 float T;

 public:

 system(void);//den yparxoun kausima
 system(float fuel1,float pf1,float idpwr2); //mono kausima gia thn prwth phgh
 system(float fuel2a,float fuel2b,float pf2a,float pf2b,float idpwr1);//mono h deyterh phgh
 system(float fuel1,float pf1,float fuel2a,float fuel2b,float pf2a,float pf2b);//kai oi dyo typoi-ap ola
 void source1sim(float P);
 void source2sim(float P);
 void bothsourcessim(float P);

};

system::system(void)
{
 cout<<"\no sta8mos de leitourgei,den yparxoyn kausima";
}

system::system(float fuel1,float pf1,float idpwr2)
{
 F1=fuel1;
 C1=pf1;
 Ps2=idpwr2;
}

system::system(float fuel2a,float fuel2b,float pf2a,float pf2b,float idpwr1)
{
 Fa=fuel2a;
 Ca=pf2a;
 Fb=fuel2b;
 Cb=pf2b;
 Ps1=idpwr1;
}

system::system(float fuel1,float pf1,float fuel2a,float fuel2b,float pf2a,float pf2b)
{
 F1=fuel1;
 C1=pf1;
 Fa=fuel2a;
 Ca=pf2a;
 Fb=fuel2b;
 Cb=pf2b;
}

void system :: source1sim(float P)
{
 T=F1*C1/(P+Ps2);
 cout<<"\no xronos leitourgias tou sta8mou einai: "<<T;
 cout<<"\nisxys pou parexetai apo thn phgh 1: "<<P+Ps2;
 cout<<"\nisxys pou aporofatai apo thn phgh 2: "<<Ps2;
}

void system :: source2sim(float P)
{
 T=(Fa*Ca+Fb*Cb)/(P+Ps1);
 cout<<"\no xronos leitourgias tou sta8mou einai: "<<T;
 cout<<"\nisxys pou parexetai apo thn phgh 2 : "<<P+Ps1;
 cout<<"\nisxys pou aporofatai apo thn phgh 1: "<<Ps1;
}

void system :: bothsourcessim(float P)
{
 float P1,P2;
 T=(F1*C1+Fa*Ca+Fb*Cb)/P;
 cout<<"\no xronos leitourgias tou sta8mou einai: "<<T;
 P1=P*F1*C1/(F1*C1+Fa*Ca+Fb*Cb);
 P2=P*( Fa*Ca+Fb*Cb)/(F1*C1+Fa*Ca+Fb*Cb);
 cout<<"\nisxys pou parexetai apo thn phgh 1: "<<P1;
 cout<<"\nisxys pou parexetai apo thn phgh 2: "<<P2;
}

void main()
{
 float P,fuel1,pf1,idpwr1,fuel2a,fuel2b,pf2a,pf2b,idpwr2;
 cout<<"eisagete isxy sta8mou: ";
 cin>>P;
 cout<<"\neisagete kausima phghs 1: ";
 cin>>fuel1;
 cout<<"\nsyntelesths kausimwn  phghs 1: ";
 cin>>pf1;
 cout<<"\nisxys adraneias phghs 1: ";
 cin>>idpwr1;
 cout<<"\nkausima a typou,phgh 2: ";
 cin>>fuel2a;
 cout<<"\nsyntelesths kausimwn a typou,phghs 2: ";
 cin>>pf2a;
 cout<<"\nkausima b typou,phgh 2: ";
 cin>>fuel2b;
 cout<<"\nsyntelesths kausimwn b typou,phghs 2: ";
 cin>>pf2b;
 cout<<"\nisxys adraneias phghs 2: ";
 cin>>idpwr2;

 if(fuel1==0 && fuel2a==0 && fuel2b==0)
 {
  system A;
 }
 else if(fuel2a==0 && fuel2b==0)
 {
  system A(fuel1,pf1,idpwr2);
  A.source1sim(P);
 }
 else if(fuel1==0)
 {
  system A(fuel2a,fuel2b,pf2a,pf2b,idpwr1);
  A.source2sim(P);
 }
 else
 {
  system A(fuel1,pf1,fuel2a,fuel2b,pf2a,pf2b);
  A.bothsourcessim(P);
 }

}


Ο συντελεστής απόδοσης είναι τα λίτρα/ώρα(όπως λέει) ή η ενέργεια/λίτρο όπως θα έπρεπε για να είναι σωστοί οι τύποι. Τι γίνεται αν κατά την ταυτόχρονη λειτουργία των δύο πηγών τελειώσουν τα καύσιμα της μιας; Τότε θα είχε νόημα το λίτρα/ώρα. Τα σχόλια σας... :???:

Απο τη στιγμη που σου δίνει τους τύπους που πρέπει να χρησιμοποιήσεις μη σκοτίζεσαι παραπάνω...


Title: Re: [C++] 5η εργασία 2008
Post by: zeus90 on November 23, 2008, 16:57:21 pm
Δες λίγο εδώ:
Quote
class C : public A,public B{
    int c;
  public:
    C(int n,int m,int k);
    C(int n,int m,int k,float r);
    ~C(){cout <<"Elements of C class has been destroyd \n";;}
    void out_c(){cout <<"c = "<<c<<'\n';}
};

C::C(int n,int m,int k):A(m),B(k){c=n;}
C::C(int n,int m,int k,float r):A(m,r),B(k){c=n;}

Στα έντονα κομμάτια βρίσκεται αυτό που δεν έχεις γράψει και χτυπάει ο κομπάιλερ...
Έχω την ευγνωμοσύνη σου τώρα? :P


Στο δικό μου θεματάκι θα απαντήσει κανείς?Πρέπει να ετοιμαζόμαστε και για Τούμπα σιγά σιγά... :P


Title: Re: [C++] 5η εργασία 2008
Post by: Wanderer on November 23, 2008, 17:08:02 pm
Τους υπολογισμούς και την εκτύπωση των αντίστοιχων μηνυμάτων μπορούμε να την κάνουμε μέσα στην αντίστοιχη constructor ή θα πρέπει να δημιουργήσουμε ανεξάρτητες συναρτήσεις που θα κάνουν αυτήν τη δουλειά και θα τις καλέσουμε μετά την δημιουργία του κάθε αντικειμένου?Σας μπέρδεψα;

Αν όχι ξεμπερδέψτε με... :D
Το λέει στην εκφώνηση βρε :P

Quote
Στο λογισμικό να ορίζεται ακόμη η κλάση system η οποία προσομοιάζει τη λειτουργία του σταθμού. Η κλάση να είναι private παραγόμενη από τις κλάσεις source_1 και source_2. Στην κλάση να υπάρχουν οι κατάλληλες συναρτήσεις με τη βοήθεια των οποίων να υπολογίζεται και να εκτυπώνεται ο χρόνος λειτουργίας του σταθμού ανάλογα με τα καύσιμα που υπάρχουν στη διάθεση των πηγών που τον τροφοδοτούν καθώς και η ισχύ που θα προσφέρεται σε κάθε περίπτωση από κάθε πηγή.

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


Title: Re: [C++] 5η εργασία 2008
Post by: Wanderer on November 23, 2008, 17:10:50 pm
Και γενικά θαρρώ ότι απαγορεύεται δια ροπάλου να γίνονται "εξειδικευμένοι" υπολογισμοί ή εκτυπώσεις δεδομένων μέσα σε constructor.


Title: Re: [C++] 5η εργασία 2008
Post by: Anyparktos on November 23, 2008, 17:19:06 pm
Δες λίγο εδώ:
Quote
class C : public A,public B{
    int c;
  public:
    C(int n,int m,int k);
    C(int n,int m,int k,float r);
    ~C(){cout <<"Elements of C class has been destroyd \n";;}
    void out_c(){cout <<"c = "<<c<<'\n';}
};

C::C(int n,int m,int k):A(m),B(k){c=n;}
C::C(int n,int m,int k,float r):A(m,r),B(k){c=n;}

Στα έντονα κομμάτια βρίσκεται αυτό που δεν έχεις γράψει και χτυπάει ο κομπάιλερ...
Έχω την ευγνωμοσύνη σου τώρα? :P


Στο δικό μου θεματάκι θα απαντήσει κανείς?Πρέπει να ετοιμαζόμαστε και για Τούμπα σιγά σιγά... :P

Οπως είπα ναι και αιώνια!  ;) lol
Είναι όπως τα λέει ο wanderer.Γενικά οι constructor καλό είναι να αρχικοποιούν μόνο κάποιες τιμές και τίποτα παραπάνω.


Title: Re: [C++] 5η εργασία 2008
Post by: st0up on November 23, 2008, 22:36:59 pm
όταν λέει "Το σύστημα μπορεί να τροφοδοτείται από τη μια ή την άλλη πηγή ή και από τις δύο πηγές ταυτόχρονα.Αν μία πηγή βρίσκεται σε αδράνεια καταναλώνει ισχύ που προέρχεται από την άλλη για να διατηρείται σε κατάσταση εφεδρείας" εννοεί ότι το σύστημα καταναλώνει ισχύ από την άλλη πηγή ή η πηγή που βρίσκεται σε αδράνεια,ώστε να έχει την απαιτούμενη εφεδρεία?


Title: Re: [C++] 5η εργασία 2008
Post by: Salvation on November 23, 2008, 23:51:09 pm
Code:
#include <iostream>
using namespace std;

class source_1{
protected:
float Ps1, F1, C1;
public:
  source_1() {};
  source_1(float Power1);
  source_1(float Fuel1, float Co1);
};

source_1::source_1(float Power1){
Ps1=Power1;
}


source_1::source_1(float Fuel1,float Co1)
{
F1=Fuel1;
C1=Co1;
}

class source_2{
protected:
float Ps2, Fa, Ca, Fb, Cb;
public:
  source_2() {}
  source_2(float Power2);
  source_2(float Fuela, float Coa, float Fuelb, float Cob);
};


source_2::source_2(float Power2){
Ps2=Power2;
}


source_2::source_2(float Fuela,float Coa,float Fuelb,float Cob)
{
   Fa=Fuela;
   Ca=Coa;
   Fb=Fuelb;
   Cb=Cob;
}

class system: private source_1, private source_2{
 float Time;
public:
       system(void);   //no fuel
       system(float P1,float Fu1,float CO1); //1st source
       system(float P2, float Fu2, float COa, float Fub, float COb); //only 2nd source
       system(float P1, float Fu1, float CO1, float P2, float Fu2, float COa, float Fub, float COb); //both sources
       float set_Power(void);
};

float system::set_Power()
{
   float P;
cin>>P;
return P;
}

system::system():source_1(),source_2()
{
cout<<"No fuel on both sources\n";
}

system::system(float P1,float Fu1,float CO1):source_1(P1),source_1(Fu1,CO1)
{
   Time=F1*C1/(set_Power(void)+Ps2);
   cout<<Time;
}

system::system(float P2,float Fu2,float COa,float Fub,float COb):source_2(P2):source_2(Fu2,COa,Fub,COb)
{

   Time=(Fa*Ca+Fb*Cb)/(set_Power(void)+Ps1);
   cout<<Time;
}

system::system(float P1,float Fu1,float CO1,float P2,float Fu2,float COa,float Fub,float COb):source_1(P1),source_1(Fu1,CO1),source_2(P2),source_2(Fu2,COa,Fub,COb)
{
  float PoWeR1,PoWeR2
 
   Time=(F1*C1+Fa*Ca+Fb*Cb);
   PoWeR1=set_Power(void)*F1*C1/(F1*C1+Fa*Ca+Fb*Cb);
   PoWeR2=set_Power(void)*(Fa*Ca+Fb*Cb)/(F1*C1+Fa*Ca+Fb*Cb);
   cout<<Time;
   cout<<PoWeR1;
   cout<<PoWeR2;
}


int main(void)
{
   float P,F1,C1,Ps1,Fa,Ca,Fb,Cb,Ps2;
   
   cout<<"Power of the station?\n";
   set_Power();
   cout<<"What is F1\n";
   cin>>F1;
   cout<<"What is C1\n";
   cin>>C1;
   cout<<"What is Ps1\n";
   cin>>Ps1;
   cout<<"What is Fa?\n";
   cin>>Fa;
   cout<<"WHat is Ca?\n";
   cin>>Ca;
   cout<<"What is Fb\n";
   cin>>Fb;
   cout<<"What is Cb?\n";
   cin>>Cb;
   cout<<"What is Ps2?\n";
   cin>>Ps2;
   
   if(F1==0 && Fa==0 && Fb==0)
   system A;
   
   if(Fa==0 && Fb==0)
   system A(Ps1,F1,C1);
   
   if(F1==0 && Fa!=0 && Fb!=0)
   system A(Ps2,Fa,Ca,Fb,Cb);
   
   if(F1!=0 && Fa!=0 && Fb!=0)
   system A(Ps1,F1,C1,Ps2,Fa,Ca,Fb,Cb);
}
   
   


 

Μπορεί κάποιος να μου απαντήσει γιατί παίρνω αυτό το σφάλμα?: "multiple initializations given for base `source_1' "


Title: Re: [C++] 5η εργασία 2008
Post by: λήθη on November 24, 2008, 00:01:47 am
Δες στη σειρα 69

εχεις βαλει:

system::system(float P1,float Fu1,float CO1):source_1(P1),source_1(Fu1,CO1)

θα επρεπε να εχεις source_1 ( ορισματα ) , source_2 ( ορισματα )


Δε γινεται η πηγη 1 και να καταναλωνει ισχυ απο τη δυο, και να παρεχει ισχυ στο σταθμο ! :)


α

579


Title: Re: [C++] 5η εργασία 2008
Post by: Salvation on November 24, 2008, 00:28:34 am
ναι, αλλα ποια απο τις 2 συναρτήσεις αρχικών συνθηκών της source 1 θα βάλω;


Title: Re: [C++] 5η εργασία 2008
Post by: AgentCain on November 24, 2008, 00:32:14 am
ναι, αλλα ποια απο τις 2 συναρτήσεις αρχικών συνθηκών της source 1 θα βάλω;

Όλους τους πιθανούς συνδυασμούς, δλδ 4 στον αριθμό.


Title: Re: [C++] 5η εργασία 2008
Post by: Airmak_gr on November 24, 2008, 12:50:47 pm
εχω ενα προβλημα παιδες.....ενω μου τρεχει κανονικα και κανω δηλωση τιμων και ολα τα σχετικα(καυσιμα,ισχυς) μολις τα δωσω ολα με πεταει απο το προγραμμα σαν να μην πηγαινει καθολου να υπολογισει χρονο στις class......μπορει να με βοηθησει κανεις????thx :D


Title: Re: [C++] 5η εργασία 2008
Post by: Papatanasis on November 24, 2008, 14:55:03 pm
εχω ενα προβλημα παιδες.....ενω μου τρεχει κανονικα και κανω δηλωση τιμων και ολα τα σχετικα(καυσιμα,ισχυς) μολις τα δωσω ολα με πεταει απο το προγραμμα σαν να μην πηγαινει καθολου να υπολογισει χρονο στις class......μπορει να με βοηθησει κανεις????thx :D
system ("pause")


Title: Re: [C++] 5η εργασία 2008
Post by: asousos on November 24, 2008, 17:38:49 pm
Αυτός είναι ο κώδικας μου... Και πρέπει με τον έναν ή τον άλλο τρόπο να δουλεύει.. αλλά ο compiler(devC++) βγάζει το εξής λάθος:

       
        In function `int main()':
123  non-lvalue in assignment


έχει κανείς ιδέα?

Code:
#include <iostream>
using namespace std;
#include <conio.h> // for command "getch()"

class source_1
{
protected:
      float PS1, F1, C1;
public:
       source_1(float P1);
       source_1(float fuel_qua , float output1);     
      };
     
source_1::source_1(float P1)
{
     PS1=P1;
 }
 
source_1::source_1(float fuel_qua , float output1)
{
     F1=fuel_qua;
     C1=output1;
 }
 
class source_2{
protected:
      float PS2, Fa, Fb, Ca, Cb;
public:
       source_2(float P2);
       source_2(float fuel1_qua , float fuel2_qua , float output1 , float output2);
      };
     
source_2::source_2(float P2)
{
     PS2=P2;
 }
 
source_2::source_2(float fuel1_qua , float fuel2_qua , float output1 , float output2)
{
     Fa=fuel1_qua;
     Fb=fuel2_qua;
     Ca=output1;
     Cb=output2;
}
 
class system : private source_1,private source_2{
      float P, F, F1, output1, F2a, output2a, F2b, output2b;
public:
       void set_P(float Power);
       system(float P, float F1, float output1, float F2a, float output2a, float F2b, float output2b);
       system(float P, float P1, float F2a, float output2a, float F2b, float output2b);
       system(float P, float F1, float output1, float P2);
      };

void system::set_P(float Power)
{
               P=Power;
}             
system::system(float Power, float F1, float output1, float F2a, float output2a, float F2b, float output2b):source_1(F1, output1),source_2(F2a, F2b, output2a, output2b)
{
                     float T,P1,P2,C1,Fa,Ca;
                     void set_P(float Power);
                     T=(F1*C1 + Fa*Ca + Fb*Cb) / P;
                     cout<<"T="<<T;
                     P1=(P*F1*C1) / (F1*C1 + Fa*Ca + Fb*Cb);
                     P2=P*(Fa*Ca+Fb*Cb) / (F1*C1+Fa*Ca+Fb*Cb);
                     cout<<"P1="<<P1;
                     cout<<"P2="<<P2;
}

system::system(float Power, float P1, float F2a, float output2a, float F2b, float output2b):source_1(P1),source_2(F2a, F2b, output2a, output2b)
{
                     float T,P2;
                     void set_P(float Power);
                     T=(Fa*Ca + Fb*Cb)/(P+PS1);
                     P2=P+PS1;
                     cout<<"T="<<T;
                     cout<<"P2="<<P2;
}

system::system(float Power, float F1, float output1, float P2):source_1(F1, output1),source_2(P2)
{
                     float T,P1;
                     void set_P(float Power);
                     T=(F1*C1 + Fa*Ca + Fb*Cb) / P;
                     P1=P+PS2;
                     cout<<"T="<<T;
                     cout<<"P1="<<P1;
}


int main()
{
     float Power, F1, F2a, F2b, output1, output2a, output2b, P1, P2;
     cout<<"S O U R C E   1\n";
     cout<<"\nType the quantity of fuel that is in source 1 ";
     cin>>F1;
     cout<<"\nType the output1 ";
     cin>>output1;
     cout<<"\nType the isxys adraneias of source 1 ";
     cin>>P1;
     cout<<"\n\nS O U R C E   2\n";
     cout<<"\nType the quantity of fuel(typou a) that is in source 2 ";
     cin>>F2a;
     cout<<"\nType the output2a ";
     cin>>output2a;     
     cout<<"\nType the quantity of fuel(typou b) that is in source 2 ";
     cin>>F2b;
     cout<<"\nType the output2b ";
     cin>>output2b;
     cout<<"\nType the isxys adraneias of source 2 ";
     cin>>P2;
     cout<<"\n\nS Y S T E M\n";
     cout<<"How much power does the system require in order to work?";
     cin>>Power;
     
     if (F1!=0&&F2a!=0&&F2b!=0)
        class system s(float Power, float F1, float output1, float F2a, float output2a, float F2b, float output2b);
     else if (F1!=0 && F2a=0 && F2b=0)
         class system s(float Power, float P1, float F2a, float output2a, float F2b, float output2b);
     else if (F1=0 && F2a!=0 && F2b!=0)
         class system s(float Power, float F1, float output1, float P2);
     else
         cout<<"No fuel... No power!";
           
     getch();

}



Title: deleted
Post by: BOBoMASTORAS on November 24, 2008, 17:41:26 pm
deleted


Title: Re: [C++] 5η εργασία 2008
Post by: asousos on November 24, 2008, 17:55:22 pm
 :)

Το λάθος γινόταν ακριβώς σε εκείνη την γραμμή ( line 123 ) που μου είπες, αλλά δεν καταλάβαινα τι ήθελε να μου πει... ( εεε, έτσι όπως το έλεγε ) ... thnx, κλασική μαλακία... τώρα δεν βγάζει πρόβλημα στον compiler....

απλά, αφού του δώσεις τα data, δεν εκτυπώνει τίποτα.   :???:  

:)


Title: Re: [C++] 5η εργασία 2008
Post by: billakos on November 24, 2008, 18:17:47 pm
Είδα λίγο τον κώδικα και έβγαλα από τη δημιουργία των αντικειμένων στα ορίσματα τα float...Τότε εκτυπώνει αλλά λογικα δεν βγάζει σώστο αποτέλεσμα γιατί μου έβγαλε πολύ μεγάλα νούμερα.Τουλάχιστον εκτυπώνει.... ;)


Title: Re: [C++] 5η εργασία 2008
Post by: alexis2044 on November 24, 2008, 18:23:43 pm
H Εργασία αυτήν την φορά ήταν λίγο πιο απλή ή είναι ιδέα μου; (http://thelab.gr/images/smilies/dance3.gif)


Title: Re: [C++] 5η εργασία 2008
Post by: billakos on November 24, 2008, 18:36:59 pm
Κοίτα ίσως ήταν έτσι επειδή δεν μας έβαλε να κάνουμε κάτι καινούργιο....Δηλαδή με κληρονομικότητα είχαμε δουλέψει γενικά αλλά αυτή σε μπέρδευε στις αρχικών συνθικών...Εκεί ήταν όλη η άσκηση κατά τη γνώμη μου....


Title: Re: [C++] 5η εργασία 2008
Post by: asousos on November 24, 2008, 19:00:52 pm
Πωωω. δεν μπορω να το ψάχνω άλλο.. τι να κάνουμε.. Λάθος αποτελέσματα, λάθος αποτελέσματα... Ας ειναι..


Title: Re: [C++] 5η εργασία 2008
Post by: Airmak_gr on November 24, 2008, 21:51:33 pm
thx παιδια....το system("pause")  μου εδωσε αποτελεσμα...........!!!επιτελους