THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: Halfpenny on February 27, 2013, 21:44:37 pm



Title: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: Halfpenny on February 27, 2013, 21:44:37 pm
Δεν ξέρω, έχουν ξεφύγει λίγο ή μόνο εμένα μου φάνηκαν δύσκολα τα σημερινά? Ούτε το τρίτο θέμα κατάφερα να λύσω, που συνήθως δεν έχω πρόβλημα με αυτό. Τέλος πάντων, άνοιξα το τοπικ μπας και υπάρχει τουλάχιστον κανείς να δώσει κάνα feedback με λύσεις για τα θέματα, για να δούμε και τι ζητούσε. Τα θέματα, θα τα ανεβάσω αύριο, αν δεν με προλάβει κανείς.

Ορίστε τα θέματα:


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: edenaxas on February 27, 2013, 21:52:53 pm
Παιδια αρκει να μην κουραζετε τον compiler με τα προγραμματα σας.


Να ξερετε.


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: Infinite Loop on February 27, 2013, 21:54:41 pm
Δεν ξέρω, έχουν ξεφύγει λίγο ή μόνο εμένα μου φάνηκαν δύσκολα τα σημερινά? Ούτε το τρίτο θέμα κατάφερα να λύσω, που συνήθως δεν έχω πρόβλημα με αυτό. Τέλος πάντων, άνοιξα το τοπικ μπας και υπάρχει τουλάχιστον κανείς να δώσει κάνα feedback με λύσεις για τα θέματα, για να δούμε και τι ζητούσε. Τα θέματα, θα τα ανεβάσω αύριο, αν δεν με προλάβει κανείς.

Το 3ο ειχε περισσοτερες καγκουριες απο οτι τις αλλες χρονιες, αλλα αμα επιανες το νοημα εβγαινε. Το 1ο ηταν κλασσικη ασκηση με virtual - στο Β τα K και M τα κανατε static members της βασικης; Δεν εβρισκα αλλον τροπο.
Το 2ο απο την αλλη ηθελε private κληρονομικοτητα, που δεν ξερω καν αν εχει ξαναπεσει ποτε τετοιο θεμα...

Παιδια αρκει να μην κουραζετε τον compiler με τα προγραμματα σας.


Να ξερετε.

EPIC


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: Lord on February 27, 2013, 21:58:45 pm
Μόνο σε μένα φάνηκαν πολλά ; (τα έγραψα όλα μεν,με λάθη δε λόγω βιασύνης)  ::)


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: Infinite Loop on February 27, 2013, 22:00:33 pm
Μόνο σε μένα φάνηκαν πολλά ; (τα έγραψα όλα μεν,με λάθη δε λόγω βιασύνης)  ::)

Οχι...


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: ThanosAm on February 27, 2013, 22:01:11 pm
Ενα εχω να πω :

BΙΑΣΜΟΣ


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: rainmaker on February 27, 2013, 22:27:51 pm
υπερβολικα πολλα.εγραφα μεχρτι την ληξη και με το ζορι τελειωσα το δευτερο.ουτε ματια στο 3.επισης η εκφωνηση του θεματος κορτεση αφησε ξανα εποχη!!!


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: Lord on February 27, 2013, 22:49:14 pm
Μόνο σε μένα φάνηκαν πολλά ; (τα έγραψα όλα μεν,με λάθη δε λόγω βιασύνης)  ::)

+ Λάθη στο 3ο θέμα. Ωραία πήγε (και) αυτό.  :-\


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: skipper on February 27, 2013, 22:56:21 pm
Κατ' αρχην ρε παιδια, δεν ειναι ΑΔΙΑΝΟΗΤΟ να δινουμε τετοιο μαθημα στο χαρτι και οχι σε pc; Πως ειναι δυνατον να προλαβεις να γραψεις τοσες γραμμες κωδικα (χωρις να παρεις ανασα) και να δειχνει και καθαρο το γραπτο, σε 2μιση ωρες και κατι; Αφου ζητανε που ζητανε 500 πραγματα σε ενα θεμα (ειδικα στο 1ο, το οποιο πρεπει να μου πηρε μιαμιση ωρα τουλαχιστον μεχρι να το τελειοποιησω), ας μας δωσουν 3-3μιση ωρες να κατσουμε να γραψουμε σαν ανθρωποι δηλαδη. Ελεος!


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: c0ndemn3d on February 27, 2013, 23:09:30 pm
Τα 2 θέματα με τα προγράμματα (μιλάω για τη Β ομάδα) δεν ήταν υπερβολικά δύσκολα, απλά δεν έφτανε ο χρόνος. Έπρεπε να μας δώσουν 3-3,5 ώρες πιστεύω.

1ο θέμα από Εργασία Ε. Προσέξτε, οι συναρτήσεις δεν μπορούν να παίρνουν ορίσματα
    α) Είχαμε 2 συναρτήσεις Α.Σ. στην Ε. Την μια την χρησιμοποιούσαμε πάντα πριν μπούμε στην main για τα δοκιμαστικά αντικείμενα και την άλλη για τα κανονικά αντικείμενα. Εφόσον θα έχουμε μια συνάρτηση Α.Σ. πρέπει να το διαχωρίσουμε με μια στατική μεταβλητή η οποία θα δείχνει αν έχουμε μπει στη main. Μ και Κ στατικές επίσης.
    β) Έχουμε αντίστοιχη συνάρτηση create() χωρίς ορίσματα, απλά θα την καλούμε μέσω της main όσες φορές θέλουμε.

2ο θέμα στις ιδιωτικώς παραγόμενες κλάσεις δείτε το 6.6 από σημειώσεις Κορτέση. Είναι κόλπο για να κρατήσεις τις μεθόδους δημόσιες. Για τους 2 constructors που λέει είναι πουστιά. Πρέπει να βάλετε στον έναν και ένα τρίτο όρισμα για να τους διαχωρίζει ο compiler (δεν θα το κάνετε τίποτα το τρίτο όρισμα).

3ο θέμα πουστιά με τη γενική μεταβλητή. Ορίζεται έναν αντικείμενο ακόμα στη main (αίσχος) και άρα η γενική μεταβλητή αυξάνεται πριν από την είσοδο στην συνάρτηση fun. Όποιος το είδε, το είδε... (ναι, εγώ δεν το είδα). Όπου σας λέει να κάνετε πράξεις με αντικείμενα ή να το εκτυπώσετε θέλει τoν operator int.


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: varvoutis on February 28, 2013, 12:47:42 pm
Φαινομενικά τα θέματα ήταν πιο normal από άλλες χρονιές. Ήταν όμως tricky!

Παντού είχε και από μια παγίδα...

Περισσότερος χρόνος και υπολογιστής και θα γράφαμε πολύ καλύτερα

ΥΓ: Το τρίτο θέμα ήταν κοινό και για τις δύο ομάδες;


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: Infinite Loop on February 28, 2013, 12:53:40 pm
ΥΓ: Το τρίτο θέμα ήταν κοινό και για τις δύο ομάδες;

Απο το λιγο που ειδα, ειναι σχεδον ιδιο, μονο που στο Β οι m και k αρχικοποιουνται σε 2 και 3 (οχι απαραιτητα με αυτην την σειρα).

Η καγκουρια με την private inheritance ηταν ΑΙΣΧΡΗ.

Επισης ο χρονος δεν εφτανε ουτε με σφαιρες.


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: Infinite Loop on February 28, 2013, 13:18:51 pm
Σηκωσα το 3ο θεμα της ομαδας Β στον g++, δινει:

Code:
3 7 8
9 3

Της ομαδας Α δινει:

Code:
5 12 13
15 5


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: TrueForce on February 28, 2013, 16:52:37 pm
εγραφα πολυ βιαστηκα καθως δε μου εφτανε ο χρονος. τα εγραψα ολα αλλα ειχα πολλα λαθη απροσεξιας, πολλα πραγματα γραμμενα με ο,τι να ναι τροπο... κρινοντας απο τον τροπο που βαθμολογει ο κορτεσαρας.... μαλλον κοπηκα xD


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: COACH on February 28, 2013, 19:42:07 pm
παιδια πολλα πραγματα για 2,5 ωρες. στο χαρτι κλπ. 3 θα ηταν καλα πιστευω.


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: varvoutis on February 28, 2013, 20:49:48 pm
2ο θέμα στις ιδιωτικώς παραγόμενες κλάσεις δείτε το 6.6 από σημειώσεις Κορτέση. Είναι κόλπο για να κρατήσεις τις μεθόδους δημόσιες.

Χαχαχαχα! Τι σκεφτήκανε οι άνθρωποι!

10 έγραφε μόνο αυτός που είχε λιώσει στον κώδικα και ήξερε και τις λεπτομέρειες...  :o


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: varvoutis on February 28, 2013, 22:00:12 pm
στο Β τα K και M τα κανατε static members της βασικης; Δεν εβρισκα αλλον τροπο.

κι εγώ static τα έκανα αλλά τα όρισα ως private...

Τώρα που το ξανασκέφτομαι μάλλον θα έπρεπε να τις κάνω public  :P


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: lakis on March 08, 2013, 19:54:22 pm
ποιο το θέμα κορτέση και ποιό του Συμεωνίδη??ξέρει καποιος σίγουρα??


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: Fcoriolis on March 08, 2013, 19:56:13 pm
Νομίζω το δεύτερο σημεωνίδης (Νομίζω)


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: lakis on March 08, 2013, 19:59:56 pm
και γω έτσι πιστεύω,άμα κρίνω και απο την έκταση εκφώνησης του 1ου!


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: Fcoriolis on March 08, 2013, 20:08:10 pm
Απλά φαντάζομαι δεν ξέρω σίγουρα ρε συ!


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: Endeavour X on March 08, 2013, 20:08:18 pm
το τριτο παντως το διορθωνει ο συμεωνιδης να ξερετε
τουλαχιστο ετσι ειχε πει καποτε...


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: johnnykost on March 08, 2013, 20:09:39 pm
Σίγουρα 2 και 3 συμεωνίδης


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: lakis on March 08, 2013, 20:27:28 pm
Σίγουρα 2 και 3 συμεωνίδης
100% φίλε??


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: johnnykost on March 08, 2013, 20:35:33 pm
Σίγουρα 2 και 3 συμεωνίδης
100% φίλε??
Έτσι μ είπε ένας που ρώτησε συμεωνίδη. Ο συμεωνίδης τα χει διορθώσει ήδη τα δικά του.


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: rainmaker on March 09, 2013, 13:17:15 pm
ο συμεωνιδης τελειωσε.ο κορτεσης εχει τα μισα γραπτα ακομα.πεμπτη ειπε θα βγουν περιπου


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: Exomag on March 13, 2013, 16:18:31 pm
Απότελέσματα Εξεταστικής (https://www.thmmy.gr/smf/index.php?topic=53046.msg946818#msg946818)


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: c0ndemn3d on March 13, 2013, 16:20:19 pm
Απότελέσματα Εξεταστικής (https://www.thmmy.gr/smf/index.php?topic=53046.msg946818#msg946818)

Εντάξει μην τα διαφημίζεις τόσο


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: Exomag on March 13, 2013, 16:22:28 pm
Απότελέσματα Εξεταστικής (https://www.thmmy.gr/smf/index.php?topic=53046.msg946818#msg946818)

Εντάξει μην τα διαφημίζεις τόσο

Μας βίασε και μας άρεσε, οπότε θέλει και διαφήμιση :D


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: nontas93 on March 15, 2013, 18:56:33 pm
το 1ο θεμα ειναι λαθος να γινει με template? αφου ζηταει η συναρτηση να ειναι ανεξαρτητη απο αριθμο και τυπο και οχι η main.


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: zos on March 15, 2013, 19:53:24 pm
παντως το 1ο θεμα ειναι λαθος να γινει με template? αφου ζηταει η συναρτηση να ειναι ανεξαρτητη απο αριθμο και τυπο και οχι η main.

Είναι μερικώς λάθος για έναν και μόνο λόγο. Η ανεξαρτησία αριθμού και τύπου γίνεται μόνο με παράγωγες κλάσεις και δυναμική κατανομή μνήμης. Δηλαδή κάνεις την κλάση object, για παράδειγμα, με έναν static pointer σε αυτήν. Για κάθε παραγόμενη τάξη από την object που δημιουργεί τα δικά αντικείμενα, τα αντικείμενα αυτά αποθηκεύονται ως τύπου object. Ετσι πετυχαίνεται ανεξαρτησία τύπου.
Με την προσθήκη ενός static counter στην object, οποίος αυξάνει όταν δημιουργούνται αντικείμενα στις παραγόμενες κλάσεις, έχεις και το πλήθος των αντικειμένων που έχεις συνολικά. Να και η ανεξαρτησία αριθμού.
Αν το κάνεις με template μπορείς να πετύχεις ανεξαρτησία αριθμού εύκολα με χρήση static counter στην/στις κλάσεις σου αλλά θα έχεις ένα πρόβλημα. Κάθε φορά που θα καλείται η συνάρτηση που είναι template αυτή αποκτάει την μορφή του αντικειμένου κλάσης που δίνεται σαν όρισμα και άρα αν η object κληρονομείται από 3 κλάσεις, έστω object1,object2 και object 3. Θα πρέπει η συνάρτηση να κληθεί 3 φορές. Η εκφώνηση υπονοεί ξεκάθαρα πως πρέπει να κληθεί μια φορά και μόνο και άρα γι'αυτό δουλεύουμε με virtual.
Βέβαια ενδέχεται να λύνεται και με template αλλά αν γίνεται η πολυπλοκότητα ως προς αυτό το χαρακτηριστικό που σου είπα λογικά θα είναι υπερβολική και άσκοπη. 


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: nontas93 on March 16, 2013, 02:29:15 am
παντως το 1ο θεμα ειναι λαθος να γινει με template? αφου ζηταει η συναρτηση να ειναι ανεξαρτητη απο αριθμο και τυπο και οχι η main.

Είναι μερικώς λάθος για έναν και μόνο λόγο. Η ανεξαρτησία αριθμού και τύπου γίνεται μόνο με παράγωγες κλάσεις και δυναμική κατανομή μνήμης. Δηλαδή κάνεις την κλάση object, για παράδειγμα, με έναν static pointer σε αυτήν. Για κάθε παραγόμενη τάξη από την object που δημιουργεί τα δικά αντικείμενα, τα αντικείμενα αυτά αποθηκεύονται ως τύπου object. Ετσι πετυχαίνεται ανεξαρτησία τύπου.
Με την προσθήκη ενός static counter στην object, οποίος αυξάνει όταν δημιουργούνται αντικείμενα στις παραγόμενες κλάσεις, έχεις και το πλήθος των αντικειμένων που έχεις συνολικά. Να και η ανεξαρτησία αριθμού.
Αν το κάνεις με template μπορείς να πετύχεις ανεξαρτησία αριθμού εύκολα με χρήση static counter στην/στις κλάσεις σου αλλά θα έχεις ένα πρόβλημα. Κάθε φορά που θα καλείται η συνάρτηση που είναι template αυτή αποκτάει την μορφή του αντικειμένου κλάσης που δίνεται σαν όρισμα και άρα αν η object κληρονομείται από 3 κλάσεις, έστω object1,object2 και object 3. Θα πρέπει η συνάρτηση να κληθεί 3 φορές. Η εκφώνηση υπονοεί ξεκάθαρα πως πρέπει να κληθεί μια φορά και μόνο και άρα γι'αυτό δουλεύουμε με virtual.
Βέβαια ενδέχεται να λύνεται και με template αλλά αν γίνεται η πολυπλοκότητα ως προς αυτό το χαρακτηριστικό που σου είπα λογικά θα είναι υπερβολική και άσκοπη. 

Πολυ σωστα οσα λες, απλως σε ποιο σημειο η εκφώνηση υπονοεί ξεκάθαρα πρέπει να κληθεί μονο μια φορά η choice() ?


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: zos on March 16, 2013, 03:37:17 am
παντως το 1ο θεμα ειναι λαθος να γινει με template? αφου ζηταει η συναρτηση να ειναι ανεξαρτητη απο αριθμο και τυπο και οχι η main.

Είναι μερικώς λάθος για έναν και μόνο λόγο. Η ανεξαρτησία αριθμού και τύπου γίνεται μόνο με παράγωγες κλάσεις και δυναμική κατανομή μνήμης. Δηλαδή κάνεις την κλάση object, για παράδειγμα, με έναν static pointer σε αυτήν. Για κάθε παραγόμενη τάξη από την object που δημιουργεί τα δικά αντικείμενα, τα αντικείμενα αυτά αποθηκεύονται ως τύπου object. Ετσι πετυχαίνεται ανεξαρτησία τύπου.
Με την προσθήκη ενός static counter στην object, οποίος αυξάνει όταν δημιουργούνται αντικείμενα στις παραγόμενες κλάσεις, έχεις και το πλήθος των αντικειμένων που έχεις συνολικά. Να και η ανεξαρτησία αριθμού.
Αν το κάνεις με template μπορείς να πετύχεις ανεξαρτησία αριθμού εύκολα με χρήση static counter στην/στις κλάσεις σου αλλά θα έχεις ένα πρόβλημα. Κάθε φορά που θα καλείται η συνάρτηση που είναι template αυτή αποκτάει την μορφή του αντικειμένου κλάσης που δίνεται σαν όρισμα και άρα αν η object κληρονομείται από 3 κλάσεις, έστω object1,object2 και object 3. Θα πρέπει η συνάρτηση να κληθεί 3 φορές. Η εκφώνηση υπονοεί ξεκάθαρα πως πρέπει να κληθεί μια φορά και μόνο και άρα γι'αυτό δουλεύουμε με virtual.
Βέβαια ενδέχεται να λύνεται και με template αλλά αν γίνεται η πολυπλοκότητα ως προς αυτό το χαρακτηριστικό που σου είπα λογικά θα είναι υπερβολική και άσκοπη. 

Πολυ σωστα οσα λες, απλως σε ποιο σημειο η εκφώνηση υπονοεί ξεκάθαρα πρέπει να κληθεί μονο μια φορά η choice() ?

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


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: nontas93 on March 16, 2013, 12:09:56 pm
παντως το 1ο θεμα ειναι λαθος να γινει με template? αφου ζηταει η συναρτηση να ειναι ανεξαρτητη απο αριθμο και τυπο και οχι η main.

Είναι μερικώς λάθος για έναν και μόνο λόγο. Η ανεξαρτησία αριθμού και τύπου γίνεται μόνο με παράγωγες κλάσεις και δυναμική κατανομή μνήμης. Δηλαδή κάνεις την κλάση object, για παράδειγμα, με έναν static pointer σε αυτήν. Για κάθε παραγόμενη τάξη από την object που δημιουργεί τα δικά αντικείμενα, τα αντικείμενα αυτά αποθηκεύονται ως τύπου object. Ετσι πετυχαίνεται ανεξαρτησία τύπου.
Με την προσθήκη ενός static counter στην object, οποίος αυξάνει όταν δημιουργούνται αντικείμενα στις παραγόμενες κλάσεις, έχεις και το πλήθος των αντικειμένων που έχεις συνολικά. Να και η ανεξαρτησία αριθμού.
Αν το κάνεις με template μπορείς να πετύχεις ανεξαρτησία αριθμού εύκολα με χρήση static counter στην/στις κλάσεις σου αλλά θα έχεις ένα πρόβλημα. Κάθε φορά που θα καλείται η συνάρτηση που είναι template αυτή αποκτάει την μορφή του αντικειμένου κλάσης που δίνεται σαν όρισμα και άρα αν η object κληρονομείται από 3 κλάσεις, έστω object1,object2 και object 3. Θα πρέπει η συνάρτηση να κληθεί 3 φορές. Η εκφώνηση υπονοεί ξεκάθαρα πως πρέπει να κληθεί μια φορά και μόνο και άρα γι'αυτό δουλεύουμε με virtual.
Βέβαια ενδέχεται να λύνεται και με template αλλά αν γίνεται η πολυπλοκότητα ως προς αυτό το χαρακτηριστικό που σου είπα λογικά θα είναι υπερβολική και άσκοπη.  

Πολυ σωστα οσα λες, απλως σε ποιο σημειο η εκφώνηση υπονοεί ξεκάθαρα πρέπει να κληθεί μονο μια φορά η choice() ?

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

Μαλιστα.. Σ ευχαριστω παντως γιατι θελω να ξερω τι να του πω οταν δω το γραπτο.. Απλως εχω κανει με template το 1ο θεμα και αν καταλαβα καλα, κακως μου το πηρε ολο λαθος .. Γιατι το θεμα ειναι αν ζηταει ξεκαθαρα κληση μια φορα, πραγμα που δεν το κανει και απλως εμεις πρεπει να το χουμε ψιλιαστει απο παλια θεματα..


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: zos on March 16, 2013, 20:37:40 pm
παντως το 1ο θεμα ειναι λαθος να γινει με template? αφου ζηταει η συναρτηση να ειναι ανεξαρτητη απο αριθμο και τυπο και οχι η main.

Είναι μερικώς λάθος για έναν και μόνο λόγο. Η ανεξαρτησία αριθμού και τύπου γίνεται μόνο με παράγωγες κλάσεις και δυναμική κατανομή μνήμης. Δηλαδή κάνεις την κλάση object, για παράδειγμα, με έναν static pointer σε αυτήν. Για κάθε παραγόμενη τάξη από την object που δημιουργεί τα δικά αντικείμενα, τα αντικείμενα αυτά αποθηκεύονται ως τύπου object. Ετσι πετυχαίνεται ανεξαρτησία τύπου.
Με την προσθήκη ενός static counter στην object, οποίος αυξάνει όταν δημιουργούνται αντικείμενα στις παραγόμενες κλάσεις, έχεις και το πλήθος των αντικειμένων που έχεις συνολικά. Να και η ανεξαρτησία αριθμού.
Αν το κάνεις με template μπορείς να πετύχεις ανεξαρτησία αριθμού εύκολα με χρήση static counter στην/στις κλάσεις σου αλλά θα έχεις ένα πρόβλημα. Κάθε φορά που θα καλείται η συνάρτηση που είναι template αυτή αποκτάει την μορφή του αντικειμένου κλάσης που δίνεται σαν όρισμα και άρα αν η object κληρονομείται από 3 κλάσεις, έστω object1,object2 και object 3. Θα πρέπει η συνάρτηση να κληθεί 3 φορές. Η εκφώνηση υπονοεί ξεκάθαρα πως πρέπει να κληθεί μια φορά και μόνο και άρα γι'αυτό δουλεύουμε με virtual.
Βέβαια ενδέχεται να λύνεται και με template αλλά αν γίνεται η πολυπλοκότητα ως προς αυτό το χαρακτηριστικό που σου είπα λογικά θα είναι υπερβολική και άσκοπη.  

Πολυ σωστα οσα λες, απλως σε ποιο σημειο η εκφώνηση υπονοεί ξεκάθαρα πρέπει να κληθεί μονο μια φορά η choice() ?

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

Μαλιστα.. Σ ευχαριστω παντως γιατι θελω να ξερω τι να του πω οταν δω το γραπτο.. Απλως εχω κανει με template το 1ο θεμα και αν καταλαβα καλα, κακως μου το πηρε ολο λαθος .. Γιατι το θεμα ειναι αν ζηταει ξεκαθαρα κληση μια φορα, πραγμα που δεν το κανει και απλως εμεις πρεπει να το χουμε ψιλιαστει απο παλια θεματα..
Επίσης λέει η choice να δέχεται έναν πίνακα που περιέχει αντικείμενα όλων των ειδών καυστήρων, άρα το template δεν μπορεί να χρησιμοποιηθεί. Άρα ουσιαστικά εδώ φαίνεται η μία κλήση.. Οπότε δεν νομίζω να κερδίσεις τίποτα από τον Κορτέση..


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: nontas93 on March 17, 2013, 20:33:10 pm
παντως το 1ο θεμα ειναι λαθος να γινει με template? αφου ζηταει η συναρτηση να ειναι ανεξαρτητη απο αριθμο και τυπο και οχι η main.

Είναι μερικώς λάθος για έναν και μόνο λόγο. Η ανεξαρτησία αριθμού και τύπου γίνεται μόνο με παράγωγες κλάσεις και δυναμική κατανομή μνήμης. Δηλαδή κάνεις την κλάση object, για παράδειγμα, με έναν static pointer σε αυτήν. Για κάθε παραγόμενη τάξη από την object που δημιουργεί τα δικά αντικείμενα, τα αντικείμενα αυτά αποθηκεύονται ως τύπου object. Ετσι πετυχαίνεται ανεξαρτησία τύπου.
Με την προσθήκη ενός static counter στην object, οποίος αυξάνει όταν δημιουργούνται αντικείμενα στις παραγόμενες κλάσεις, έχεις και το πλήθος των αντικειμένων που έχεις συνολικά. Να και η ανεξαρτησία αριθμού.
Αν το κάνεις με template μπορείς να πετύχεις ανεξαρτησία αριθμού εύκολα με χρήση static counter στην/στις κλάσεις σου αλλά θα έχεις ένα πρόβλημα. Κάθε φορά που θα καλείται η συνάρτηση που είναι template αυτή αποκτάει την μορφή του αντικειμένου κλάσης που δίνεται σαν όρισμα και άρα αν η object κληρονομείται από 3 κλάσεις, έστω object1,object2 και object 3. Θα πρέπει η συνάρτηση να κληθεί 3 φορές. Η εκφώνηση υπονοεί ξεκάθαρα πως πρέπει να κληθεί μια φορά και μόνο και άρα γι'αυτό δουλεύουμε με virtual.
Βέβαια ενδέχεται να λύνεται και με template αλλά αν γίνεται η πολυπλοκότητα ως προς αυτό το χαρακτηριστικό που σου είπα λογικά θα είναι υπερβολική και άσκοπη.  

Πολυ σωστα οσα λες, απλως σε ποιο σημειο η εκφώνηση υπονοεί ξεκάθαρα πρέπει να κληθεί μονο μια φορά η choice() ?

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

Μαλιστα.. Σ ευχαριστω παντως γιατι θελω να ξερω τι να του πω οταν δω το γραπτο.. Απλως εχω κανει με template το 1ο θεμα και αν καταλαβα καλα, κακως μου το πηρε ολο λαθος .. Γιατι το θεμα ειναι αν ζηταει ξεκαθαρα κληση μια φορα, πραγμα που δεν το κανει και απλως εμεις πρεπει να το χουμε ψιλιαστει απο παλια θεματα..
Επίσης λέει η choice να δέχεται έναν πίνακα που περιέχει αντικείμενα όλων των ειδών καυστήρων, άρα το template δεν μπορεί να χρησιμοποιηθεί. Άρα ουσιαστικά εδώ φαίνεται η μία κλήση.. Οπότε δεν νομίζω να κερδίσεις τίποτα από τον Κορτέση..

Παντως φιλε μου φαινεται αδικο οσους το καναμε με template να μας κοψει γι αυτο το λογο, γιατι τα θεματα ηταν αδυνατο να λυθουν σε 2μιση ωρες (γι αυτο και κανενας δεν εγραψε 10), ποσο μαλλον να καθησουμε να σκεφτουμε και την ερμηνεια της καθε λεξης.. Η εκφωνηση δεν λεει  όλων των ειδών καυστήρων, το γραφει πολυ πιο παραπλανητικα και ειδες οτι και εσυ σπιτι σου με την ανεση σου δυσκολευτηκες να το καταλαβεις.. Μακαρι να το ειχε μονο ο Συμεωνιδης το μαθημα γιατι με τον Κορτεση προκοπη δεν θα δουμε...


Title: Re: [C++] Εξετάσεις Φεβρουάριος 2013
Post by: zos on March 17, 2013, 22:05:54 pm
παντως το 1ο θεμα ειναι λαθος να γινει με template? αφου ζηταει η συναρτηση να ειναι ανεξαρτητη απο αριθμο και τυπο και οχι η main.

Είναι μερικώς λάθος για έναν και μόνο λόγο. Η ανεξαρτησία αριθμού και τύπου γίνεται μόνο με παράγωγες κλάσεις και δυναμική κατανομή μνήμης. Δηλαδή κάνεις την κλάση object, για παράδειγμα, με έναν static pointer σε αυτήν. Για κάθε παραγόμενη τάξη από την object που δημιουργεί τα δικά αντικείμενα, τα αντικείμενα αυτά αποθηκεύονται ως τύπου object. Ετσι πετυχαίνεται ανεξαρτησία τύπου.
Με την προσθήκη ενός static counter στην object, οποίος αυξάνει όταν δημιουργούνται αντικείμενα στις παραγόμενες κλάσεις, έχεις και το πλήθος των αντικειμένων που έχεις συνολικά. Να και η ανεξαρτησία αριθμού.
Αν το κάνεις με template μπορείς να πετύχεις ανεξαρτησία αριθμού εύκολα με χρήση static counter στην/στις κλάσεις σου αλλά θα έχεις ένα πρόβλημα. Κάθε φορά που θα καλείται η συνάρτηση που είναι template αυτή αποκτάει την μορφή του αντικειμένου κλάσης που δίνεται σαν όρισμα και άρα αν η object κληρονομείται από 3 κλάσεις, έστω object1,object2 και object 3. Θα πρέπει η συνάρτηση να κληθεί 3 φορές. Η εκφώνηση υπονοεί ξεκάθαρα πως πρέπει να κληθεί μια φορά και μόνο και άρα γι'αυτό δουλεύουμε με virtual.
Βέβαια ενδέχεται να λύνεται και με template αλλά αν γίνεται η πολυπλοκότητα ως προς αυτό το χαρακτηριστικό που σου είπα λογικά θα είναι υπερβολική και άσκοπη.  

Πολυ σωστα οσα λες, απλως σε ποιο σημειο η εκφώνηση υπονοεί ξεκάθαρα πρέπει να κληθεί μονο μια φορά η choice() ?

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

Μαλιστα.. Σ ευχαριστω παντως γιατι θελω να ξερω τι να του πω οταν δω το γραπτο.. Απλως εχω κανει με template το 1ο θεμα και αν καταλαβα καλα, κακως μου το πηρε ολο λαθος .. Γιατι το θεμα ειναι αν ζηταει ξεκαθαρα κληση μια φορα, πραγμα που δεν το κανει και απλως εμεις πρεπει να το χουμε ψιλιαστει απο παλια θεματα..
Επίσης λέει η choice να δέχεται έναν πίνακα που περιέχει αντικείμενα όλων των ειδών καυστήρων, άρα το template δεν μπορεί να χρησιμοποιηθεί. Άρα ουσιαστικά εδώ φαίνεται η μία κλήση.. Οπότε δεν νομίζω να κερδίσεις τίποτα από τον Κορτέση..

Παντως φιλε μου φαινεται αδικο οσους το καναμε με template να μας κοψει γι αυτο το λογο, γιατι τα θεματα ηταν αδυνατο να λυθουν σε 2μιση ωρες (γι αυτο και κανενας δεν εγραψε 10), ποσο μαλλον να καθησουμε να σκεφτουμε και την ερμηνεια της καθε λεξης.. Η εκφωνηση δεν λεει  όλων των ειδών καυστήρων, το γραφει πολυ πιο παραπλανητικα και ειδες οτι και εσυ σπιτι σου με την ανεση σου δυσκολευτηκες να το καταλαβεις.. Μακαρι να το ειχε μονο ο Συμεωνιδης το μαθημα γιατι με τον Κορτεση προκοπη δεν θα δουμε...
Κοίταξε συμφωνώ πως είναι απαιτητικό το μάθημα και ο Κορτέσης σου κάνει την ζωή δύσκολη τόσο με τα θέματα όσο και με τις ιδιοτροπίες του. Επίσης ο τρόπος εξέτασης είναι απαράδεκτος αλλά αυτό είναι άλλη ιστορία. Προσωπικά, έχοντας γράψει 7,5 σε αυτήν την εξεταστική, και με δεδομένο πως ασχολήθηκα και τελείωσα το θέμα του Κορτέση ενώ πασάλειψα το δεύτερο, το κατάλαβα αυτό με την μία κλήση με την πρώτη.
Αν λύνεται με template δεν μπορώ να σου πω σίγουρα γτ ξαναλέω πως η έκφραση ένας πίνακας που υλοποιεί όλους τους τύπους καυστήρων προϋποθέτει μία κλήση. Δοκίμασε να του εξηγήσεις αλλά μην περιμένεις πολλά, γενικό τμήμα έχουμε εδώ.
Φιλικά πάντα.

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


Title: Re: Εξετάσεις Φεβρουάριος 2013
Post by: Fosa on August 28, 2014, 15:51:09 pm
Τα 2 θέματα με τα προγράμματα (μιλάω για τη Β ομάδα) δεν ήταν υπερβολικά δύσκολα, απλά δεν έφτανε ο χρόνος. Έπρεπε να μας δώσουν 3-3,5 ώρες πιστεύω.

1ο θέμα από Εργασία Ε. Προσέξτε, οι συναρτήσεις δεν μπορούν να παίρνουν ορίσματα
    α) Είχαμε 2 συναρτήσεις Α.Σ. στην Ε. Την μια την χρησιμοποιούσαμε πάντα πριν μπούμε στην main για τα δοκιμαστικά αντικείμενα και την άλλη για τα κανονικά αντικείμενα. Εφόσον θα έχουμε μια συνάρτηση Α.Σ. πρέπει να το διαχωρίσουμε με μια στατική μεταβλητή η οποία θα δείχνει αν έχουμε μπει στη main. Μ και Κ στατικές επίσης.
    β) Έχουμε αντίστοιχη συνάρτηση create() χωρίς ορίσματα, απλά θα την καλούμε μέσω της main όσες φορές θέλουμε.

2ο θέμα στις ιδιωτικώς παραγόμενες κλάσεις δείτε το 6.6 από σημειώσεις Κορτέση. Είναι κόλπο για να κρατήσεις τις μεθόδους δημόσιες. Για τους 2 constructors που λέει είναι πουστιά. Πρέπει να βάλετε στον έναν και ένα τρίτο όρισμα για να τους διαχωρίζει ο compiler (δεν θα το κάνετε τίποτα το τρίτο όρισμα).

3ο θέμα πουστιά με τη γενική μεταβλητή. Ορίζεται έναν αντικείμενο ακόμα στη main (αίσχος) και άρα η γενική μεταβλητή αυξάνεται πριν από την είσοδο στην συνάρτηση fun. Όποιος το είδε, το είδε... (ναι, εγώ δεν το είδα). Όπου σας λέει να κάνετε πράξεις με αντικείμενα ή να το εκτυπώσετε θέλει τoν operator int.
Μπορείς να μου εξηγήσεις γιατί θέλει τον operator όταν τυπώνει; Σε ένα παράδειγμα στο βιβλιο c++ απτο μηδέν τυπώνει αντικείμενα χωρίς να καλέι operator :/