THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: jiannist on December 10, 2011, 17:16:49 pm



Title: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: jiannist on December 10, 2011, 17:16:49 pm
Σε ένα χυτήριο υπάρχει μια σειρά από παραγγελίες που πρέπει να εκτελεστούν. Η παραγγελίες εκτελούνται σύμφωνα με μια σειρά προτεραιότητας που έχει καθοριστεί από πριν. Τα τεμάχια των παραγγελιών διαφέρουν ως προς το σχήμα ή και τις διαστάσεις τους ενώ δεν ενδιαφέρει είδος του μετάλλου που θα χρησιμοποιηθεί. Στο χυτήριο υπάρχουν διάφορες ποσότητες μετάλλων που χρησιμοποιούνται για την χύτευση των τεμαχίων. Η σειρά με την οποία χρησιμοποιείται το κάθε μέταλλο είναι και αυτή προκαθορισμένη. Η διαδικασία που ακολουθείται για την εκτέλεση των παραγγελιών απαιτεί να κατασκευαστούν πρώτα όλα τα τεμάχια της παραγγελιάς που έχει προτεραιότητα χρησιμοποιώντας, με τη σειρά που έχει προκαθοριστεί, τα  αποθέματα των μετάλλων που υπάρχουν στο χυτήριο. Η διαδικασία συνεχίζεται με την επόμενη παραγγελία μέχρι να εκτελεστούν όλες οι παραγγελίες ή να τελειώσουν τα αποθέματα μετάλλων που υπάρχουν στο χυτήριο.

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

Στο λογισμικό να ορίζεται ακόμη η συνάρτηση production(…) η οποία να εκτυπώνει τη διαδικασία με την οποία θα εκτελεστούν οι παραγγελίες. Η συνάρτηση να υπολογίζει και να εκτυπώνει τον αριθμό και τον τύπο των τεμαχίων που θα κατασκευαστούν από το κάθε μέταλλο μέχρι να τελειώσουν όλες οι παραγγελίες ή να εξαντληθούν τα αποθέματα μετάλλων που διαθέτει το χυτήριο. Η συνάρτηση να είναι ανεξάρτητη από τον αριθμό και τον τύπο των τεμαχίων που πρόκειται να κατασκευαστούν.

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

Η συνάρτηση main του προγράμματος να ορίζει έναν πίνακα από 5 αντικείμενα τύπου material τα οποία να υλοποιούν τα μέταλλα που διαθέτει το χυτήριο. Στη συνέχεια, αφού οριστούν, ένας πίνακας με 5 αντικείμενα τύπου product1 και ένας πίνακας με 4 αντικείμενα τύπου product2, να καλείται η συνάρτηση production(), για τα 9 αυτά αντικείμενα, για να εκτυπώσει τη διαδικασία με την οποία θα εκτελεστούν οι παραγγελίες.

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

Η συνάρτηση production() να καλείται μια μόνο φορά.

Για την κατασκευή των τεμαχίων δεν επιτρέπεται η ανάμιξη των μετάλλων.


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Δον on December 13, 2011, 14:28:28 pm
Ρε παιδιά!

Η σειρά η προκαθορισμένη πως προκαθορίζεται?

Και γιατί μας λέει να διαβάσουμε ειδικό βάρος?

Μάλλον λείπει κομμάτι από την εργασία :S


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: kmaniac on December 13, 2011, 15:00:26 pm
Ρε παιδιά!

Η σειρά η προκαθορισμένη πως προκαθορίζεται?

Και γιατί μας λέει να διαβάσουμε ειδικό βάρος?

Μάλλον λείπει κομμάτι από την εργασία :S

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

Η συνάρτηση να είναι ανεξάρτητη από τον αριθμό και τον τύπο των τεμαχίων που πρόκειται να κατασκευαστούν.Αυτό όμως δεν ξέρω τι είναι. :P


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: princess_of_the_dawn on December 13, 2011, 19:13:35 pm
παιδια η production πρεπει να ειναι friend ή όχι;


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: mark333 on December 13, 2011, 19:48:13 pm
παιδια η production πρεπει να ειναι friend ή όχι;

Νομίζω πως και οι 3 κλάσεις πρέπει να έχουν friend την production....


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: christineL on December 13, 2011, 20:15:00 pm
Εφοσον δεν ξεκαθαριζει εγω προσωπικα το εκανα οπως νομιζα, δηλαδη σειρα προτεραιοτητας παραγγελιων αναλόγα με το ποια σειρα θα μου τις δωσουν. Ο πελατης που μου την εδωσε πρωτος εχει φυσικα προτεραιοτητα και ειναι λογικο!! Παμε μετα στα μεταλλα : ειπα στον χρηστη να λεει το ειδικο βαρος αντιστοιχα του καθενα και οτι αλλο εχει μεσα η κλαση-δεν θυμαμαι- αναλογα με τη σειρα προτεραιτοτητας που θελει ν δωσει στα μεταλλα. Μετα κανω μια ταξινομηση καθε παραγγελιας με βαση τα μεταλλα και αυτο !!


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: pepper ann on December 14, 2011, 10:19:55 am


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


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Infinite Loop on December 16, 2011, 16:27:27 pm


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


Μηπως αντιθετα ο ποιητης εννοει οτι η συναρτηση θα πρεπει να δινει σωστα αποτελεσματα για οποιοδηποτε αριθμο και τυπο τεμαχιων, και οχι μονο για τα συγκεκριμενα της ασκησης (5, 4, και product1, product2), οποτε αντι οι οποιοι υπολογισμοι που γινονται στο σωμα της συναρτησης να γινονται θεωρωντας δεδομενο π.χ. οτι θα εχεις 5 αντικειμενα product1, να γινονται για οποιοδηποτε πληθος product1, και γιαυτο να χρειαζεται να τα περασεις σαν ορισμα; Το λεω αυτο χωρις να ειμαι και εγω σιγουρος για το τι εννοει (μεταξυ μας, εγω τα θεωρησα δεδομενα και δεν τα εδωσα σαν ορισμα). Ειναι ιδεα μου ομως ή γενικα οι εκφωνησεις ειναι τραγικα δυσνοητες;

Οσο για την προτεραιοτητα, εκτος απο την προτεραιοτητα των 5/4 αντικειμενων της product1/product2 αντιστοιχα, υπαρχει και το επιπλεον θεμα της προτεραιοτητας των ιδιων των product1 και product2. Δηλαδη, αν a1, a2, ..., a5 οι κυλινδροι και b1, b2, ..., b4 οι κυβοι, η προτεραιοτητα θα μπορουσε να ειναι a1, a2, ..., a5, b1, b2, ..., b4, αλλα και b1, b2, ..., b4, a1, a2, ..., a5, και φυσικα (δεν λεει κατι αντιθετο πουθενα) a1, b1, a2, a3, b2, b3, a4, a5, b4 για παραδειγμα. Τραβηγμενο μεν, αλλα θεωρητικα θα επρεπε να το λαβουμε υποψιν, εφοσον δεν το ξεκαθαριζει πουθενα. Δεν βλεπω βεβαια τον λογο να χαραμισω τον χρονο μου υλοποιωντας το...

Α, και σημειωνουμε οτι το ειδικο βαρος οριζεται καπως διαφορετικα απο την πυκνοτητα. Και προφανως εδω πυκνοτητα ζηταει.


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Grecs on December 16, 2011, 18:28:54 pm
Ρε παιδιά!

Η σειρά η προκαθορισμένη πως προκαθορίζεται?

Και γιατί μας λέει να διαβάσουμε ειδικό βάρος?

Μάλλον λείπει κομμάτι από την εργασία :S

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

Η συνάρτηση να είναι ανεξάρτητη από τον αριθμό και τον τύπο των τεμαχίων που πρόκειται να κατασκευαστούν.Αυτό όμως δεν ξέρω τι είναι. :P

Eχει χρονια που το περασα αλλα νομιζω οτι οταν λεει αυτο εννοει να το κανετε ειτε με χρηση virtual ειτε με templates, που μαλλον εχετε κανει κατι απτα δυο.


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Niobe on December 16, 2011, 18:29:19 pm
Η συνάρτηση να υπολογίζει και να εκτυπώνει τον αριθμό και τον τύπο των τεμαχίων που θα κατασκευαστούν από το κάθε μέταλλο μέχρι να τελειώσουν όλες οι παραγγελίες ή να εξαντληθούν τα αποθέματα μετάλλων που διαθέτει το χυτήριο.

βασικα αυτο παιζει να εννοει και ατερμων ανακυκλωση μεχρι να γινουν τα παραπανω?
να ρωταμε ξερωγω τι ειναι επομενο και ποια ειναι τα αποθματα μεταλλων ??   :P :P


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: pepper ann on December 16, 2011, 18:30:40 pm
Ρε παιδιά!

Η σειρά η προκαθορισμένη πως προκαθορίζεται?

Και γιατί μας λέει να διαβάσουμε ειδικό βάρος?

Μάλλον λείπει κομμάτι από την εργασία :S

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

Η συνάρτηση να είναι ανεξάρτητη από τον αριθμό και τον τύπο των τεμαχίων που πρόκειται να κατασκευαστούν.Αυτό όμως δεν ξέρω τι είναι. :P

 εννοει να το κανετε με χρηση virtual
ισχύει
το είπε στις ασκήσεις


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Infinite Loop on December 16, 2011, 20:27:55 pm
Ρε παιδιά!

Η σειρά η προκαθορισμένη πως προκαθορίζεται?

Και γιατί μας λέει να διαβάσουμε ειδικό βάρος?

Μάλλον λείπει κομμάτι από την εργασία :S

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

Η συνάρτηση να είναι ανεξάρτητη από τον αριθμό και τον τύπο των τεμαχίων που πρόκειται να κατασκευαστούν.Αυτό όμως δεν ξέρω τι είναι. :P

 εννοει να το κανετε με χρηση virtual
ισχύει
το είπε στις ασκήσεις

meh... Αντε να ξαναγραψω την μιση ασκηση τωρα :P

Ειναι ιδεα μου ομως ή γενικα οι εκφωνησεις ειναι τραγικα δυσνοητες;
^ex_shocked^
τι λεει αυτος ρε;
μαζευτε τον...

Το ηξερα πως δεν ημουν ο μονος :D


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Silvo the Beautiful on December 16, 2011, 21:47:10 pm
Ρε παιδιά!

Η σειρά η προκαθορισμένη πως προκαθορίζεται?

Και γιατί μας λέει να διαβάσουμε ειδικό βάρος?

Μάλλον λείπει κομμάτι από την εργασία :S


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

Η συνάρτηση να είναι ανεξάρτητη από τον αριθμό και τον τύπο των τεμαχίων που πρόκειται να κατασκευαστούν.Αυτό όμως δεν ξέρω τι είναι. :P

 εννοει να το κανετε με χρηση virtual
ισχύει
το είπε στις ασκήσεις

δεν εχεις κληρονομικοτητα ομως


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: mamalos on December 16, 2011, 22:32:14 pm

δεν εχεις κληρονομικοτητα ομως

Έχεις.


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Silvo the Beautiful on December 16, 2011, 23:26:39 pm
που? δεν καταλαβαινω


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: nikitas350 on December 16, 2011, 23:32:31 pm
που? δεν καταλαβαινω

Δεν έχει νόημα μια virtual function χωρίς κληρονομικότητα.


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: ValmadiaN on December 17, 2011, 00:55:16 am
Μπορείς να δημιουργήσεις μια abstract κλάση product με virtual συναρτήσεις.
Οι κλάσεις product1,product2 θα είναι public παραγόμενες της product και η
κάθε μία θα  υλοποιεί διαφορετικά τις virtual συναρτήσεις
π.χ. για τον υπολογισμό
του όγκου ενός τεμαχίου έχεις την
virtual float volume()=0;
στην κλάση product και κάθε κλάση από τις product1,product2 υλοποιεί διαφορετικά
τη συνάρτηση ανάλογα με το σχήμα του αντικειμένου της.

Η συνάρτηση production θα λειτουργεί με pointers στην βασική κλάση product
πράγμα που θα την κάνει ανεξάρτητη του τύπου των τεμαχίων που θέλει να δημιουργήσει.

στο ethmmy->υλικό μαθήματος->παραδείγματα
υπάρχει το epanalipsi_anexartisia_main.cpp .
Είναι ένα ενδεικτικό παράδειγμα για τον τρόπο αυτό.

Ελπίζω να βοήθησα και να μην μπέρδεψα περισσότερο τα πράγματα!


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Infinite Loop on December 17, 2011, 01:06:37 am
Μπορείς να δημιουργήσεις μια abstract κλάση product με virtual συναρτήσεις.
Οι κλάσεις product1,product2 θα είναι public παραγόμενες της product και η
κάθε μία θα  υλοποιεί διαφορετικά τις virtual συναρτήσεις
π.χ. για τον υπολογισμό
του όγκου ενός τεμαχίου έχεις την
virtual float volume()=0;
στην κλάση product και κάθε κλάση από τις product1,product2 υλοποιεί διαφορετικά
τη συνάρτηση ανάλογα με το σχήμα του αντικειμένου της.

Η συνάρτηση production θα λειτουργεί με pointers στην βασική κλάση product
πράγμα που θα την κάνει ανεξάρτητη του τύπου των τεμαχίων που θέλει να δημιουργήσει.

στο ethmmy->υλικό μαθήματος->παραδείγματα
υπάρχει το epanalipsi_anexartisia_main.cpp .
Είναι ένα ενδεικτικό παράδειγμα για τον τρόπο αυτό.

Ελπίζω να βοήθησα και να μην μπέρδεψα περισσότερο τα πράγματα!

Yep, κι εγω τελικα ακριβως ετσι το υλοποιησα. Ειχα ηδη δηλωσει (οπως λες) μια product σαν base class, απλα δεν ειχα ορισει τις συναρτησεις virtual (και τωρα που το σκεφτομαι, βγαινει πιο ευκολα ετσι). Βεβαια δεν ειχα ιδεα οτι στην θεωρια ειχε μπει στις virtual functions γιατι εχω να πατησω εκει απο το πρωτο μαθημα... :P


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Silvo the Beautiful on December 17, 2011, 14:06:12 pm
Μπορείς να δημιουργήσεις μια abstract κλάση product με virtual συναρτήσεις.
Οι κλάσεις product1,product2 θα είναι public παραγόμενες της product και η
κάθε μία θα  υλοποιεί διαφορετικά τις virtual συναρτήσεις
π.χ. για τον υπολογισμό
του όγκου ενός τεμαχίου έχεις την
virtual float volume()=0;
στην κλάση product και κάθε κλάση από τις product1,product2 υλοποιεί διαφορετικά
τη συνάρτηση ανάλογα με το σχήμα του αντικειμένου της.

Η συνάρτηση production θα λειτουργεί με pointers στην βασική κλάση product
πράγμα που θα την κάνει ανεξάρτητη του τύπου των τεμαχίων που θέλει να δημιουργήσει.

στο ethmmy->υλικό μαθήματος->παραδείγματα
υπάρχει το epanalipsi_anexartisia_main.cpp .
Είναι ένα ενδεικτικό παράδειγμα για τον τρόπο αυτό.

Ελπίζω να βοήθησα και να μην μπέρδεψα περισσότερο τα πράγματα!

οχι με βοηθησες παρα πολυ. Και ουσιαστικα η production ειναι ανεξαρτητη του τυπου του τεμαχιου αλλα οχι απο το υλικο που θα φτιαχτουν


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: ValmadiaN on December 17, 2011, 15:01:01 pm
οχι με βοηθησες παρα πολυ. Και ουσιαστικα η production ειναι ανεξαρτητη του τυπου του τεμαχιου αλλα οχι απο το υλικο που θα φτιαχτουν

Ναι, έτσι κι αλλιώς εμάς η ανεξαρτησία της production από τον τύπο του τεμαχίου μας
ενδιαφέρει(σύμφωνα με την εκφώνηση).Για τα υλικά μπορεί να δέχεται έναν πίνακα με αντικείμενα της κλάσης material
και να κάνει τη δουλειά της.


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Silvo the Beautiful on December 17, 2011, 16:02:57 pm
οχι με βοηθησες παρα πολυ. Και ουσιαστικα η production ειναι ανεξαρτητη του τυπου του τεμαχιου αλλα οχι απο το υλικο που θα φτιαχτουν

Ναι, έτσι κι αλλιώς εμάς η ανεξαρτησία της production από τον τύπο του τεμαχίου μας
ενδιαφέρει(σύμφωνα με την εκφώνηση).Για τα υλικά μπορεί να δέχεται έναν πίνακα με αντικείμενα της κλάσης material
και να κάνει τη δουλειά της.

Σαγαπω πολυ  :-*


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: princess_of_the_dawn on December 17, 2011, 19:27:48 pm
δεν καταλαβαίνω γιατί θέλουμε ειδικά βάρη όγκους μάζες κλπ
Πού μας χρησιμεύουν;


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Laza G on December 17, 2011, 20:41:31 pm
δωστε κανα hint τι κανει η production μεσα και τι ορισματα βαζουμε..
thanks in advance


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Mous on December 17, 2011, 21:41:26 pm
Η συνάρτηση production() να καλείται μια μόνο φορά.????? τ εννοει ο ποιητης? αφου εχουμε για 9 αντικειμενα


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: PanosGo on December 17, 2011, 23:01:11 pm
εμένα με μπερδεύει πως θα ξέρουμε τι μέταλλα θα χρησιμοποιούμε για κάθε τεμάχιο... θα τα παίρνουμε από τον χρήστη μέσα στην production;;;


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Davvol on December 18, 2011, 01:50:41 am
εμένα με μπερδεύει πως θα ξέρουμε τι μέταλλα θα χρησιμοποιούμε για κάθε τεμάχιο... θα τα παίρνουμε από τον χρήστη μέσα στην production;;;

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


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: ValmadiaN on December 18, 2011, 04:03:58 am
@princess
 Η μάζα του μετάλλου είναι η ποσότητα που υπάρχει και είναι διαθέσιμη για χρήση.
π.χ. 5kg.
Το ειδικό βάρος έχει μονάδες μέτρησης kg/(m^3).
Οπότε αν έχεις ένα τεμάχιο με όγκο 4(m^3) και το μέταλλο που θα χρησιμοποιήσεις
έχει ειδικό βάρος 5kg/(m^3) θα χρειαστείς
5*4 [(m^3)*kg/(m^3)]=20 kg
μετάλλου για να υλοποιήσεις το τεμάχιο.Γι αυτό τα χρειάζεσαι όλα αυτά.Για να ξέρεις
δηλαδή τι ποσότητα μετάλλου σου χρειάζεται για το κάθε τεμάχιο.

@Laza G
Η συνάρτηση production() χρειάζεται τουλάχτον έναν πίνακα με τα μέταλλα(αντικείμενα στην κλάση material) , έναν πίνακα απο pointers σε αντικείμενα της βασικής κλάσης (product) ο οποίος θα έχει
μέσα του pointers στα αντικείμενα των κλάσεων product1,product2 τα οποία θα είναι ουσιαστικά οι
παραγγελίες, καθώς και 2 ακεραίους που να δείχνουν από πόσα στοιχεία αποτελείται ο κάθε πίνακας.
Αυτά θεωρώ ότι χρειάζεται σαν βασικά.Τώρα για τη δική σου υλοποίηση είσαι ελεύθερος να βάλεις σαν
ορίσματα ότι θεωρείς απαραίτητο!Στην εκφώνηση δεν καθορίζεται ούτε ο αριθμός ,ούτε το είδος των
ορισμάτων της production() , οπότε δεν υπάρχουν περιορισμοί!

@Mous
Ο ποιητής εννοεί ότι τα 9 αυτά αντικείμενα θα πρέπει να δωθούν όλα μαζί τη 1 φορά που θα
τρέξει η production() .Μπορείς να δημιουργήσεις έναν pointer σε κάθε ένα αντικείμενο και τους 9
αυτούς pointers να τους βάλεις σε έναν πίνακα από pointers ο οποίος θα δίνεται και σαν όρισμα στην
συνάρτηση production().Ο πίνακας αυτός θα είναι δηλωμένος στην βασίκη κλάση (product) ώστε να είναι
δυνατή η χρήση των virtual συναρτήσεων.Δηλάδη να είναι κάπως έτσι
product **p;


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: PanosGo on December 18, 2011, 12:09:52 pm
εμένα με μπερδεύει πως θα ξέρουμε τι μέταλλα θα χρησιμοποιούμε για κάθε τεμάχιο... θα τα παίρνουμε από τον χρήστη μέσα στην production;;;

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

ναι αλλά αν δεν μας ενδιαφέρει με τι υλικά φτιάχνεται το κάθε αντικείμενο, η κλάση material καθίσταται αυτόματα άχρηστη... :)


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Silvo the Beautiful on December 18, 2011, 13:26:00 pm
Ρε παιδια ομως.... Αν ειναι virutal θα πρεπει να καλεστει 2 φορες για τα 5 αντικειμενα της product 1 και για τα 4 της product 2.

Ειμαι λαθος?


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: pepper ann on December 18, 2011, 13:47:46 pm
Ρε παιδια ομως.... Αν ειναι virutal θα πρεπει να καλεστει 2 φορες για τα 5 αντικειμενα της product 1 και για τα 4 της product 2.

Ειμαι λαθος?
γιατί να είναι η production virtual?


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Mous on December 18, 2011, 13:55:44 pm
valmadian thx:)


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Silvo the Beautiful on December 18, 2011, 13:56:27 pm
τα μπεδεψα λιγο και αυτο ειδα οτι δεν βγαινει ετσι.... Τελικα ομως η production χρειαζεται να ειναι friend ή να δεχεται οτι χρειαζεται με συναρτησεις?


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: alexis2044 on December 18, 2011, 14:08:30 pm
Μπορείς να δημιουργήσεις έναν pointer σε κάθε ένα αντικείμενο και τους 9
αυτούς pointers να τους βάλεις σε έναν πίνακα από pointers ο οποίος θα δίνεται και σαν όρισμα στην
συνάρτηση production().


Πώς θα ξέρει ο Compiler ποια εκδοχή της production θα καλέσει εφόσον δε του λες p->production(...), όπου p pointer σε αντικείμενο τύπου product, που δείχνει σε διεύθυνση αντικειμένου product1 ή product2 ;
 


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: ValmadiaN on December 18, 2011, 14:35:55 pm

Πώς θα ξέρει ο Compiler ποια εκδοχή της production θα καλέσει εφόσον δε του λες p->production(...), όπου p pointer σε αντικείμενο τύπου product, που δείχνει σε διεύθυνση αντικειμένου product1 ή product2 ;
 
Η συνάρτηση production() δεν θα είναι virtual.Δεν ανήκει σε κάποια κλάση.
Θα είναι μια απλή συνάρτηση.
Τον πίνακα με τους pointers στις product1,product2 θα τον δέχετε σαν όρισμα η production()
όταν την καλείς.Θα την καλείς μέσα στην main() κατά τα γνωστά
production(p,i,h,....);

Α και η συνάρτηση production() δεν χρειάζεται να είναι friend με κάποια κλάση.
Έτσι κι αλλιώς με pointers δουλευεί και χρησιμοποιεί τις virtual συναρτήσεις.
Δεν χρειάζεται να βλέπει τα private στοιχεία κανενός.


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: alexis2044 on December 18, 2011, 14:54:09 pm
Εντελώς διαφορετική η προσσεγγιση που έκανα εγώ  :P

Στην υλοποίηση μου, έκανα την production virtual, και έφτιαξα 2 εκδοχές σε κάθε παραγόμενη product 1 και product2 για τον υπολογισμό των τεμαχίων που θα παραχθούν από τα υλικά που έχουμε διαθέσιμα ( η production μου δέχεται σαν μόνο όρισμα πίνακα υλικών material).

Μετά στη main κάνω πίνακα δεικτών **p σε αντικείμενα τύπου product και εκχωρώ τις διευθύνσεις 5x product1 και 4x product2. Mε μια επανάληψη δίνω

for(int j=0;j<9;j++){
    p[j]->production(a);
};
όπου a είναι πίνακας material.

Ουσιαστικά ένα αντίτυπο της production δημιουργεί ο compiler και αλλάζουνε τα ορίσματα οπότε θεωρώ, ότι καλύπτω το "H production καλείται μια φορά"....



Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Ναταλία on December 18, 2011, 15:09:29 pm
Ρε παιδια ομως.... Αν ειναι virutal θα πρεπει να καλεστει 2 φορες για τα 5 αντικειμενα της product 1 και για τα 4 της product 2.

Ειμαι λαθος?
γιατί να είναι η production virtual?

οντως.. η production λεει οτι ειναι μια συναρτηση απλα. δεν ειναι σε καποια κλαση μεσα :/


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Davvol on December 18, 2011, 15:11:08 pm
Είναι εύκολο για κάποιον, ο οποίος έχει τελειώσει με την εργασίά, να ανεβάσει κάποιο σετ δεδομένων με το αποτέλεσμα που βγάζει?



Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: alexis2044 on December 18, 2011, 15:14:31 pm
Quote
Η συνάρτηση production() χρειάζεται τουλάχτον έναν πίνακα με τα μέταλλα(αντικείμενα στην κλάση material) , έναν πίνακα απο pointers σε αντικείμενα της βασικής κλάσης (product) ο οποίος θα έχει
μέσα του pointers στα αντικείμενα των κλάσεων product1,product2 τα οποία θα είναι ουσιαστικά οι
παραγγελίες, καθώς και 2 ακεραίους που να δείχνουν από πόσα στοιχεία αποτελείται ο κάθε πίνακας.
Αυτά θεωρώ ότι χρειάζεται σαν βασικά.Τώρα για τη δική σου υλοποίηση είσαι ελεύθερος να βάλεις σαν
ορίσματα ότι θεωρείς απαραίτητο!Στην εκφώνηση δεν καθορίζεται ούτε ο αριθμός ,ούτε το είδος των
ορισμάτων της production() , οπότε δεν υπάρχουν περιορισμοί!

Κάτι άλλο..

Υπάρχει ο περιορισμός ότι

"Η συνάρτηση [production] να είναι ανεξάρτητη από τον αριθμό και τον τύπο των τεμαχίων που πρόκειται να κατασκευαστούν."

Βάζοντας σαν ορίσματα το νούμερο των στοιχείων του κάθε πίνακα , δεν την κάνεις εξαρτημένη απτόν αριθμό των τεμαχίων που θα κατασκευαστούν;


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: ValmadiaN on December 18, 2011, 15:28:14 pm
Κάτι άλλο..

Υπάρχει ο περιορισμός ότι

"Η συνάρτηση [production] να είναι ανεξάρτητη από τον αριθμό και τον τύπο των τεμαχίων που πρόκειται να κατασκευαστούν."

Βάζοντας σαν ορίσματα το νούμερο των στοιχείων του κάθε πίνακα , δεν την κάνεις εξαρτημένη απτόν αριθμό των τεμαχίων που θα κατασκευαστούν;
Όχι δεν την κάνεις εξαρτημένη γιατί στην πρώτη εκτέλεση ο αριθμός των τεμαχίων μπορεί να είναι 9 ενώ
στην δεύτερη εκτέλεση μπορεί να είναι 10.223.
Και στις 2 περιπτώσεις η συνάρτηση θα τρέξει μια χαρά.
Αν δεν δώσεις για όρισμα το μέγεθος των πινάκων σου τότε πως θα ξέρεις από πόσα στοιχεία
αποτελείται ο καθένας;


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: alexis2044 on December 18, 2011, 15:30:19 pm
Μια λύση θα μπορούσε να είναι το sizeof(πίνακας pointer)?

Edit Τώρα που το ξανασκέφτομαι όχι, γιατί δε θα ξέρεις τι είναι τι, από πόσα δλδ.

Μάλλον έχεις δίκιο.


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: ValmadiaN on December 18, 2011, 15:35:35 pm
Μια λύση θα μπορούσε να είναι το sizeof(πίνακας pointer)?

Αν γράψεις :
product **p;
cout << sizeof(p);

θα σου εμφανίσει το μέγεθος ενός pointer σε pointer που στο δικό μου pc για παράδειγμα είναι 4bytes.


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Ναταλία on December 18, 2011, 16:07:08 pm
Η συνάρτηση production() χρειάζεται τουλάχτον έναν πίνακα με τα μέταλλα(αντικείμενα στην κλάση material) , έναν πίνακα απο pointers σε αντικείμενα της βασικής κλάσης (product) ο οποίος θα έχει
μέσα του pointers στα αντικείμενα των κλάσεων product1,product2 τα οποία θα είναι ουσιαστικά οι
παραγγελίες, καθώς και 2 ακεραίους που να δείχνουν από πόσα στοιχεία αποτελείται ο κάθε πίνακας.
 

εννοεις το 4,5,9?  :???:


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: princess_of_the_dawn on December 18, 2011, 16:08:11 pm
Valmadian a real,great thank(s) from princess ^rotate^

edit:γιατί σβήστηκε το τραγούδι μου;

απαντηση στο edit :γιατι επιανε χωρο οπτικα στη σελιδα και κουραζει,ειδικα  σε ωρες αιχμης


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: ValmadiaN on December 18, 2011, 16:17:37 pm
εννοεις το 4,5,9?  :???:

Εννοώ :

Βάζεις σαν όρισματα στην συνάρτηση production()
έναν πίνακα από pointers σε αντικείμενα product1 και product2.
Θέλεις το μέγεθος του.
Για τη συγκεκριμένη άσκηση το 9 (5 product1 , 4 product2).

Βάζεις και έναν πίνακα με τα μέταλλα (αντικείμενα στην κλάση material).
Θέλεις το μέγεθος του.
Στην συγκεκριμένη άσκηση σου λέει ότι το χυτήριο διαθέτει 5 μέταλλα.
Άρα θα πρέπει να του δώσεις και το 5.

Το γεγονός ότι δεν χρειάζεται να πεις στην production()
"ξέρεις,έχω 5 αντικείμενα τύπου product1 και 4 αντικείμενα τύπου product2"
αλλά της λες
"ξέρεις , έχω 9 αντικείμενα σε σύνολο.Πάρε έναν πίνακα με pointers στα 9 αυτά αντικείμενα και κάνε
τη δουλειά σου"

την κάνει (την production()) ανεξάρτητη από τον τύπο των τεμαχίων.


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Ναταλία on December 18, 2011, 16:23:17 pm
εννοεις το 4,5,9?  :???:

Εννοώ :

Βάζεις σαν όρισματα στην συνάρτηση production()
έναν πίνακα από pointers σε αντικείμενα product1 και product2.
Θέλεις το μέγεθος του.
Για τη συγκεκριμένη άσκηση το 9 (5 product1 , 4 product2).

Βάζεις και έναν πίνακα με τα μέταλλα (αντικείμενα στην κλάση material).
Θέλεις το μέγεθος του.
Στην συγκεκριμένη άσκηση σου λέει ότι το χυτήριο διαθέτει 5 μέταλλα.
Άρα θα πρέπει να του δώσεις και το 5.

Το γεγονός ότι δεν χρειάζεται να πεις στην production()
"ξέρεις,έχω 5 αντικείμενα τύπου product1 και 4 αντικείμενα τύπου product2"
αλλά της λες
"ξέρεις , έχω 9 αντικείμενα σε σύνολο.Πάρε έναν πίνακα με pointers στα 9 αυτά αντικείμενα και κάνε
τη δουλειά σου"

την κάνει (την production()) ανεξάρτητη από τον τύπο των τεμαχίων.

αα μαλιστα..ευχαριστω :)


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: mamalos on December 18, 2011, 16:27:52 pm
Δείτε τι σας είπε ο/η valmadiaN (από προηγούμενη σελίδα) και σταματήστε να μπερδεύετε την άσκηση περισσότερο. Ήταν σαφής στο τελευταίο post του της δεύτερης σελίδας. Μην το τραβάτε παραπάνω και μη δω λύση να βγαίνει στο forum γιατί θα χρειαστεί να ζητήσω να ακυρωθεί η εργασία.

Όσοι δεν καταλαβαίνετε τι πρέπει να γίνει ή διαβάστε (γιατί από τις απορίες σας είναι εμφανές ότι δεν έχετε διαβάσει ούτε τη θεωρία περί virtual functions OYTE την εκφώνηση της άσκησης...αλλά ΟΥΤΕ τι σας προτείνουν οι άλλοι στο συγκεκριμένο topic!) ή ας έχετε τη διακριτικότητα να μιλήσετε με κάποιον στο τηλέφωνο και όχι να ζητάτε να σας ανεβάσουν λύσεις ή να πρέπει να σας γράψουν ΑΚΡΙΒΩΣ τι ορίσματα πρέπει να έχει η κάθε συνάρτηση. Μην ξεχνάτε ότι και εμείς παρακολουθούμε το forum...


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Earendil on December 18, 2011, 17:30:36 pm
O mamalos ειναι off line γρηγορα valmadian!


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Silvo the Beautiful on December 18, 2011, 17:46:48 pm
Δείτε τι σας είπε ο/η valmadiaN (από προηγούμενη σελίδα) και σταματήστε να μπερδεύετε την άσκηση περισσότερο. Ήταν σαφής στο τελευταίο post του της δεύτερης σελίδας. Μην το τραβάτε παραπάνω και μη δω λύση να βγαίνει στο forum γιατί θα χρειαστεί να ζητήσω να ακυρωθεί η εργασία.

Όσοι δεν καταλαβαίνετε τι πρέπει να γίνει ή διαβάστε (γιατί από τις απορίες σας είναι εμφανές ότι δεν έχετε διαβάσει ούτε τη θεωρία περί virtual functions OYTE την εκφώνηση της άσκησης...αλλά ΟΥΤΕ τι σας προτείνουν οι άλλοι στο συγκεκριμένο topic!) ή ας έχετε τη διακριτικότητα να μιλήσετε με κάποιον στο τηλέφωνο και όχι να ζητάτε να σας ανεβάσουν λύσεις ή να πρέπει να σας γράψουν ΑΚΡΙΒΩΣ τι ορίσματα πρέπει να έχει η κάθε συνάρτηση. Μην ξεχνάτε ότι και εμείς παρακολουθούμε το forum...


2 ωρες την κοιτουσα την εκφωνηση και προσπαθουσα να την καταλαβω με δουλευεις? Και οχι τιποτα αλλο τελικα πανω που τα ξεκαθαρισα μπερδευτικα μετα και τωρα δεν προλαβαινω και να την κανω.

Αυτην την εβδομαδα ειχαμε προοδο! Εχουμε εργασιες στην Java! Εχουμε και αλλα μαθηματα να διαβασουμε. Δεν μπορω να αποκρυπτογραφω την εκφωνηση 2 ωρες και μετα να παω να την υλοποιησω να κολαω να χρειαζεται να ξαναρωτησω και να τελικα να μην προλαβαινω.
Ηταν η πιο δυσνοητη εκφωνηση που ανεβασατε για φετος μαζι με την πρωτη εργασια. Οι αλλες 3 ηταν πολυ καλες!

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

Υ.Γ
Ναι και θα μου πεις γιατι βαζω προτεραιοτητα την Java. Γιατι πολυ απλα δεν την κανω μονος μου και ο συμφοιτητης μου δεν ειναι υποχρεωμενος να με περιμενει που δεν χρωσταει c++


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Kaelthas on December 18, 2011, 20:22:03 pm
μια πιο χαζή ερώτηση...

να ορίζει έναν πίνακα από 5 αντικείμενα τύπου material  [...] αφού οριστούν [...]

οκ οπότε υποθέτω γράφω κάτι του στυλ

material m[5];
αυτό όμως το μόνο που κάνει είναι να δεσμεύσει αρκετή μνήμη.. σωστά;

η συνάρτηση αρχικών συνθηκών material() στην οποία δεν έχω ορίσματα και ουσιαστικά δηλώνονται οι τιμές πότε τρέχει???


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Kaelthas on December 18, 2011, 20:32:54 pm
μπορώ να το λύσω το πρόβλημά μου βάζονταις κενή συνάρτηση αρχικών και κάνοντας ένα "for" με Set συναρτήσεις... αυτό όμως ζητάει ή κάνω του κεφαλιού μου τώρα;


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: Kaelthas on December 18, 2011, 20:58:00 pm
ok για την τον πινακα material παει και έρχεται για τους product?

 δοκιμασα να τρέξω και κάτι του στυλ

product1 a[5];
for(i=0; i<5; i++){
 a[ i ].product1();
}

όπου product1() είναι συνάρτηση αρχικών συνθηκών χωρίς ορίσματα που δηλώνονται τιμές στα αντικείμενα
αλλα δεν έτρεξε

δεν θέλω πάλι να κάνω όμως ιστορία με Set διότι σκοπος της άσκησης είναι να μπορούν να προσθεθούν κι άλλες κλάσεις τύπου productX χωρίς αλλαγές στην main


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: princess_of_the_dawn on December 18, 2011, 21:06:51 pm
εγώ όταν το έκανα έτσι μου έβγαζε μήνυμα invalid use of product1 οπότε μάλλον θέλει να καλείς την product1 χωρίς το a


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: PanosGo on December 18, 2011, 21:53:04 pm
μια πιο χαζή ερώτηση...

να ορίζει έναν πίνακα από 5 αντικείμενα τύπου material  [...] αφού οριστούν [...]

οκ οπότε υποθέτω γράφω κάτι του στυλ

material m[5];
αυτό όμως το μόνο που κάνει είναι να δεσμεύσει αρκετή μνήμη.. σωστά;

η συνάρτηση αρχικών συνθηκών material() στην οποία δεν έχω ορίσματα και ουσιαστικά δηλώνονται οι τιμές πότε τρέχει???
όταν κάνεις τον ορισμό του πίνακα των αντικειμένων πχ product1 p1[5] αυτόματα τρέχουν 5 constructors...!! δεν χρειάζεται κάν να κάνεις for...
πληροφοριακά στην περίπτωση της for που χρειάζεται μόνο όταν κάνεις malloc συντάσσεται με temp αντικείμενο δηλαδή:
for (int i=0; i<5; i++){
     product1 temp;
     a=temp;
}
αλλά σε αυτή την περίπτωση σου ξαναλέω δεν χρειάζεται.... :) :)


Title: Re: [C++] ΕΡΓΑΣΙΑ E [2011-2012]
Post by: pepe on December 18, 2011, 23:16:35 pm
Quote
[..]καθώς και ο αριθμός των τεμαχίων που πρέπει να κατασκευαστούν. Τα αντικείμενα της κλάσης product2 είναι κύβοι για κάθε έναν από τους οποίους είναι γνωστή η πλευρά καθώς και ο αριθμός των τεμαχίων που πρέπει να κατασκευαστούν. Κατά την δημιουργία των αντικειμένων στους τύπους των πιο πάνω κλάσεων να διαβάζεται ο αριθμός των τεμαχίων[...]
Αυτοί οι αριθμοί τεμαχίων είναι τα αντίστοιχα 5 και 4;
Δηλαδή ένα αντικείμενου τύπου κλάσης product1 αντιστοιχεί σ' ένα κυλινδρικό τεμάχιο,σωστά;
Αν ναι, ποιός ο λόγος να διαβαστούν;; Μια μικρή βοήθεια, έχω φάει σκάλωμα εδώ και ώρα μ' αυτή την εκφώνηση...