THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: c0ndemn3d on November 29, 2012, 14:14:06 pm



Title: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: c0ndemn3d on November 29, 2012, 14:14:06 pm
Συζήτηση και απορίες για την τέταρτη εργασία

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

Στην κλάση να οριστούν ακόμη ως μέλη:

α) Μια επικάλυψη του τελεστή ( ) τέτοια ώστε η έκφραση p(x), όπου p αντικείμενο της κλάσης και x αριθμός τύπου float, να επιστρέφει την τιμή του πολυωνύμου που ορίζει το αντικείμενο για την τιμή του x.  

β) Μια επικάλυψη του τελεστή = = τέτοια ώστε η έκφραση q = = p, όπου q και p αντικείμενα της κλάσης, να καταχωρεί ως συντελεστές του πολυωνύμου που ορίζει το αντικείμενο q τους συντελεστές του πολυωνύμου που ορίζει το αντικείμενο p.

γ) Μια επικάλυψη του τελεστή ^ τέτοια ώστε η έκφραση p^k, όπου p αντικείμενο της κλάσης και k αριθμός τύπου int, να επιστρέφει ένα αντικείμενο στον τύπο της ίδιας κλάσης το οποίο να ορίζει το πολυώνυμο που έχει ως συντελεστές τους συντελεστές του πολυωνύμου που προκύπτει ως παράγωγος k τάξης του πολυωνύμου που ορίζει το αντικείμενο p. Στη συνάρτηση να ορίζεται ένα αντικείμενο στον τύπο της κλάσης στο οποίο να αντιγράφεται, χρησιμοποιώντας τον τελεστή = =, το αντικείμενο p. Στη συνέχεια οι συντελεστές του νέου αντικειμένου να τροποποιούνται έτσι ώστε να σχηματίζεται η παράγωγος k τάξης του p.

δ) Μια επικάλυψη του τελεστή [ ] τέτοια ώστε η έκφραση p[ x], όπου p αντικείμενο της κλάσης polynomial και x αριθμός τύπου float να επιστρέφει την τιμή της έκφρασης x – p(x)/p’(x).

Η συνάρτηση main() του προγράμματος να ορίζει ένα αντικείμενο στον τύπο της κλάσης polynomial και χρησιμοποιώντας της επικαλύψεις που ορίστηκαν στην κλάση, να εφαρμόζει, για το πολυώνυμο p που ορίζει το αντικείμενο, την επαναληπτική σχέση xi+1 = xi - p(xi)/p’(xi) για να υπολογίσει μια πραγματική ρίζα της εξίσωσης p(x)=0.

 

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

Επειδή, στην περίπτωση που το πολυώνυμο δεν έχει πραγματικές ρίζες, η επαναληπτική σχέση δεν συγκλίνει η εφαρμογή της να γίνεται για έναν μέγιστο αριθμό επαναλήψεων. Στην περίπτωση σύγκλησης η διαδικασία να σταματά όταν, για δύο διαδοχικές προσεγγίσεις, η διαφορά xi+1-xi είναι, σε απόλυτη τιμή, μικρότερη από ένα μικρό θετικό αριθμό e.

Με το τέλος του προγράμματος να αποδεσμεύεται η όποια μνήμη δεσμεύτηκε δυναμικά.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: 020400e on December 04, 2012, 16:22:27 pm
Από τις σημειώσεις του Κορτέση ως που πρέπει να ξέρω για να κάνω την άσκηση?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: c0ndemn3d on December 04, 2012, 22:19:04 pm
Επικάλυψη τελεστών και this


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: kostakiss on December 05, 2012, 18:56:19 pm
λεει: Στη συνάρτηση να ορίζεται ένα αντικείμενο στον τύπο της κλάσης στο οποίο να αντιγράφεται, χρησιμοποιώντας τον τελεστή = =, το αντικείμενο p. Στη συνέχεια οι συντελεστές του νέου αντικειμένου να τροποποιούνται έτσι ώστε να σχηματίζεται η παράγωγος k τάξης του p.

το p  αντικειμενο ποιο ειναι??
πρεπει να μπει καποιο this?
δλδ θα ορισουμε ενα αντικειμενο:

polynomial x(degree);

και στην συνεχεια αυτο θα το βαλουμε ισο με τι?
με ενα this? πχ:

x==*this;   ????



Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Mr K on December 05, 2012, 19:03:03 pm
Ναι και στην συνεχεια θα τροποποιεις το x και θα το επιστρέφεις στην main


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Thunderjohn on December 06, 2012, 06:05:44 am
Υπάρχει τρόπος να αποφύγουμε τα constructors για το καινούργιο αντικείμενο μέσα στην operator^ όμως? Δοκίμασα να το δηλώσω ως polynomial* αλλά μετά δεν μου επιτρέπει να κάνω πράξεις, πχ:  *x.n[i ]=*x.n[i+1].


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 06, 2012, 07:16:43 am
Code:
x->n[i]=x->n[i+1]


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: thanospr on December 06, 2012, 16:06:11 pm
Στην operator ^ γραφω
Code:
polynomial *x;
  x==this;
Τι κανω λαθος;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Marco on December 06, 2012, 17:04:51 pm
Στην operator ^ γραφω
Code:
polynomial *x;
  x==this;
Τι κανω λαθος;
Σου βγάζει error όταν κάνεις compile;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: c0ndemn3d on December 06, 2012, 17:09:42 pm
Στην operator ^ γραφω
Code:
polynomial *x;
  x==this;
Τι κανω λαθος;

Να μην το κάνεις αυτό. Ο τελεστής == χρησιμοποιείται για αντικείμενα τύπου polynomial και όχι για pointers σε τέτοια αντικείμενα. Γράψε το ακόλουθο:

polynomial x:
x == (*this);
...


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Marco on December 06, 2012, 17:16:59 pm
Στην operator ^ γραφω
Code:
polynomial *x;
  x==this;
Τι κανω λαθος;

Να μην το κάνεις αυτό. Ο τελεστής == χρησιμοποιείται για αντικείμενα τύπου polynomial και όχι για pointers σε τέτοια αντικείμενα. Γράψε το ακόλουθο:

polynomial x(int);
x == (*temp);
...
Χρειάζεται και ένα όρισμα στο αντικείμενο  ;)
Στη δεύτερη σειρά γιατί έβαλες (*temp) και οχι temp απλά;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: c0ndemn3d on December 06, 2012, 17:33:29 pm
Στην operator ^ γραφω
Code:
polynomial *x;
  x==this;
Τι κανω λαθος;

Να μην το κάνεις αυτό. Ο τελεστής == χρησιμοποιείται για αντικείμενα τύπου polynomial και όχι για pointers σε τέτοια αντικείμενα. Γράψε το ακόλουθο:

polynomial x(int);
x == (*temp);
...
Χρειάζεται και ένα όρισμα στο αντικείμενο  ;)
Στη δεύτερη σειρά γιατί έβαλες (*temp) και οχι temp απλά;

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


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Mr K on December 07, 2012, 01:09:54 am
Υπάρχει τρόπος να αποφύγουμε τα constructors για το καινούργιο αντικείμενο μέσα στην operator^ όμως? Δοκίμασα να το δηλώσω ως polynomial* αλλά μετά δεν μου επιτρέπει να κάνω πράξεις, πχ:  *x.n[i ]=*x.n[i+1].

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


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Mr K on December 07, 2012, 01:12:03 am
Επίσης έχω και μια συνάρτη Α.Σ. που δεν δέχεται όρισμα.

Γιατί;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Xleboniaris on December 07, 2012, 01:14:22 am
Ρε παιδιά θέλω να ρωτήσω σχετικά με την αποδέσμευση μνήμης. Όταν το τρέχω χωρίς τελικών συνθηκών και χωρίς καμία free  τρέχει κανονικά. Όταν όμως χρησιμοποιώ μια τελικών συνθηκών που κάνει μέσα free το πρόγραμμα γρασάρει... Επίσης, αν πάω να βάλω τις free μία μία στον κώδικα δεν ξέρω που ακριβώς να τις βάλω ώστε να αποδεσμεύω σωστά τους πίνακες με τους συντελεστές όλων των αντικειμένων... Μπορεί να βοηθήσει κάποιος??


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Mr K on December 07, 2012, 01:16:50 am
Της main οι δεσμευσεις στο τέλος της main (εννοείται). Αυτες που δεσμεύονται μέσα σε αντικείμενα έχε μια συνάρτηση που να επιστρέφει τον pointer των πινάκων και να τις αποδεσμεύεις στο τέλος της main..μια εναλλακτική αλλά όχι καλύτερη λύση...


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: alepou1 on December 07, 2012, 17:25:12 pm
αν δεν ειναι πολυ χαζο αυτο που λεω,για να ορισω τον τελεστη () πρεπει να εχω ορισμα τον float x;
δηλ.
operator(float x)(αλλα_ορισματα);Ή μηπωσ πρεπει να ειναι
operator ()(float x,ορισματα);
το ιδιο κανω για τον [];


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: johnnykost on December 07, 2012, 18:17:04 pm
αν δεν ειναι πολυ χαζο αυτο που λεω,για να ορισω τον τελεστη () πρεπει να εχω ορισμα τον float x;
δηλ.
operator(float x)(αλλα_ορισματα);Ή μηπωσ πρεπει να ειναι
operator ()(float x,ορισματα);
το ιδιο κανω για τον [];
Όχι operator()(float x)


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: alepou1 on December 07, 2012, 18:23:41 pm
to antikeimeno ths klasis diladi de tha mpei san orisma sthn synarthsh ayth?
epishs xreiazetai synarthsh sthn klash gia na eisagontai oi syntelestes tou polyonymou?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: 020400e on December 07, 2012, 18:50:55 pm
to antikeimeno ths klasis diladi de tha mpei san orisma sthn synarthsh ayth?
epishs xreiazetai synarthsh sthn klash gia na eisagontai oi syntelestes tou polyonymou?
Η συνάρτηση αυτή είναι συνάρτηση κλάσης και γι'αυτό καλείται πάνω σε ένα αντικείμενο της συγκεκριμένης κλάσης,
δε χρειάζεται να βάλεις το αντικείμενο και στα ορίσματα της συνάρτησης. Αν έγραφες float operator()(float x, polynomial p) η συνάρτηση θα δεχόταν 3 ορίσματα: το αντικείμενο για το οποίο καλείς την συνάρτηση, εναν float και άλλο ένα αντικείμενο της κλάσης polynomial.

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


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: alepou1 on December 07, 2012, 18:56:21 pm
thnx!


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: alepou1 on December 07, 2012, 21:01:39 pm
μπορω να χρησιμοποιησω τους τελεστες(),^,[],== μεσα στις συναρτησεις της κλασης;
Δηλαδή π.χ για την επικαλυψη τελεστων [] που μπορει να παρει αποτελεσαματα απο τισ αλλεσ επικαλυψεις;αν ναι πως;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Exomag on December 07, 2012, 22:23:15 pm
μπορω να χρησιμοποιησω τους τελεστες(),^,[],== μεσα στις συναρτησεις της κλασης;
Δηλαδή π.χ για την επικαλυψη τελεστων [] που μπορει να παρει αποτελεσαματα απο τισ αλλεσ επικαλυψεις;αν ναι πως;

Ναι, μπορείς να χρησιμοποιήσεις την επικάλυψη τελεστών που έχεις ορίσει προηγουμένως για την κλάση απλά χρησιμοποιώντας τον αντίστοιχο τελεστή σε συνδυασμό με ένα αντικείμενο αυτής της κλάσης.

ΥΣ: Αν στη συνάρτηση επικάλυψης του τελεστή Α χρησιμοποιείς τον τελεστή Β για τον οποίο έχει ορίσει μια επικάλυψη, και στην επικάλυψη αυτή χρησιμοποιείς τον τελεστή Α, τότε μπαίνεις σε infinite recursion/loop και, λογικά, θα crash-άρει το πρόγραμμα! Aν κάνει compile, that is...


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: New_Entry on December 08, 2012, 14:50:01 pm
Της main οι δεσμευσεις στο τέλος της main (εννοείται). Αυτες που δεσμεύονται μέσα σε αντικείμενα έχε μια συνάρτηση που να επιστρέφει τον pointer των πινάκων και να τις αποδεσμεύεις στο τέλος της main..μια εναλλακτική αλλά όχι καλύτερη λύση...

Μέσα στη main θα χρειαστεί να δεσμεύσουμε μνήμη;;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Mr K on December 08, 2012, 14:57:39 pm
Της main οι δεσμευσεις στο τέλος της main (εννοείται). Αυτες που δεσμεύονται μέσα σε αντικείμενα έχε μια συνάρτηση που να επιστρέφει τον pointer των πινάκων και να τις αποδεσμεύεις στο τέλος της main..μια εναλλακτική αλλά όχι καλύτερη λύση...

Μέσα στη main θα χρειαστεί να δεσμεύσουμε μνήμη;;

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


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: New_Entry on December 08, 2012, 15:05:43 pm
Της main οι δεσμευσεις στο τέλος της main (εννοείται). Αυτες που δεσμεύονται μέσα σε αντικείμενα έχε μια συνάρτηση που να επιστρέφει τον pointer των πινάκων και να τις αποδεσμεύεις στο τέλος της main..μια εναλλακτική αλλά όχι καλύτερη λύση...

Μέσα στη main θα χρειαστεί να δεσμεύσουμε μνήμη;;

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

Nice. Κι εμένα νομίζω ότι δε μου χρειάζεται κτ τέτοιο...


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: thanospr on December 08, 2012, 17:25:44 pm
Με την αναδρομικη σχεση τι πρεπει να κανουμε;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Mr K on December 08, 2012, 17:33:29 pm
Ατερμων loop


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: thanospr on December 08, 2012, 18:12:04 pm
Οκ.Και τι θα κανουμε μεσα στην επαναληψη;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Mr K on December 08, 2012, 18:17:42 pm
Καλεις τον [] μέχρι να επιστρέψει 0 ή τιμή μικρότερη του e


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: thanospr on December 08, 2012, 18:19:53 pm
Οκ ευχαριστω.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: mavroserevos on December 08, 2012, 18:51:26 pm
παιδια εγω οταν κανω malloc εχω μια συνθηκη που ελεγχει αν ο pointer ειναι NULL και εκτυπωνω ενα μηνυμα και κανω exit και οταν τρεχω το προγραμμα μου εκτυπωνει αυτο το μηνυμα και με βγαζει απο το προγραμμα μηπως ξερεις κανεις τι φταιει;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: thanospr on December 08, 2012, 19:02:57 pm
Οταν τρεχω στην main() δυο φορες την b[1] παιρνω διαφορετικα αποτελεσματα ενω δεν εχω αλλαξει τιποτα.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: heavy melon on December 08, 2012, 20:22:55 pm
στο βιβλίο που έχει για επικάλυψη τελεστών?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sexycowboy on December 08, 2012, 20:48:10 pm
στο βιβλίο που έχει για επικάλυψη τελεστών?

Για το "Μάθετε τη C++ από το μηδέν" είναι το κεφάλαιο 13 που ξεκινάει σελίδα 341. Την επικάλυψη αυτός τη λέει υπερφόρτωση.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: johnnykost on December 08, 2012, 22:17:38 pm
παιδια εγω οταν κανω malloc εχω μια συνθηκη που ελεγχει αν ο pointer ειναι NULL και εκτυπωνω ενα μηνυμα και κανω exit και οταν τρεχω το προγραμμα μου εκτυπωνει αυτο το μηνυμα και με βγαζει απο το προγραμμα μηπως ξερεις κανεις τι φταιει;
Λογικά δε θα χεις δώσει τιμή για τη μεταβλητή που αφορά το πλήθος των τιμών στον πίνακα.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: heavy melon on December 08, 2012, 22:27:08 pm
μπορω να χρησιμοποιησω τους τελεστες(),^,[],== μεσα στις συναρτησεις της κλασης;
Δηλαδή π.χ για την επικαλυψη τελεστων [] που μπορει να παρει αποτελεσαματα απο τισ αλλεσ επικαλυψεις;αν ναι πως;

Ναι, μπορείς να χρησιμοποιήσεις την επικάλυψη τελεστών που έχεις ορίσει προηγουμένως για την κλάση απλά χρησιμοποιώντας τον αντίστοιχο τελεστή σε συνδυασμό με ένα αντικείμενο αυτής της κλάσης.

ΥΣ: Αν στη συνάρτηση επικάλυψης του τελεστή Α χρησιμοποιείς τον τελεστή Β για τον οποίο έχει ορίσει μια επικάλυψη, και στην επικάλυψη αυτή χρησιμοποιείς τον τελεστή Α, τότε μπαίνεις σε infinite recursion/loop και, λογικά, θα crash-άρει το πρόγραμμα! Aν κάνει compile, that is...

τελικά το δοκίμασε κανείς αυτό?
υπάρχει πρόβλημα με το να χρησιμοποιήσουμε τον τελεστή ==
μέσα στη συνάρτηση επικάλυψης του [] ?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: johnnykost on December 08, 2012, 22:30:09 pm
Όπως τον χρησιμοποιείς στον τελεστή ^ έτσι και για τον [ ]


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: heavy melon on December 08, 2012, 22:40:11 pm
Όπως τον χρησιμοποιείς στον τελεστή ^ έτσι και για τον [ ]

εγώ λέω, δεδομένου ότι έχουμε ορίσει το τι κάνει ο τελεστής == στην αντίστοιχη συνάρτηση operator==
μπορούμε όταν φτιάχνουμε την operator[] να χρησιμοποιήσουμε έκφραση που θα περιέχει ==
θα το αναγνωρίσει?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: johnnykost on December 08, 2012, 22:46:26 pm
Ε ναι αυτό λέω και στον τελεστή ^ χρησιμοποιείς αυτή την έκφραση δεδομένου ότι έχεις ορίσει τον τελεστή ==. Μπορείς να τον χρησιμοποιήσεις και στον τελεστή [ ]


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: heavy melon on December 08, 2012, 22:52:26 pm
Ε ναι αυτό λέω και στον τελεστή ^ χρησιμοποιείς αυτή την έκφραση δεδομένου ότι έχεις ορίσει τον τελεστή ==. Μπορείς να τον χρησιμοποιήσεις και στον τελεστή [ ]

ναι σόρρυ  :D :D :D
για τον τελεστή ^ εννοούσα αρχικά!  ;)

επίσης,

τον βαθμό του πολυωνύμου να τον ορίσω private ή public?
γιατί τον είχα ορίσει private αρχικά αλλά βλέπω ότι τον χρειάζομαι μέσα στην operator^...


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: varvoutis on December 08, 2012, 22:57:47 pm
επίσης,

τον βαθμό του πολυωνύμου να τον ορίσω private ή public?
γιατί τον είχα ορίσει private αρχικά αλλά βλέπω ότι τον χρειάζομαι μέσα στην operator^...

Άφησέ τον private και φτειάξε μια public member function get_deg() που να σου επιστρέφει τον βαθμό του πολυωνύμου (για να τηρήσεις και την αρχή της ενθυλάκωσης).

Τους συντελεστές του πολυωνύμου πού τους διαβάζετε; στην constructor;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: johnnykost on December 08, 2012, 23:02:00 pm
Ο τελεστής ^ είναι συνάρτηση μέλους της κλάσης οπότε τον χρησιμοποιείς κανονικά.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: johnnykost on December 08, 2012, 23:03:19 pm
Τους συντελεστές του πολυωνύμου πού τους διαβάζετε; στην constructor;
Ναι


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sΚονταριτσα on December 08, 2012, 23:48:49 pm
να ρωτησω κατι?

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


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: heavy melon on December 09, 2012, 02:43:27 am
Code:

float polynomial::operator[](float x)
{
           float parastash;
           parastash=x-(p(x)/p^1(x));
           return parastash;
           
 }


αυτό είναι σωστό?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Mr K on December 09, 2012, 02:55:46 am
αν τρέχει με p ναι αλλα αμφιβάλω, μάλλον με this πρέπει να το κανεις..


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: heavy melon on December 09, 2012, 03:05:27 am
αυτή η συνάρτηση επιστρέφει αριθμό τύπου float έτσι δεν είναι?
αρα τι να επιστρέφει η συνάρτησή μου?δεν πρέπει να επιστρέφει την τιμή της παράστασης που υπολογίζω?
γιαυτό έχω βάλει return parastash;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Mr K on December 09, 2012, 03:12:06 am
η μεταβλητή παράσταση είναι σωστή (η μπορεις να  την παραβλέψεις χρησιμοποιώντας κατευθείαν την return. Αυτό όμως είναι ασήμαντο)

Εγώ λέω για το πολυώνυμο p(x). Δεν πρέπει να δουλεύει εφόσον είσαι μέσα σε αντικείμενο. Νομίζω οτι πρέπει να χρησιμοποιήσεις τον τελεστή this για να κανεις την δουλειά σου.

Αν δουλεύει τότε είναι σωστο..


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: 4emonas on December 09, 2012, 06:52:17 am
Quote from: Mr K link=topic=53746.msg925965#msg925965
Εγώ λέω για το πολυώνυμο p(x). Δεν πρέπει να δουλεύει εφόσον είσαι μέσα σε αντικείμενο. Νομίζω οτι πρέπει να χρησιμοποιήσεις τον τελεστή this για να κανεις την δουλειά σου.

Αν δουλεύει τότε είναι σωστο..

Μπορείς να εξηγήσεις αυτό με το this?


 Επίσης κάτι απλό... Τα ==,(),κτλ που ορίσαμε , μπορούμε να τα χρησιμοποιήσουμε και στις άλλες κλασεις χωρίς να κάνουμε τίποτα άλλο,σωστά?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: c0ndemn3d on December 09, 2012, 12:39:38 pm
Ο τελεστής this αποθηκεύει αυτόματα τη διεύθυνση του αντικειμένου για το οποίο καλέσατε τη μέθοδο. Αν θες να το χρησιμοποιήσεις για κάποιο λόγο, πρέπει να κάνεις dereference τον this.





Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Exomag on December 09, 2012, 13:35:04 pm
Επίσης κάτι απλό... Τα ==,(),κτλ που ορίσαμε , μπορούμε να τα χρησιμοποιήσουμε και στις άλλες κλασεις χωρίς να κάνουμε τίποτα άλλο,σωστά?

Ναι, μπορείς να χρησιμοποιήσεις την επικάλυψη τελεστών που έχεις ορίσει προηγουμένως για την κλάση απλά χρησιμοποιώντας τον αντίστοιχο τελεστή σε συνδυασμό με ένα αντικείμενο αυτής της κλάσης.

ΥΣ: Αν στη συνάρτηση επικάλυψης του τελεστή Α χρησιμοποιείς τον τελεστή Β για τον οποίο έχει ορίσει μια επικάλυψη, και στην επικάλυψη αυτή χρησιμοποιείς τον τελεστή Α, τότε μπαίνεις σε infinite recursion/loop και, λογικά, θα crash-άρει το πρόγραμμα! Aν κάνει compile, that is...


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Exomag on December 09, 2012, 13:38:39 pm
Quote from: Mr K link=topic=53746.msg925965#msg925965
Εγώ λέω για το πολυώνυμο p(x). Δεν πρέπει να δουλεύει εφόσον είσαι μέσα σε αντικείμενο. Νομίζω οτι πρέπει να χρησιμοποιήσεις τον τελεστή this για να κανεις την δουλειά σου.
Αν δουλεύει τότε είναι σωστο..
Μπορείς να εξηγήσεις αυτό με το this?

Θα χρησιμοποιείς το dereference του pointer this (δηλαδή *this) για να αναφέρεσαι στο αντικείμενο που κάλεσε τη μέθοδο/συνάρτηση-μέλος.
Το συγκεκριμένο κομμάτι που ασχολείσαι θα μπορούσε να γίνει:
Code:
float polynomial::operator[](float x)
{
    return (x-((*this)(x))/(((*this)^1)(x)));
}


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: c0ndemn3d on December 09, 2012, 15:38:55 pm
Code:
float polynomial::operator[](float x)
{
    return (x-((*this)(x))/(((*this)^1)(x)));
}

Μην το πάρετε για δεδομένο


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Σαλτιμπάγκος on December 09, 2012, 15:54:55 pm
Να ρωτησω κατι, οι τελεστες == κ ^ δεν πρεπει να επιστρεφουν bool;;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 15:56:22 pm
Να ρωτησω κατι, οι τελεστες == κ ^ δεν πρεπει να επιστρεφουν bool;;

Τυπικα οχι.

Ειναι καλη προγραμματιστικη πρακτικη οι τελεστες που υπερφορτωνεις να εχουν παρομοιες λειτουργιες με τις ηδη υπαρχουσες, αλλα μιλαμε για stk τωρα


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Σαλτιμπάγκος on December 09, 2012, 15:58:31 pm
και τι πρεπει να τους βαλουμε να επιστρεφουν;;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Exomag on December 09, 2012, 16:09:42 pm
και τι πρεπει να τους βαλουμε να επιστρεφουν;;

Ο τελεστής == δεν είναι ανάγκη να επιστρέφει κάποια τιμή, ενώ ο τελεστής ^ πρέπει να επιστρέφει ένα αντικείμενο της κλάσης polynomial.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: varvoutis on December 09, 2012, 17:53:46 pm
παιδια εγω οταν κανω malloc εχω μια συνθηκη που ελεγχει αν ο pointer ειναι NULL και εκτυπωνω ενα μηνυμα και κανω exit και οταν τρεχω το προγραμμα μου εκτυπωνει αυτο το μηνυμα και με βγαζει απο το προγραμμα μηπως ξερεις κανεις τι φταιει;

και εγώ έχω πρόβλημα με τις αποδεσμεύσεις μνήμης...

Εμένα μου βγάζει το παρακάτω μήνυμα...

test(1297) malloc: *** error for object 0x1001008e0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6


Δουλέυω σε Xcode, παίζει να έχει κάποιος καμιά ιδέα για το τι παίζει;  :-\


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: skipper on December 09, 2012, 17:57:23 pm
Εχει κανεις καμια ιδεα για το πως αποδεσμευω τη μνημη του αντικειμενου q (το εχω ορισμενο μεσα στην operator^ για να παιρνει τους συντελεστες του p και να τους κανει συντελεστες της παραγωγου του p);


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Exomag on December 09, 2012, 18:14:13 pm
Εχει κανεις καμια ιδεα για το πως αποδεσμευω τη μνημη του αντικειμενου q (το εχω ορισμενο μεσα στην operator^ για να παιρνει τους συντελεστες του p και να τους κανει συντελεστες της παραγωγου του p);

Μπορείς, αφού το q πάρει τους σωστούς συντελεστές της παραγώγου, να κάνεις:
Code:
(*this)==q;
free(q);
return (*this);

ΠΡΟΣΟΧΗ: Αν το υλοποιήσεις έτσι τότε κάθε φορά που καλείς τον τελεστή ^, θα αλλάζει αυτόματα και το αριστερό όρισμα (όπως πχ ο τελεστής ++).


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 18:20:49 pm
Εχει κανεις καμια ιδεα για το πως αποδεσμευω τη μνημη του αντικειμενου q (το εχω ορισμενο μεσα στην operator^ για να παιρνει τους συντελεστες του p και να τους κανει συντελεστες της παραγωγου του p);

Μπορείς, αφού το q πάρει τους σωστούς συντελεστές της παραγώγου, να κάνεις:
Code:
(*this)==q;
free(q);
return (*this);

ΠΡΟΣΟΧΗ: Αν το υλοποιήσεις έτσι τότε κάθε φορά που καλείς τον τελεστή ^, θα αλλάζει αυτόματα και το αριστερό όρισμα (όπως πχ ο τελεστής ++).

Εναλλακτικα, μπορεις να φτιαξεις εναν destructor για την κλαση σου, που θα κανει αυτη την δουλεια, και θα εκτελειται αυτοματα μολις το αντικειμενο βγει απο το scope (δηλαδη οταν βγεις απο την συναρτηση, εδω). Ετσι υλοποιεις και αυτο που λεει στο τελος (να αποδεσμευεται η μνημη ή κατι τετοιο).


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Exomag on December 09, 2012, 18:25:35 pm
Εχει κανεις καμια ιδεα για το πως αποδεσμευω τη μνημη του αντικειμενου q (το εχω ορισμενο μεσα στην operator^ για να παιρνει τους συντελεστες του p και να τους κανει συντελεστες της παραγωγου του p);

Μπορείς, αφού το q πάρει τους σωστούς συντελεστές της παραγώγου, να κάνεις:
Code:
(*this)==q;
free(q);
return (*this);

ΠΡΟΣΟΧΗ: Αν το υλοποιήσεις έτσι τότε κάθε φορά που καλείς τον τελεστή ^, θα αλλάζει αυτόματα και το αριστερό όρισμα (όπως πχ ο τελεστής ++).

Εναλλακτικα, μπορεις να φτιαξεις εναν destructor για την κλαση σου, που θα κανει αυτη την δουλεια, και θα εκτελειται αυτοματα μολις το αντικειμενο βγει απο το scope (δηλαδη οταν βγεις απο την συναρτηση, εδω). Ετσι υλοποιεις και αυτο που λεει στο τελος (να αποδεσμευεται η μνημη ή κατι τετοιο).

Απλά αυτή η λογική (free μέσα στον constructor) δημιουργεί προβλήματα, εύκολα, αν δεν είναι κάποιος προσεχτικός...


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 18:32:31 pm
Εχει κανεις καμια ιδεα για το πως αποδεσμευω τη μνημη του αντικειμενου q (το εχω ορισμενο μεσα στην operator^ για να παιρνει τους συντελεστες του p και να τους κανει συντελεστες της παραγωγου του p);

Μπορείς, αφού το q πάρει τους σωστούς συντελεστές της παραγώγου, να κάνεις:
Code:
(*this)==q;
free(q);
return (*this);

ΠΡΟΣΟΧΗ: Αν το υλοποιήσεις έτσι τότε κάθε φορά που καλείς τον τελεστή ^, θα αλλάζει αυτόματα και το αριστερό όρισμα (όπως πχ ο τελεστής ++).

Εναλλακτικα, μπορεις να φτιαξεις εναν destructor για την κλαση σου, που θα κανει αυτη την δουλεια, και θα εκτελειται αυτοματα μολις το αντικειμενο βγει απο το scope (δηλαδη οταν βγεις απο την συναρτηση, εδω). Ετσι υλοποιεις και αυτο που λεει στο τελος (να αποδεσμευεται η μνημη ή κατι τετοιο).

Απλά αυτή η λογική (free μέσα στον constructor) δημιουργεί προβλήματα, εύκολα, αν δεν είναι κάποιος προσεχτικός...

Οχι απαραιτητα. Απλα υλοποιεις και εναν copy ctor (και συνηθως χρειαζεται να κανεις overload και τον assignment operator, απλα εδω για καποιον εντελως διεστραμμενο λογο μας λεει να κανουμε overload τον == comparison operator, αλλα με την λειτουργικοτητα του assignment operator, τρεχα γυρευε, οποτε κανουμε την παπια σε αυτο) και κατα 99% δεν εχεις προβληματα. Εκτος αν κανεις κατι πολυ ηλιθιο.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: skipper on December 09, 2012, 18:44:46 pm
Εχει κανεις καμια ιδεα για το πως αποδεσμευω τη μνημη του αντικειμενου q (το εχω ορισμενο μεσα στην operator^ για να παιρνει τους συντελεστες του p και να τους κανει συντελεστες της παραγωγου του p);

Μπορείς, αφού το q πάρει τους σωστούς συντελεστές της παραγώγου, να κάνεις:
Code:
(*this)==q;
free(q);
return (*this);

ΠΡΟΣΟΧΗ: Αν το υλοποιήσεις έτσι τότε κάθε φορά που καλείς τον τελεστή ^, θα αλλάζει αυτόματα και το αριστερό όρισμα (όπως πχ ο τελεστής ++).

Εναλλακτικα, μπορεις να φτιαξεις εναν destructor για την κλαση σου, που θα κανει αυτη την δουλεια, και θα εκτελειται αυτοματα μολις το αντικειμενο βγει απο το scope (δηλαδη οταν βγεις απο την συναρτηση, εδω). Ετσι υλοποιεις και αυτο που λεει στο τελος (να αποδεσμευεται η μνημη ή κατι τετοιο).

Απλά αυτή η λογική (free μέσα στον constructor) δημιουργεί προβλήματα, εύκολα, αν δεν είναι κάποιος προσεχτικός...

Ναι αυτο με τον destructor της κλασης το δοκιμασα αλλα μου εβγαζε αλλα αποτελεσματα που σημαινει οτι λογικα, επειδη η συναρτηση επιστρεφει το (τροποποιημενο) αντικειμενο q, ο destructor κατεστρεφε το αντικειμενο και αποδεσμευε τη μνημη με το που το προγραμμα εβγαινε απο το πεδιο της συναρτησης και προφανως (το αντικειμενο) δεν προλαβαινε να παει μεσα στην operator[]. Exomag δοκιμασα αυτο που προτεινες αλλα μαλλον μετα θα πρεπει να αλλαξω κι αλλα πραγματα στην υλοποιηση γιατι ετσι δε δουλευει σωστα.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Exomag on December 09, 2012, 19:17:16 pm
Exomag δοκιμασα αυτο που προτεινες αλλα μαλλον μετα θα πρεπει να αλλαξω κι αλλα πραγματα στην υλοποιηση γιατι ετσι δε δουλευει σωστα.

Ναι, θα πρέπει να αλλάξεις τα κομμάτια του κώδικα όπου χρησιμοποιείς τον τελεστή ^ για να προνοήσεις για το ότι τροποποιείται το αριστερό όρισμα του τελεστή.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Conflict on December 09, 2012, 19:40:25 pm
Μπορει καποιος να μου εξηγησει τη σχεση με τα Χi+1 kai Xi της main?
Πως θα την χρησιμοποιησουμε αυτη?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: pentium4 on December 09, 2012, 19:53:49 pm
παιδια εγω οταν κανω malloc εχω μια συνθηκη που ελεγχει αν ο pointer ειναι NULL και εκτυπωνω ενα μηνυμα και κανω exit και οταν τρεχω το προγραμμα μου εκτυπωνει αυτο το μηνυμα και με βγαζει απο το προγραμμα μηπως ξερεις κανεις τι φταιει;

και εγώ έχω πρόβλημα με τις αποδεσμεύσεις μνήμης...

Εμένα μου βγάζει το παρακάτω μήνυμα...

test(1297) malloc: *** error for object 0x1001008e0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6


Δουλέυω σε Xcode, παίζει να έχει κάποιος καμιά ιδέα για το τι παίζει;  :-\

μα καμια ρε γαμωτο. εχω γεμισει το προγραμμα με cout για να δω που σκαλωνει  >:( >:(


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 20:00:00 pm
παιδια εγω οταν κανω malloc εχω μια συνθηκη που ελεγχει αν ο pointer ειναι NULL και εκτυπωνω ενα μηνυμα και κανω exit και οταν τρεχω το προγραμμα μου εκτυπωνει αυτο το μηνυμα και με βγαζει απο το προγραμμα μηπως ξερεις κανεις τι φταιει;

και εγώ έχω πρόβλημα με τις αποδεσμεύσεις μνήμης...

Εμένα μου βγάζει το παρακάτω μήνυμα...

test(1297) malloc: *** error for object 0x1001008e0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6


Δουλέυω σε Xcode, παίζει να έχει κάποιος καμιά ιδέα για το τι παίζει;  :-\

μα καμια ρε γαμωτο. εχω γεμισει το προγραμμα με cout για να δω που σκαλωνει  >:( >:(

Δεν θα βγαλεις ακρη ετσι. Το IDE σου εχει ενα debug mode. Χρησιμοποιησε το.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Alice_8 on December 09, 2012, 20:03:52 pm
Παιδιά να ρωτήσω κάτι για την operator ^ ?
Ειναι σωστη σύνταξη η εξής?
 polynomial polynomial::operator^(int f){
              polynomial x;
              x == (*this);   
              x->v[f]=x->v[f+1];
              return x;
}

Δημιουργω αντικ. polynomial το x  , του δίνω τις τιμες του p και απο8ηκευω τις παραγωγους...???


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 20:08:56 pm
Παιδιά να ρωτήσω κάτι για την operator ^ ?
Ειναι σωστη σύνταξη η εξής?
 polynomial polynomial::operator^(int f){
              polynomial x;
              x == (*this);   
              x->v[f]=x->v[f+1];
              return x;
}

Δημιουργω αντικ. polynomial το x  , του δίνω τις τιμες του p και απο8ηκευω τις παραγωγους...???

Πρωτα απ' ολα, το x ειναι αντικειμενο τυπου polynomial και οχι pointer σε τετοιο, οποτε θα πρεπει να γραψεις
Code:
x.v[f]
αντι για
Code:
x->v[f]
Δευτερον, το x ειναι περιττο - σβησε την πρωτη και δευτερη γραμμη, και στην τριτη αντικατεστησε (ετσι ακριβως οπως το εχεις τωρα) οπου x το this. Στο τελος θα επιστρεψεις το (*this).

edit: Επισης, θα ηταν χρησιμη μια μικρη επισκεψη στο βιβλιο του Λογισμου 1.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: pentium4 on December 09, 2012, 20:13:42 pm
παιδια εγω οταν κανω malloc εχω μια συνθηκη που ελεγχει αν ο pointer ειναι NULL και εκτυπωνω ενα μηνυμα και κανω exit και οταν τρεχω το προγραμμα μου εκτυπωνει αυτο το μηνυμα και με βγαζει απο το προγραμμα μηπως ξερεις κανεις τι φταιει;

και εγώ έχω πρόβλημα με τις αποδεσμεύσεις μνήμης...

Εμένα μου βγάζει το παρακάτω μήνυμα...

test(1297) malloc: *** error for object 0x1001008e0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6


Δουλέυω σε Xcode, παίζει να έχει κάποιος καμιά ιδέα για το τι παίζει;  :-\

μα καμια ρε γαμωτο. εχω γεμισει το προγραμμα με cout για να δω που σκαλωνει  >:( >:(

Δεν θα βγαλεις ακρη ετσι. Το IDE σου εχει ενα debug mode. Χρησιμοποιησε το.

λοιπον το προβλημα μου λυθηκε και τρεχει το προγραμμα. εκανα realloc χωρις πρωτα να εχω κανει malloc. αυτα.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Alice_8 on December 09, 2012, 20:19:07 pm
Παιδιά να ρωτήσω κάτι για την operator ^ ?
Ειναι σωστη σύνταξη η εξής?
 polynomial polynomial::operator^(int f){
              polynomial x;
              x == (*this);   
              x->v[f]=x->v[f+1];
              return x;
}

Δημιουργω αντικ. polynomial το x  , του δίνω τις τιμες του p και απο8ηκευω τις παραγωγους...???

Πρωτα απ' ολα, το x ειναι αντικειμενο τυπου polynomial και οχι pointer σε τετοιο, οποτε θα πρεπει να γραψεις
Code:
x.v[f]
αντι για
Code:
x->v[f]
Δευτερον, το x ειναι περιττο - σβησε την πρωτη και δευτερη γραμμη, και στην τριτη αντικατεστησε (ετσι ακριβως οπως το εχεις τωρα) οπου x το this. Στο τελος θα επιστρεψεις το (*this).

edit: Επισης, θα ηταν χρησιμη μια μικρη επισκεψη στο βιβλιο του Λογισμου 1.



Σ'ευχαριστώ πολύ !
p.s.; για την επίσκεψη στο βιβλίου του Λογισμού αναφέρεσαι στο να θυμηθούμε πως ακριβώς είναι οι πράξεις με πολυώνυμα?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 20:20:51 pm
Παιδιά να ρωτήσω κάτι για την operator ^ ?
Ειναι σωστη σύνταξη η εξής?
 polynomial polynomial::operator^(int f){
              polynomial x;
              x == (*this);   
              x->v[f]=x->v[f+1];
              return x;
}

Δημιουργω αντικ. polynomial το x  , του δίνω τις τιμες του p και απο8ηκευω τις παραγωγους...???

Πρωτα απ' ολα, το x ειναι αντικειμενο τυπου polynomial και οχι pointer σε τετοιο, οποτε θα πρεπει να γραψεις
Code:
x.v[f]
αντι για
Code:
x->v[f]
Δευτερον, το x ειναι περιττο - σβησε την πρωτη και δευτερη γραμμη, και στην τριτη αντικατεστησε (ετσι ακριβως οπως το εχεις τωρα) οπου x το this. Στο τελος θα επιστρεψεις το (*this).

edit: Επισης, θα ηταν χρησιμη μια μικρη επισκεψη στο βιβλιο του Λογισμου 1.


Σ'ευχαριστώ πολύ !
p.s.; για την επίσκεψη στο βιβλίου του Λογισμού αναφέρεσαι στο να θυμηθούμε πως ακριβώς είναι οι πράξεις με πολυώνυμα?
Συγκεκριμενα η παραγωγιση...


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sΚονταριτσα on December 09, 2012, 20:21:29 pm
σαυτο το κομματι κωδικα εχει κανεις καμια ιδεα γιατι μπορει να χτυπαει?

float polynomial::operator()(float x)
{
    float sum,kapou;
    int i;

    for (i=0;i<vathmos+1;i++)
    {
        kapou= polywnymo*(x^(vathmos-i)); // gt thewrhsame oti ston pinaka ksekiname apo to stoixeio tou pio megalou (se dynamh) orou ;   
        sum=sum+kapou;
    }
    return sum;
}


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 20:24:46 pm
σαυτο το κομματι κωδικα εχει κανεις καμια ιδεα γιατι μπορει να χτυπαει?

float polynomial::operator()(float x)
{
    float sum,kapou;
    int i;

    for (i=0;i<vathmos+1;i++)
    {
        kapou= polywnymo*(x^(vathmos-i)); // gt thewrhsame oti ston pinaka ksekiname apo to stoixeio tou pio megalou (se dynamh) orou ;   
        sum=sum+kapou;
    }
    return sum;
}

hint hint: ο τελεστης ^ δεν κανει αυτο που νομιζεις.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sΚονταριτσα on December 09, 2012, 20:26:02 pm
ε και γιατι δεν μου λες τι πρεπει να κανω για να υψωσω σε δυναμη?εγω νομιζα οτι αυτο επρεπε να χρησιμοποιησω.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 20:27:12 pm
ε και γιατι δεν μου λες τι πρεπει να κανω για να υψωσω σε δυναμη?εγω νομιζα οτι αυτο επρεπε να χρησιμοποιησω.

Συναρτηση pow, κεφαλιδα cmath.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sΚονταριτσα on December 09, 2012, 20:28:47 pm
οκ θενκ γιου.
αυτο ειναι σε φαση για να υψωνει σε δυναμη ας πουμε?
για να μην μπερδευει τον τελεστη ^ επειδη σε αυτον εχω ορισει συναρτηση επικλαυψης?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 20:29:52 pm
οκ θενκ γιου.
αυτο ειναι σε φαση για να υψωνει σε δυναμη ας πουμε?
για να μην μπερδευει τον τελεστη ^ επειδη σε αυτον εχω ορισει συναρτηση επικλαυψης?

Ξαναλεω: ο τελεστης ^ δεν κανει αυτο που νομιζεις.
hint hint: XOR


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sΚονταριτσα on December 09, 2012, 20:32:05 pm
Οκ ρε φιλε και που να το ξερω?απλα υπεθεσα και ρωτησα.σευχαριστω πολυ για την βοηθεια σου


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Exomag on December 09, 2012, 20:35:44 pm
οκ θενκ γιου.
αυτο ειναι σε φαση για να υψωνει σε δυναμη ας πουμε?
για να μην μπερδευει τον τελεστη ^ επειδη σε αυτον εχω ορισει συναρτηση επικλαυψης?

Εφόσον κάνεις include τον header math.h μπορείς να υψώνεις σε δύναμη μέσω της συνάρτησης pow() (http://www.cplusplus.com/reference/cmath/pow/). Ο τελεστής ^ χρησιμοποιείται για πράξεις μεταξύ byte, εκτός και αν τον κάνεις επικάλυψη...


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Alice_8 on December 09, 2012, 20:36:11 pm
Infinite Loop , τώρα κατάλαβα τι εννοούσες με την επίσκεψη στο Λογισμο 1 :) (αρχικα πιστεψα πως ειρωνευοσουν) !
Δεν καταλαβαινω πως στην main χρησιμοποιωντας αυτην την παρασταση θα βρουμε την ριζα του p(x)=0??
ουσιαστικα ειναι του τυπου
x2 = x1 - p(x1)/p’(x1)
Αυτο τι μας δινει???


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 20:46:38 pm
Infinite Loop , τώρα κατάλαβα τι εννοούσες με την επίσκεψη στο Λογισμο 1 :) (αρχικα πιστεψα πως ειρωνευοσουν) !
Δεν καταλαβαινω πως στην main χρησιμοποιωντας αυτην την παρασταση θα βρουμε την ριζα του p(x)=0??
ουσιαστικα ειναι του τυπου
x2 = x1 - p(x1)/p’(x1)
Αυτο τι μας δινει???

Ξεκινας απο μια αρχικη προσεγγιση για την ριζα (εστω x0). Επειδη ειναι προσεγγιση, κατα πασα πιθανοτητα p(x0) != 0. Οποτε οριζεις μια καλυτερη προσεγγιση, την x1 = x0 - p(x0)/p'(x0). Και παλι θα ειναι μαλλον p(x1) != 0, οποτε οριζεις μια ακομα καλυτερη προσεγγιση, την x2 = x1 - p(x1)/p'(x1), και ουτω καθεξης. Η Αριθμητικη Αναλυση λεει οτι υπο προϋποθεσεις, η ακολουθια {xn}n συγκλινει στην ριζα της p(x)=0. Εσυ τωρα δεν θελεις (και δεν μπορεις να εχεις) τελεια ακριβεια, αρα σταματας το ψαξιμο οταν η απολυτη διαφορα των τιμων σε δυο διαδοχικες επαναληψεις γινει μικροτερη απο μια τιμη e. Και για να μην εχεις θεματα μη συγκλισης, σταματας το ψαξιμο μετα απο εναν αριθμο επαναληψεων. Το πώς θα το προγραμματισεις ειναι δικο σου θεμα, αλλα ο πιο ευκολος τροπος περιλαμβανει μια while, στην οποια το καινουργιο xi θα παιρνει την τιμη που ειχε στην προηγουμενη επαναληψη το παλιο xi, και θα υπολογιζεις το xi+1 βασει του καινουργιου xi.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Alice_8 on December 09, 2012, 20:56:58 pm
σ υπερ ευχαριστω!


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Σαλτιμπάγκος on December 09, 2012, 21:25:04 pm
στη main οταν δημιουργω ενα αντικειμενο τυπου polynomial μου βγαζει "no matching function to call polynomial..." ενω αν βαλω pointer τυπου polynomial δεν χτυπαει ο compiler...τι παιζει;;


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sΚονταριτσα on December 09, 2012, 21:25:45 pm
ακριβως το ιδιο προβλημα βγαζει και σεμενα!
δεν ξερω τι παιζει ρε φιλε...


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 21:41:30 pm
στη main οταν δημιουργω ενα αντικειμενο τυπου polynomial μου βγαζει "no matching function to call polynomial..." ενω αν βαλω pointer τυπου polynomial δεν χτυπαει ο compiler...τι παιζει;;

Μηπως δεν εχεις ορισει ctor για την κλαση;

(ή τουλαχιστον καταλληλο ctor, με καταλληλα ορισματα)


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sΚονταριτσα on December 09, 2012, 22:10:03 pm
τι ειναι ctor?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: fasoul on December 09, 2012, 22:13:22 pm
προφανώς εννοεί constructor??? :???:


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sΚονταριτσα on December 09, 2012, 22:15:05 pm
στη main οταν δημιουργω ενα αντικειμενο τυπου polynomial μου βγαζει "no matching function to call polynomial..." ενω αν βαλω pointer τυπου polynomial δεν χτυπαει ο compiler...τι παιζει;;

Μηπως δεν εχεις ορισει ctor για την κλαση;

(ή τουλαχιστον καταλληλο ctor, με καταλληλα ορισματα)

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


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 22:52:09 pm
στη main οταν δημιουργω ενα αντικειμενο τυπου polynomial μου βγαζει "no matching function to call polynomial..." ενω αν βαλω pointer τυπου polynomial δεν χτυπαει ο compiler...τι παιζει;;

Μηπως δεν εχεις ορισει ctor για την κλαση;

(ή τουλαχιστον καταλληλο ctor, με καταλληλα ορισματα)

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

Πώς δηλωνεις το αντικειμενο σου στην main();


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sΚονταριτσα on December 09, 2012, 23:05:26 pm
polynomial p;

ας πουμε..πως αλλιως?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: varvoutis on December 09, 2012, 23:28:42 pm
παιδια εγω οταν κανω malloc εχω μια συνθηκη που ελεγχει αν ο pointer ειναι NULL και εκτυπωνω ενα μηνυμα και κανω exit και οταν τρεχω το προγραμμα μου εκτυπωνει αυτο το μηνυμα και με βγαζει απο το προγραμμα μηπως ξερεις κανεις τι φταιει;

και εγώ έχω πρόβλημα με τις αποδεσμεύσεις μνήμης...

Εμένα μου βγάζει το παρακάτω μήνυμα...

test(1297) malloc: *** error for object 0x1001008e0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6


Δουλέυω σε Xcode, παίζει να έχει κάποιος καμιά ιδέα για το τι παίζει;  :-\

μα καμια ρε γαμωτο. εχω γεμισει το προγραμμα με cout για να δω που σκαλωνει  >:( >:(

Δεν θα βγαλεις ακρη ετσι. Το IDE σου εχει ενα debug mode. Χρησιμοποιησε το.

λοιπον το προβλημα μου λυθηκε και τρεχει το προγραμμα. εκανα realloc χωρις πρωτα να εχω κανει malloc. αυτα.

και το δικό μου λύθηκε.

εγκατέλειψα την αρχική υλοποίηση στην οποία είχα αποδέσμευση μνήμης του πίνακα των συντελεστών πολυωνύμου μέσα στην destructor και χρησιμοποίησα την αποδέσμευση μνήμης λίγο πριν τερματίσει το πρόγραμμα στην main().

Το άλλο μου χτυπούσε μέσα στην επικάλυψη του τελεστή ^

Infinite Loop να σε ρωτήσω (επειδή φαίνεται ξέρεις κάτι παραπάνω) σ αυτήν την υλοποίηση

Παιδιά να ρωτήσω κάτι για την operator ^ ?
Ειναι σωστη σύνταξη η εξής?
 polynomial polynomial::operator^(int f){
              polynomial x;
              x == (*this);  
              x->v[f]=x->v[f+1];
              return x;
}

Δημιουργω αντικ. polynomial το x  , του δίνω τις τιμες του p και απο8ηκευω τις παραγωγους...???

Πρωτα απ' ολα, το x ειναι αντικειμενο τυπου polynomial και οχι pointer σε τετοιο, οποτε θα πρεπει να γραψεις
Code:
x.v[f]
αντι για
Code:
x->v[f]
Δευτερον, το x ειναι περιττο - σβησε την πρωτη και δευτερη γραμμη, και στην τριτη αντικατεστησε (ετσι ακριβως οπως το εχεις τωρα) οπου x το this. Στο τελος θα επιστρεψεις το (*this).

edit: Επισης, θα ηταν χρησιμη μια μικρη επισκεψη στο βιβλιο του Λογισμου 1.

Εκτός από τα λάθη που επισημαίνεις, αυτό
Code:
x.v[f]
δεν καταστρατηγεί την αρχή της ενθυλάκωσης;

Δηλαδή δε θα ήταν προτιμότερο να έχουμε μία get_v() η οποία να επιστρέφει τον pointer του πίνακα με τους συντελεστές και μετά να το επεξεργαστούμε;

Επειδή το έχω δει και στις υλοποιήσεις του stk και με παραξένεψε...



Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: heavy melon on December 09, 2012, 23:31:41 pm
ε και γιατι δεν μου λες τι πρεπει να κανω για να υψωσω σε δυναμη?εγω νομιζα οτι αυτο επρεπε να χρησιμοποιησω.

Συναρτηση pow, κεφαλιδα cmath.

μαλάκα το λεγα? το λεγα!  :P

(στη θείτσα πάει!)


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 23:32:30 pm
παιδια εγω οταν κανω malloc εχω μια συνθηκη που ελεγχει αν ο pointer ειναι NULL και εκτυπωνω ενα μηνυμα και κανω exit και οταν τρεχω το προγραμμα μου εκτυπωνει αυτο το μηνυμα και με βγαζει απο το προγραμμα μηπως ξερεις κανεις τι φταιει;

και εγώ έχω πρόβλημα με τις αποδεσμεύσεις μνήμης...

Εμένα μου βγάζει το παρακάτω μήνυμα...

test(1297) malloc: *** error for object 0x1001008e0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6


Δουλέυω σε Xcode, παίζει να έχει κάποιος καμιά ιδέα για το τι παίζει;  :-\

μα καμια ρε γαμωτο. εχω γεμισει το προγραμμα με cout για να δω που σκαλωνει  >:( >:(

Δεν θα βγαλεις ακρη ετσι. Το IDE σου εχει ενα debug mode. Χρησιμοποιησε το.

λοιπον το προβλημα μου λυθηκε και τρεχει το προγραμμα. εκανα realloc χωρις πρωτα να εχω κανει malloc. αυτα.

και το δικό μου λύθηκε.

εγκατέλειψα την αρχική υλοποίηση στην οποία είχα αποδέσμευση μνήμης του πίνακα των συντελεστών πολυωνύμου μέσα στην destructor και χρησιμοποίησα την αποδέσμευση μνήμης λίγο πριν τερματίσει το πρόγραμμα στην main().

Το άλλο μου χτυπούσε μέσα στην επικάλυψη του τελεστή ^

Infinite Loop να σε ρωτήσω (επειδή φαίνεται ξέρεις κάτι παραπάνω) σ αυτήν την υλοποίηση

Παιδιά να ρωτήσω κάτι για την operator ^ ?
Ειναι σωστη σύνταξη η εξής?
 polynomial polynomial::operator^(int f){
              polynomial x;
              x == (*this);   
              x->v[f]=x->v[f+1];
              return x;
}

Δημιουργω αντικ. polynomial το x  , του δίνω τις τιμες του p και απο8ηκευω τις παραγωγους...???

Πρωτα απ' ολα, το x ειναι αντικειμενο τυπου polynomial και οχι pointer σε τετοιο, οποτε θα πρεπει να γραψεις
Code:
x.v[f]
αντι για
Code:
x->v[f]
Δευτερον, το x ειναι περιττο - σβησε την πρωτη και δευτερη γραμμη, και στην τριτη αντικατεστησε (ετσι ακριβως οπως το εχεις τωρα) οπου x το this. Στο τελος θα επιστρεψεις το (*this).

edit: Επισης, θα ηταν χρησιμη μια μικρη επισκεψη στο βιβλιο του Λογισμου 1.

Εκτός από τα λάθη που επισημαίνεις, αυτό
Code:
x.v[f]
δεν καταστρατηγεί την αρχή της ενθυλάκωσης;

Δηλαδή δε θα ήταν προτιμότερο να έχουμε μία get_v() η οποία να επιστρέφει τον pointer του πίνακα με τους συντελεστές και μετά να το επεξεργαστούμε;

Επειδή το έχω δει και στις υλοποιήσεις του stk και με παραξένεψε...



Φυσικα, ολες οι μεταβλητες μιας κλασης ειναι private. Απλα δεν εδωσα σημασια εκεινη την στιγμη.

Edit: για την συγκεκριμενη περιπτωση, δεν χρειαζεται getter (και νομιζω δεν χρειαζεται καθολου σε ολη την ασκηση), διοτι προφανως εχεις προσβαση στα private στοιχεια του *this! Σε καποια αλλη περιπτωση ισως να χρειαζοταν, αλλα κατα 99% δεν θα ειχες getter που να επιστρεφει pointer σε πινακα - αυτο ουσιαστικα φανερωνει την εσωτερικη δομη της κλασης, κατι που δεν το θες (δεν ξερω αν ο stk το ονομαζει αυτο αρχη της ενθυλακωσης, ας το λεει και Μητσο, σημασια εχει οτι αυτη ειναι η στανταρ OOP πρακτικη). Αν χρειαζοταν να επιστρεφει κατι, θα ηταν ο συντελεστης του πολυωνυμου, δηλαδη κατι σαν
Code:
float polynomial::get_coeff(int i) { return coeff[i]; }

polynomial p;

ας πουμε..πως αλλιως?

Πώς αλλιως; Αφου δεν εχεις ορισει default ctor (χωρις ορισματα), πας να τον καλεσεις και σου χτυπαει :P Δοκιμασε polynomial p(5); ή polynomial p(deg); οπου deg ενας runtime ακεραιος ξερω γω.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: sΚονταριτσα on December 09, 2012, 23:41:30 pm
αυτο το σκεφτηκα αλλα μπερδευομουν.
δλδ μπορω να τον δηλωσω ως

Polynomial p(degree) και degree ο βαθμος του πολυωνυμου που εχω δηλωσει στην κλαση?


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 23:45:45 pm
αυτο το σκεφτηκα αλλα μπερδευομουν.
δλδ μπορω να τον δηλωσω ως

Polynomial p(degree) και degree ο βαθμος του πολυωνυμου που εχω δηλωσει στην κλαση?

(αν καταλαβα τι εννοεις) Ναι. Μεσα στην κλαση σου θα εχεις στα public δεδομενα την δηλωση του ctor polynomial(int deg) (που θα την υλοποιεις παρακατω). Αυτον τον ctor σου ζηταει, αυτον χρειαζεσαι, και αυτον θες.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: heavy melon on December 09, 2012, 23:57:18 pm
μικρή λεπτομέρεια αλλά μπορούμε να δηλώσουμε το i μέσα στη loop?

for (int i = 0; i < vathmos+1; i++)


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 09, 2012, 23:59:43 pm
μικρή λεπτομέρεια αλλά μπορούμε να δηλώσουμε το i μέσα στη loop?

for (int i = 0; i < vathmos+1; i++)

Φυσικα!


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Σαλτιμπάγκος on December 10, 2012, 00:02:29 am
μικρή λεπτομέρεια αλλά μπορούμε να δηλώσουμε το i μέσα στη loop?

for (int i = 0; i < vathmos+1; i++)

ναι , αν  κ δεν νομιζω ο κορτεσης να το προτιμα


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: heavy melon on December 10, 2012, 00:39:34 am
Code:
float polynomial::operator[](float x)
{
           return (x-((*this(x))/(*this^1(x))));
}
 

και μου βγάζει " `this' cannot be used as a function "


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: skipper on December 10, 2012, 00:58:41 am
Code:
float polynomial::operator[](float x)
{
           return (x-((*this(x))/(*this^1(x))));
}
 

και μου βγάζει " `this' cannot be used as a function "

Παρενθεσεις! 8))


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: heavy melon on December 10, 2012, 01:14:51 am
Code:
float polynomial::operator[](float x)
{
           return (x-((*this(x))/(*this^1(x))));
}
 

και μου βγάζει " `this' cannot be used as a function "

Παρενθεσεις! 8))

σωστόςςςς.

επίσης, someone tell me, μπορώ να έχω 2 constructors?
Είχα αρχικά έναν και ήθελα να καλείται όταν φτιάχνω αντικείμενα
μέσα στον constructor μου λοιπόν, ζητάω από τον χρήστη να δώσει τους συντελεστές του πολυωνύμου
αλλά κάτι παίζει και καλείται ξανά μέσα στον operator^ ο ctor
όταν κάνω την αντιγραφή σε αντικείμενο newobj==*this;
και εκεί ξαναζητάει από τον χρήστη συντελεστές...
πράγμα που δεν θέλω!

....την ιστορία της ζωής μου έγραψα πάλι..... :P


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Infinite Loop on December 10, 2012, 01:26:31 am
Code:
float polynomial::operator[](float x)
{
           return (x-((*this(x))/(*this^1(x))));
}
 

και μου βγάζει " `this' cannot be used as a function "

Παρενθεσεις! 8))

σωστόςςςς.

επίσης, someone tell me, μπορώ να έχω 2 constructors?
Είχα αρχικά έναν και ήθελα να καλείται όταν φτιάχνω αντικείμενα
μέσα στον constructor μου λοιπόν, ζητάω από τον χρήστη να δώσει τους συντελεστές του πολυωνύμου
αλλά κάτι παίζει και καλείται ξανά μέσα στον operator^ ο ctor
όταν κάνω την αντιγραφή σε αντικείμενο newobj==*this;
και εκεί ξαναζητάει από τον χρήστη συντελεστές...
πράγμα που δεν θέλω!

....την ιστορία της ζωής μου έγραψα πάλι..... :P

Μπορεις:
-να υπερφορτωσεις τον ctor (ακριβως οπως υπερφορτωνεις μια οποιαδηποτε συναρτηση)
ή
-να μην εχεις cin στον ctor, αλλα σε ξεχωριστη συναρτηση. ο ctor δεν ειναι για αυτη την δουλεια, ειναι για να αρχικοποιει το αντικειμενο - οχι να δινει τιμες σε αυτο, ασχετα με το τι σε κανει να πιστευεις ο stk.


Title: Re: [C++] Άσκηση D - 2012/2013 - Προθεσμία 09/12
Post by: Mr K on December 11, 2012, 13:52:04 pm
Και η λύση..