THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: megali mpougatsa on November 15, 2012, 19:44:18 pm



Title: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: megali mpougatsa on November 15, 2012, 19:44:18 pm
Συζήτηση και απορίες για τη δεύτερη εργασία. Τα άσχετα σχόλια θα διαγράφονται (εκτός και αν είναι αστεία). Εκ του συντονισμο


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: thanospr on November 17, 2012, 15:42:14 pm
Αν καταλαβα καλα θα ρωταμε στην main ποσα προιοντα τυπου 1,2,3 υπαρχουν στο καταστημα και θα τρεχουμε αναλογως τον τυπο την αντιστοιχη σ.α.σ;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 17, 2012, 16:48:27 pm
Αν καταλαβα καλα θα ρωταμε στην main ποσα προιοντα τυπου 1,2,3 υπαρχουν στο καταστημα και θα τρεχουμε αναλογως τον τυπο την αντιστοιχη σ.α.σ;

Για κάθε ένα από τα προϊόντα του καταστήματος (τον αριθμό των οποίων θα εισάγει ο χρήστης):
  • Θα εισάγει ο χρήστης σε ποια κατηγορία ανήκει το εκάστοτε προϊόν (1, 2 ή 3)
  • Θα εισάγει ο χρήστης όλα τα υπόλοιπα στοιχεία που χρειάζονται για ένα προϊόν της κατηγορίας που επέλεξε
  • Θα καλείται ο κατάλληλος constructor (ανάλογα με την κατηγορία του προϊόντος), που θα έχει ως ορίσματα τα στοιχεία του προϊόντος που έδωσε ο χρήστης


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: thanospr on November 17, 2012, 17:10:51 pm
Οκ.Ευχαριστω πολυ.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Panos_Kanel on November 19, 2012, 17:25:27 pm
Οποιος μπορει να βοηθήσει σχετικά με την αρχικοποιηση...
έχω τα εξής

product *prodarray;
malloc...
for(i=0;i<number;i++){
if type bla bla bla{
product prodarray[ i ] (a,b,c);
}
}
Είναι λάθος φαντάζομαι η αρχικοποίηση των αντικειμένων του πινακα με αυτον τον τρόπο γιατί ο compiler χτυπαει..ξέρει κανείς πως το κάνουμε ;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: johnnykost on November 19, 2012, 18:02:47 pm
Οποιος μπορει να βοηθήσει σχετικά με την αρχικοποιηση...
έχω τα εξής

product *prodarray;
malloc...
for(i=0;i<number;i++){
if type bla bla bla{
product prodarray[ i ] (a,b,c);
}
}
Είναι λάθος φαντάζομαι η αρχικοποίηση των αντικειμένων του πινακα με αυτον τον τρόπο γιατί ο compiler χτυπαει..ξέρει κανείς πως το κάνουμε ;
Κάνε αυτό:
product temp(a,b,c);
prodarray(i)=temp;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Panos_Kanel on November 19, 2012, 18:05:54 pm
σοβαρά τώρα ..έχασα 2-3 ώρες γι αυτό   ;D
ευχαριστώ! :D


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: bakeneko on November 19, 2012, 18:14:56 pm
Υπάρχει κάποιος λόγος να κάνουμε 3 διαφορετικούς κονστράκτορς; Αφού ουσιαστικά το μόνο που υπάρχει διαφορετικό είναι ότι η κατηγορία 2 απλά έχει τη δυνατότητα προσφοράς ενώ τα άλλα όχι, κάτι που "επιλύεται" απλά με ένα if... ανέφερε ότι πρέπει και κάποια άλλη μεταβλητή πρέπει να είναι διαφορετική;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Infinite Loop on November 19, 2012, 18:16:06 pm
Οποιος μπορει να βοηθήσει σχετικά με την αρχικοποιηση...
έχω τα εξής

product *prodarray;
malloc...
for(i=0;i<number;i++){
if type bla bla bla{
product prodarray[ i ] (a,b,c);
}
}
Είναι λάθος φαντάζομαι η αρχικοποίηση των αντικειμένων του πινακα με αυτον τον τρόπο γιατί ο compiler χτυπαει..ξέρει κανείς πως το κάνουμε ;
Κάνε αυτό:
product temp(a,b,c);
prodarray(i)=temp;

Ουτε καν:

Code:
prodarray[i] = product(a,b,c);


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Infinite Loop on November 19, 2012, 18:16:59 pm
Υπάρχει κάποιος λόγος να κάνουμε 3 διαφορετικούς κονστράκτορς; Αφού ουσιαστικά το μόνο που υπάρχει διαφορετικό είναι ότι η κατηγορία 2 απλά έχει τη δυνατότητα προσφοράς ενώ τα άλλα όχι, κάτι που "επιλύεται" απλά με ένα if... ανέφερε ότι πρέπει και κάποια άλλη μεταβλητή πρέπει να είναι διαφορετική;

Υποθετω οτι θελει να το κανουμε ετσι για να μας μυησει στα αποκρυφα μυστηρια της υπερφορτωσης... ::)


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: bakeneko on November 19, 2012, 18:18:15 pm
Α οκ, έτσι βγάζει νόημα :P


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: dimi93gr on November 19, 2012, 22:44:24 pm
Δεν χρειάζεται παραγόμενες κλάσσεις;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 20, 2012, 00:35:31 am
Δεν χρειάζεται παραγόμενες κλάσσεις;

Απ' ότι λέει η εκφώνηση εγώ καταλαβαίνω πως όχι, δεν χρειάζεται παραγόμενες κλάσεις...


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Luffy on November 20, 2012, 15:52:27 pm
απο οτι καταλαβα ο κωδικος καθε προιοντος δηλωνει σε ποια κατηγορια ανηκει, σωστα?
Δηλαδη θα ειναι 1,2 η 3.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: varvoutis on November 20, 2012, 16:26:59 pm
απο οτι καταλαβα ο κωδικος καθε προιοντος δηλωνει σε ποια κατηγορια ανηκει, σωστα?
Δηλαδη θα ειναι 1,2 η 3.

Δε νομίζω. Tουλάχιστον εγώ το υλοποίησα διαφορετικά. Ο κωδικός του κάθε προϊόντος, υποθέτω, ότι είναι ένα barcode σαν αυτά στο super market. Δηλαδή, μπορεί ένα απορρυπαντικό ρούχων να ανήκει στην κατηγορία 1 (να έχει id=1) και να έχει και barcode=12345, ενώ άλλης μάρκας απορρυπαντικό ρούχων να ανήκει επίσης στην κατηγορία 1 (id προϊόντος 1) αλλά να έχει barcode=67890.

Εγώ έχω μια απορία στο όρισμα της συνάρτησης sale(). Λέει ότι αυτό θα είναι ένα αντικείμενο τύπου product. Έτσι όμως αυτό που θα επεξεργάζεται η sale() θα είναι ένα αντίγραφο του αντικειμένου που υπάρχει στον πίνακα αντικειμένων και όχι το ίδιο το αντικείμενο. Επομένως πώς θα αλλάζουμε το απόθεμα; Μάλλον σαν όρισμα θέλει έναν pointer τύπου product, ή τώρα που το ξανασκέφτομαι το όρισμα πρέπει να είναι μια αναφορική παράμετρος.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: varvoutis on November 20, 2012, 16:30:35 pm
Οποιος μπορει να βοηθήσει σχετικά με την αρχικοποιηση...
έχω τα εξής

product *prodarray;
malloc...
for(i=0;i<number;i++){
if type bla bla bla{
product prodarray[ i ] (a,b,c);
}
}
Είναι λάθος φαντάζομαι η αρχικοποίηση των αντικειμένων του πινακα με αυτον τον τρόπο γιατί ο compiler χτυπαει..ξέρει κανείς πως το κάνουμε ;
Κάνε αυτό:
product temp(a,b,c);
prodarray(i)=temp;

Ουτε καν:

Code:
prodarray[i] = product(a,b,c);

Απ αυτό τι κερδίζουμε; Δε δεσμεύουμε μνήμη για το temporary αντικείμενο;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: bakeneko on November 20, 2012, 17:14:56 pm
Εγώ έχω μια απορία στο όρισμα της συνάρτησης sale(). Λέει ότι αυτό θα είναι ένα αντικείμενο τύπου product. Έτσι όμως αυτό που θα επεξεργάζεται η sale() θα είναι ένα αντίγραφο του αντικειμένου που υπάρχει στον πίνακα αντικειμένων και όχι το ίδιο το αντικείμενο. Επομένως πώς θα αλλάζουμε το απόθεμα; Μάλλον σαν όρισμα θέλει έναν pointer τύπου product, ή τώρα που το ξανασκέφτομαι το όρισμα πρέπει να είναι μια αναφορική παράμετρος.
http://en.wikipedia.org/wiki/Reference_(C%2B%2B)

Με 2 λόγια αντί για όρισμα "product" βάζεις "product&" και κάνεις friend την sell στην κλάση product (ούτως ή άλλως και στην εκφώνηση λέει η sell να έχει πρόσβαση σιτς private μεταβλητές της product)


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: varvoutis on November 20, 2012, 17:37:56 pm
Εγώ έχω μια απορία στο όρισμα της συνάρτησης sale(). Λέει ότι αυτό θα είναι ένα αντικείμενο τύπου product. Έτσι όμως αυτό που θα επεξεργάζεται η sale() θα είναι ένα αντίγραφο του αντικειμένου που υπάρχει στον πίνακα αντικειμένων και όχι το ίδιο το αντικείμενο. Επομένως πώς θα αλλάζουμε το απόθεμα; Μάλλον σαν όρισμα θέλει έναν pointer τύπου product, ή τώρα που το ξανασκέφτομαι το όρισμα πρέπει να είναι μια αναφορική παράμετρος.
http://en.wikipedia.org/wiki/Reference_(C%2B%2B)

Με 2 λόγια αντί για όρισμα "product" βάζεις "product&" και κάνεις friend την sell στην κλάση product (ούτως ή άλλως και στην εκφώνηση λέει η sell να έχει πρόσβαση σιτς private μεταβλητές της product)

+1 έτσι το έκανα


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: varvoutis on November 20, 2012, 23:00:33 pm
Τώρα θα μου πείτε ότι το κούρασα, αλλά δεν πειράζει...

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


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 20, 2012, 23:13:19 pm
Παίδες δεν καταλαβαίνω πως θα καταλαβαινουμε σε ποια κατηγορια ανήκει το προιον. Απο το barcode; Δεν λέει πουθενα οτι θα το εισάγει ο χρήστης..


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: johnnykost on November 20, 2012, 23:55:57 pm
Οποιος μπορει να βοηθήσει σχετικά με την αρχικοποιηση...
έχω τα εξής

product *prodarray;
malloc...
for(i=0;i<number;i++){
if type bla bla bla{
product prodarray[ i ] (a,b,c);
}
}
Είναι λάθος φαντάζομαι η αρχικοποίηση των αντικειμένων του πινακα με αυτον τον τρόπο γιατί ο compiler χτυπαει..ξέρει κανείς πως το κάνουμε ;
Κάνε αυτό:
product temp(a,b,c);
prodarray(i)=temp;

Ουτε καν:

Code:
prodarray[i] = product(a,b,c);

Απ αυτό τι κερδίζουμε; Δε δεσμεύουμε μνήμη για το temporary αντικείμενο;
Έτσι μας το είχε δείξει ο Συμεωνίδης στο μάθημα με temp.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: varvoutis on November 21, 2012, 00:03:22 am
Παίδες δεν καταλαβαίνω πως θα καταλαβαινουμε σε ποια κατηγορια ανήκει το προιον. Απο το barcode; Δεν λέει πουθενα οτι θα το εισάγει ο χρήστης..

Μπορείς να βάλεις μια private μεταβλητή στην κλάση product που να παίρνει τιμές 1, 2 ή 3. Έστω id. Μετά κατά την εκτέλεση της αντίστοιχης constructor θα εκχωρείται και η κατάλληλη τιμή.

Τώρα που το σκέφτομαι θα μπορούσες να ενσωματώσεις την κατηγορία που ανήκει το κάθε προϊόν στο barcode του. Πχ το πρώτο αριστερά ψηφίο για τα προϊόντα της κατηγορίας 1 να είναι 1, για τα προϊόντα της κατηγορίας 2 να είναι 2 κοκ. (πολύ προχώ υλοποίηση)


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: johnnykost on November 21, 2012, 00:08:46 am
Παίδες δεν καταλαβαίνω πως θα καταλαβαινουμε σε ποια κατηγορια ανήκει το προιον. Απο το barcode; Δεν λέει πουθενα οτι θα το εισάγει ο χρήστης..

Μπορείς να βάλεις μια private μεταβλητή στην κλάση product που να παίρνει τιμές 1, 2 ή 3. Έστω id. Μετά κατά την εκτέλεση της αντίστοιχης constructor θα εκχωρείται και η κατάλληλη τιμή.
+1 Και γω έτσι το κάνα


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 21, 2012, 00:17:04 am
Παίδες δεν καταλαβαίνω πως θα καταλαβαινουμε σε ποια κατηγορια ανήκει το προιον. Απο το barcode; Δεν λέει πουθενα οτι θα το εισάγει ο χρήστης..

Μπορείς να βάλεις μια private μεταβλητή στην κλάση product που να παίρνει τιμές 1, 2 ή 3. Έστω id. Μετά κατά την εκτέλεση της αντίστοιχης constructor θα εκχωρείται και η κατάλληλη τιμή.

Τώρα που το σκέφτομαι θα μπορούσες να ενσωματώσεις την κατηγορία που ανήκει το κάθε προϊόν στο barcode του. Πχ το πρώτο αριστερά ψηφίο για τα προϊόντα της κατηγορίας 1 να είναι 1, για τα προϊόντα της κατηγορίας 2 να είναι 2 κοκ. (πολύ προχώ υλοποίηση)

Να ανοιξουμε τοπικ εργασια Β για προχω γιατι ο κυριος βαρβουτης θα με κανει να πυροβοληθω..  ;D ;D ;D


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 21, 2012, 00:22:49 am
Παίδες δεν καταλαβαίνω πως θα καταλαβαινουμε σε ποια κατηγορια ανήκει το προιον. Απο το barcode; Δεν λέει πουθενα οτι θα το εισάγει ο χρήστης..

Μπορείς να βάλεις μια private μεταβλητή στην κλάση product που να παίρνει τιμές 1, 2 ή 3. Έστω id. Μετά κατά την εκτέλεση της αντίστοιχης constructor θα εκχωρείται και η κατάλληλη τιμή.
+1 Και γω έτσι το κάνα

Επειδη ακομα ειμαι ξένος στην κατανοηση ως προς το ποτε τρεχει ο constructor:

Θα δεσμευσουμε δυναμικα μνημη για τα αντικειμενα,  // Εδω θελω να ρωτησω αν ολα θα έχουν την ιδια μνημη αφου τα προιοντα της Β εχουν και τον παράγοντα ευκαιριας. Δεν χανουμε μνήμη βάζοντας τον παραγοντα που ειναι μονο για τα προιοντα Β;

Μετα θα βάλουμε απο το χρήστη να δινει τι ειδους ειναι το προιον

και μετα θα δημιουργούμε το αντικειμενο ή θα τρέχουμε τον αντιστοιχο constructor;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: johnnykost on November 21, 2012, 00:40:00 am
Παίδες δεν καταλαβαίνω πως θα καταλαβαινουμε σε ποια κατηγορια ανήκει το προιον. Απο το barcode; Δεν λέει πουθενα οτι θα το εισάγει ο χρήστης..

Μπορείς να βάλεις μια private μεταβλητή στην κλάση product που να παίρνει τιμές 1, 2 ή 3. Έστω id. Μετά κατά την εκτέλεση της αντίστοιχης constructor θα εκχωρείται και η κατάλληλη τιμή.
+1 Και γω έτσι το κάνα

Επειδη ακομα ειμαι ξένος στην κατανοηση ως προς το ποτε τρεχει ο constructor:

Θα δεσμευσουμε δυναμικα μνημη για τα αντικειμενα,  // Εδω θελω να ρωτησω αν ολα θα έχουν την ιδια μνημη αφου τα προιοντα της Β εχουν και τον παράγοντα ευκαιριας. Δεν χανουμε μνήμη βάζοντας τον παραγοντα που ειναι μονο για τα προιοντα Β;

Μετα θα βάλουμε απο το χρήστη να δινει τι ειδους ειναι το προιον

και μετα θα δημιουργούμε το αντικειμενο ή θα τρέχουμε τον αντιστοιχο constructor;
Για όλα την ίδια μνήμη θα δεσμεύσεις. Άμα θες μπορείς στις άλλες 2 συναρτήσεις αρχικών συνθηκών να αρχικοποιήσεις τον παράγοντα προσφοράς 0.
Θα ρωτάς το χρήστη τον τύπο προιόντος και μέσα σε 3 if θα βάλεις τις 3 διαφορετικές συναρτήσεις αρχικών συνθηκων.
Και σε κάθε if θα ζητάς ότι χρειάζεσαι για να βάλεις όρισματα στα constructors.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 21, 2012, 00:45:08 am
Για όλα την ίδια μνήμη θα δεσμεύσεις. Άμα θες μπορείς στις άλλες 2 συναρτήσεις αρχικών συνθηκών να αρχικοποιήσεις τον παράγοντα προσφοράς 0.
Θα ρωτάς το χρήστη τον τύπο προιόντος και μέσα σε 3 if θα βάλεις τις 3 διαφορετικές συναρτήσεις αρχικών συνθηκων.
Και σε κάθε if θα ζητάς ότι χρειάζεσαι για να βάλεις όρισματα στα constructors.

Χιλια ευχαριστω κυριε johnny ειχα κολλήσει εξαρχής στο να διαβάζω τις τιμες μεσα στους contructors..


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Alice_8 on November 21, 2012, 17:53:14 pm
Αν φτιάξουμε τα αντικείμενα στην main(δεσμεύσουμε μνήμη ,δώσουμε τα ορίσματα στην temp , klp) και απλά μέσα στην sale() έχω 3 if όπου στο καθένα γράφω κάτι του τύπου :
 cin>> code_of_product;
if (p.getcode1()=code_of_product) {   // όπου p πίνακας τύπου product
τότε γνωρίζω οτι το προιόν είναι τύπου 1 και κάνω τα υπόλοιπα!
Αν δεν το βρεί στο επόμενο if , έχω getcode2() klp...
Είναι λάθος???


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Panos_Kanel on November 21, 2012, 21:35:19 pm
είναι σαν να χτυπάει η υπάλληλος στο μασούτη το barcode και αντί να της εμφανίζεται τιμή να της λέει "δώσε τον τύπο του προιόντος"...
η sale πρεπει να ξεχωρίσει από τις private μεταβλητές του αντικειμένου product τι τύπου είναι.η πιθανόν με κάποιο άλλο τέχνασμα..αλλά γενικά δεν πρέπει να ζητάει τίποτα για είσοδο από το χρήστη


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: c0ndemn3d on November 22, 2012, 00:05:38 am
Μα άμα δε ζητάει τίποτα για είσοδο από χρήστη πώς θα βάλεις όλα τα προϊόντα ρε;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Alice_8 on November 22, 2012, 00:54:40 am
Μα γι αυτό , ζητάς τον κωδικό του προιόντος (ουσιαστικά το barcode) και με την get με 3 if θα σου επιστραφεί σε ποια κατηγορία ανήκει! Τουλάχιστον έτσι νομίζω ...... :-\


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: bakeneko on November 22, 2012, 01:04:54 am
Δεν μπορείς απλά να ζητήσεις να σου επιστρέψει την κατηγορία του; :P


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: varvoutis on November 22, 2012, 01:30:07 am
Μα άμα δε ζητάει τίποτα για είσοδο από χρήστη πώς θα βάλεις όλα τα προϊόντα ρε;

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

Το δεύτερο κομμάτι του προγράμματος (η χρησιμοποίηση) είναι παίρνοντας σαν είσοδο το barcode του προϊόντος (είτε με πιστόλι, είτε από το πληκτρολόγιο είτε με φωνητική εντολή) να επιστρέφει την τιμή και το εναπομείναν απόθεμα του προϊόντος...


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: c0ndemn3d on November 22, 2012, 03:07:17 am
Συγγνώμη παιδιά άλλο κατάλαβα εγώ, ναι είμαι καθυστερημένος.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: nikitas350 on November 22, 2012, 03:48:55 am
Οποιος μπορει να βοηθήσει σχετικά με την αρχικοποιηση...
έχω τα εξής

product *prodarray;
malloc...
for(i=0;i<number;i++){
if type bla bla bla{
product prodarray[ i ] (a,b,c);
}
}
Είναι λάθος φαντάζομαι η αρχικοποίηση των αντικειμένων του πινακα με αυτον τον τρόπο γιατί ο compiler χτυπαει..ξέρει κανείς πως το κάνουμε ;
Κάνε αυτό:
product temp(a,b,c);
prodarray(i)=temp;

Ουτε καν:

Code:
prodarray[i] = product(a,b,c);

Απ αυτό τι κερδίζουμε; Δε δεσμεύουμε μνήμη για το temporary αντικείμενο;

Δεν κερδίζουμε και πολλά.

Πάλι δημιουργείται αυτόματα ένα const temporary αντικείμενο το οποίο αντιγράφεται στο prodarray και μετά καταστρέφεται αυτόματα (καλείται ο destructor του).

Στην περίπτωση που δημιουργείς εσύ από μόνος σου ένα temp αντικείμενο, τότε από την στιγμή που το έχεις ορίσει μέσα στο for loop σου με το που βγαίνεις από αυτό, το temp καταστρέφεται αυτόματα, αφού έχεις βγείς από το scope του.

Αλλά και γενικότερα ο compiler φροντίζει να καταστρέφει ένα αντικείμενο όταν δεν πρόκειται να χρησιμοποιηθεί αργότερα (στην περίπτωση που το ορίζουμε όπως ορίζεις το temp).

Και στους δύο τρόπους (οι οποίοι είναι λίγο ανορθόδοξοι..) πρέπει στην κλάση σου να ορίσεις σίγουρα τον operator= (ειδικά άμα έχεις pointers μέσα στην κλάση) γιατί μέσα από αυτόν γίνεται η αντιγραφή από το ένα αντικείμενο στο άλλο, οπότε και θα θέλεις η αντιγραφή να παράγει ένα αντικείμενο που δεν θα επηρεάζεται από την διαγραφή του παλιού αντικειμένου.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Infinite Loop on November 22, 2012, 14:25:44 pm
Πραγματι, το αποτελεσμα και των δυο τροπων ειναι πανομοιοτυπο. Γλυτωνεις ομως μια γραμμη κωδικα με τον δευτερο ;)


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 22, 2012, 14:52:38 pm
Η συνάρτηση να δέχεται, ως όρισμα, ένα αντικείμενο τύπου product

Δεν καταλαβαίνω ποιο θα ειναι αυτό το αντικείμενο. Αφου ο ταμιας θα εισάγει το προιον του πελάτη μέσα στην sale. Το αντικείμενο αυτό τί θα συμβολίζει;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: varvoutis on November 22, 2012, 15:13:01 pm
Η συνάρτηση να δέχεται, ως όρισμα, ένα αντικείμενο τύπου product

Δεν καταλαβαίνω ποιο θα ειναι αυτό το αντικείμενο. Αφου ο ταμιας θα εισάγει το προιον του πελάτη μέσα στην sale. Το αντικείμενο αυτό τί θα συμβολίζει;

Στην υλοποίησή μου ο ταμίας εισάγει το barcode στη main. Το αντικείμενο αυτό το θέλεις (και μάλιστα το ίδιο το αντικείμενο και όχι κάποιο αντίγραφό του) για να σου υπολογίζει το κόστος του πλήθους των προϊόντων που επέλεξες και να αλλάζει και το απόθεμα. (μεταβλητές private στα αντικείμενα τύπου product)


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 22, 2012, 18:26:13 pm
για τους constructos

κάτι τέτοιο είναι λάθος;

class product

product(int id){
   if id==1{
   
   }
   if id==2{

   }
   if id==3{

   }

}


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Neal on November 22, 2012, 20:22:45 pm
Όχι, αλλά χάνεται η έννοια του πολυμορφισμού της αντικειμενοστραφής γλώσσας.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 22, 2012, 20:25:06 pm
Πως συγκρινουμε δυο string για να δουμε αν ειναι ισα; (για τα barcode μεσα στην sale)..
H συναρτησεις strncmp και strcmp δεν βρίσκουν το προιον... :-\


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Neal on November 22, 2012, 20:29:35 pm
Για ποιο λόγο κάνετε περισσότερα πράγματα απ'ότι σας ζητούν; Γιατί να κάνεις το "barcode" string και όχι int;

Δύο τρόποι σύγκρισης, strcmp ή http://www.cplusplus.com/reference/string/string/compare/

ή

manually χαρακτήρα-χαρακτήρα :P


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Neal on November 22, 2012, 20:37:27 pm
Βασικά ανεβάζω ξανά μια υλοποίηση της εργασίας χωρίς τη main, εφόσον δεν κατέληξε πουθενά η συζήτηση γίνεται-δε γίνεται να ανεβάζουμε εργασίες.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: zos on November 22, 2012, 20:37:49 pm
Βασικά και γτ να μην το ζητάει το barcode στην sale μέσα το λέει και η εκφώνηση ξεκάθαρα? Διαβάζοντας 2 μέρες σχόλια μερικοί το παρακάνουν. Ένα απλό πρόγραμμα είναι.. Δεν γράφουμε και πρόγραμμα για καμιά εταιρεία... Ούτως ή άλλως στην εξέταση κανείς δεν κοιτάει αν είναι τέλεια μόνο να δει τι έκανες θέλει και σου εξηγεί και τα λάθη σου, οπότε πολλοί το κουράζουμε.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 22, 2012, 20:47:55 pm
Βασικά ανεβάζω ξανά μια υλοποίηση της εργασίας χωρίς τη main, εφόσον δεν κατέληξε πουθενά η συζήτηση γίνεται-δε γίνεται να ανεβάζουμε εργασίες.

Σόρι κιόλας κύριε Neal αλλα ειναι λάθος διότι η sale πρεπει να έχει προσβαση στα private δεδομένα.

Σε αυτήν την άσκηση πρέπει να μάθουμε τις εννοιες της υπερκάληψης και των φιλικών συναρτήσεων.

Επίσης η εντολή να συγκρίνω string ειναι αυτή (ξέρω ειμαι κουραστικός αλλά έτσι το έγραψα και πρέπει να αλλάξω πολλές εντολές)
 if (strcmp( random_barcode, Product_Table [ i].product_code)==0)

 εισάγω μονο ένα προιον ( Product_Table [ i].product_code) και ενα μονο barcode στο ταμείο (random_barcode) και δεν μπαινει μέσα.. >:( >:(


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 22, 2012, 20:52:17 pm
Επίσης η εντολή να συγκρίνω string ειναι αυτή (ξέρω ειμαι κουραστικός αλλά έτσι το έγραψα και πρέπει να αλλάξω πολλές εντολές)
 if (strcmp( random_barcode, Product_Table [ i].product_code)==0)

 εισάγω μονο ένα προιον ( Product_Table [ i].product_code) και ενα μονο barcode στο ταμείο (random_barcode) και δεν μπαινει μέσα.. >:( >:(

Νομίζω πως θα έπρεπε να γράψεις:

if (strcmp( random_barcode, Product_Table [ i].product_code())==0)


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 22, 2012, 20:59:08 pm
Δεν ειναι συναρτηση είναι μεταβλητή αφου η sale μπορει να προσπελάσει τα private στοιχεια.

δηλωση στην κλάση product
char  product_code[30];

(Σκάω γιατι στην c μου βγαίναν ορισμένες τετοιες εντολές που εδώ δεν βγαίνουν)


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 22, 2012, 21:06:10 pm
Δεν ειναι συναρτηση είναι μεταβλητή αφου η sale μπορει να προσπελάσει τα private στοιχεια.
Sorry, δικό μου λάθος :-[

Παίρνεις υπ' όψιν σου πως όταν τα δύο string είναι ίσα, η strcmp θα σου επιστρέψει την τιμή 0, ε?

Επίσης, δοκίμασε το εξής:
Code:
strncmp(Product_Table,[i].product_code,30)


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Neal on November 22, 2012, 21:16:35 pm
Βασικά ανεβάζω ξανά μια υλοποίηση της εργασίας χωρίς τη main, εφόσον δεν κατέληξε πουθενά η συζήτηση γίνεται-δε γίνεται να ανεβάζουμε εργασίες.

Σόρι κιόλας κύριε Neal αλλα ειναι λάθος διότι η sale πρεπει να έχει προσβαση στα private δεδομένα.

Σε αυτήν την άσκηση πρέπει να μάθουμε τις εννοιες της υπερκάληψης και των φιλικών συναρτήσεων.

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


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Σαλτιμπάγκος on November 22, 2012, 21:25:31 pm
Ξανά ανεβάζω λοιπόν.

Να σε ρωτησω...γιατι τις αφησες τισ συναρτησεις get() αφου αν ειδα καλα δεν χρησιμευουν κ σε τιποτα γιατι μπορεις να τις αντικαταστησεις με ενα π.χ. p.id κ.ο.κ;;

Επισης μια μαλλον χαζη ερωτηση...δεν πρεπει καποιος να εισαγει τα προιοντα κ τα στοιχεια για καθε προιον;Αυτο το κανουμε στη main;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Neal on November 22, 2012, 21:29:21 pm
Γιατί σε 15' φεύγω για την Πόλη και έχω να κάνω βαλίτσα. Δε χρησιμεύουν πουθενά πλέον.

Ναι, στη main καλείς τους constructors των αντικειμένων.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 23, 2012, 00:12:41 am
Για την ιστορία το λάθος ήταν στην μετάβαση της αποθήκευσης..

Η κλασική εντολή ανάθεσης είναι λάθος:
product_code[30]= product_codeC[30];

Αντι για αυτήν σωστά αποτελέσματα φέρνει:
strcpy(product_code, product_codeC);


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: varvoutis on November 23, 2012, 00:23:07 am
Η κλασική εντολή ανάθεσης είναι λάθος:
product_code[30]= product_codeC[30];

Κάτι τέτοιο θα δούλευε με επικάλυψη του τελεστή "=" αν δεν κάνω λάθος...

Θα το διδάξει αργότερα.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 23, 2012, 00:43:55 am
Και το πρήξιμο συνεχίζεται με το επόμενο θέμα:

Μέσα στον constructorΒ για τα προιοντα τυπου 2 καλώ τον constructorA (που ειναι για τα προιοντα τυπου Α) αφου έχουν τα ιδια ορισματα πέρα του παράγοντα ευκαιριας τον οποιο αποθηκευω απο το πληκτρολόγιο. Γίνεται;

(Δηλαδή: Το δοκίμασα αλλά τρέχει με κάποιο λάθος, είναι δικό μου ή δεν γίνεται;)

δηλ:

//constructorA
product:: product(char* product_codeA  ,int quantityA, float priceA)   

//contstructorB
product::product(char* product_codeB, int quantityB, float priceB, int free_bargain){
     product(product_codeB, quantityB, priceB);
}


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: jthois on November 24, 2012, 13:46:40 pm
Για την ανάγνωση των προιόντων, πρέπει να φτιάξω συνάρτηση πχ readproduct ή να γίνεται και μέσα από τη main()


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 24, 2012, 13:58:42 pm
Για την ανάγνωση των προιόντων, πρέπει να φτιάξω συνάρτηση πχ readproduct ή να γίνεται και μέσα από τη main()

Όπως θελεις μπορείς να το κάνεις. Μέσα στη main είναι πιο άμεσο, ενώ σε ξεχωριστή συνάρτηση θα είναι πιο ευανάγνωστο...


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: New_Entry on November 24, 2012, 16:10:46 pm
Θα πρέπει να τυπώνουμε κάπου και το συνολικό ποσό που θα πληρώσει ο πελάτης;;;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 24, 2012, 16:35:46 pm
Θα πρέπει να τυπώνουμε κάπου και το συνολικό ποσό που θα πληρώσει ο πελάτης;;;

Δεν ζητάει κάτι τέτοιο. Βέβαια, τότε είναι περιττό να επιστρέφει η sale() το κόστος της αγοράς του πελάτη, αλλά απ' την άλλη μιλάμε για Κορτέση εδώ πέρα :P


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: New_Entry on November 24, 2012, 16:45:24 pm
Θα πρέπει να τυπώνουμε κάπου και το συνολικό ποσό που θα πληρώσει ο πελάτης;;;

Δεν ζητάει κάτι τέτοιο. Βέβαια, τότε είναι περιττό να επιστρέφει η sale() το κόστος της αγοράς του πελάτη, αλλά απ' την άλλη μιλάμε για Κορτέση εδώ πέρα :P


Φαντάζομαι ότι για να έχει κάποια λογική το όλο θέμα, θα πρέπει να τυπώνουμε και το συνολικό ποσό... Ναι, κι εγώ δεν είμαι σίγουρη ότι το ζητάει η εκφώνηση...
Βέβαια έχεις δίκιο, είναι κορτέσια εργασία, οπότε....  :P


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: varvoutis on November 24, 2012, 16:46:18 pm
Θα πρέπει να τυπώνουμε κάπου και το συνολικό ποσό που θα πληρώσει ο πελάτης;;;

Δεν ζητάει κάτι τέτοιο. Βέβαια, τότε είναι περιττό να επιστρέφει η sale() το κόστος της αγοράς του πελάτη, αλλά απ' την άλλη μιλάμε για Κορτέση εδώ πέρα :P

εντάξει ρε παιδιά, μπορεί να μην το ζητάει αλλά δεν είναι και τίποτα.

θα φαίνεται και το προγραμματάκι πιο ωραίο!


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 24, 2012, 18:14:49 pm
δεν έχω καταλάβει από την εκφώνηση,
μέσα στη main ζητάμε ξεκάθαρα να μας πει (π.χ. η πωλήτρια) τι τύπου είναι το προιόν: (1,2,3)

και αν ναι, μετά μέσα στη sale() βάζουμε απλά ένα switch(type) όπου type=(1 ή 2 ή 3);


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: jthois on November 24, 2012, 18:40:47 pm
Τον τύπο του προϊόντος τον ζητάς μόνο κατά την εισαγωγή των δεδομένων. Στο ταμείο, δηλαδή ότι έχει να κάνει με τη sale, σου δίνει μόνο το id και την ποσότητα. Και αντίστοιχα ψάχνεις να βρεις στον πίνακα τύπου product τη θέση του για να εχεις πρόσβαση στα χαρακτηριστικά του(τιμη, τύπος, απόθεμα)

Quote
και αν ναι, μετά μέσα στη sale() βάζουμε απλά ένα switch(type) όπου type=(1 ή 2 ή 3);
Ναι!


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: sΚονταριτσα on November 24, 2012, 20:44:33 pm
να ρωτησω κατι,γιατι εχω μπερδευτει.

ο τυπος προιοντων 1 περιεχει προιοντα τα οποια εχει το καθενα διαφορετικη τιμη ετσι?δεν ειναι η τιμη ιδια για το καθε προιον του ιδιου τυπου ετσι?

και ερωτηση δευτερη,πως θα καλεσω καθε φορα τον constructor για να μου βαλει τιμες στο συγκεκριμενο προιον ?δλδ εκει που θα γεμιζω τον πινακα με τα προιοντα μου,πως θα καλω τον καθε constructor που αναφερεται στον διαφορετικο τυπο προιοντων,καθε φορα που θελω να εισαγω καποιο προιον?εγω σκεφτηκα να το κανω με μια if και να ρωταω αυτον π εισαγει τα δεδομενα τι τυπος ειναι το προιον και μετα να καλω τον constructor με τα συγκεκριμενα ορισματα γιαυτον τον τυπο
λαθαρα?


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 24, 2012, 21:04:21 pm
ο τυπος προιοντων 1 περιεχει προιοντα τα οποια εχει το καθενα διαφορετικη τιμη ετσι?δεν ειναι η τιμη ιδια για το καθε προιον του ιδιου τυπου ετσι?
Ναι, το κάθε προϊόν της κατηγορίας 1, θα έχει διαφορετική τιμή.

και ερωτηση δευτερη,πως θα καλεσω καθε φορα τον constructor για να μου βαλει τιμες στο συγκεκριμενο προιον ?δλδ εκει που θα γεμιζω τον πινακα με τα προιοντα μου,πως θα καλω τον καθε constructor που αναφερεται στον διαφορετικο τυπο προιοντων,καθε φορα που θελω να εισαγω καποιο προιον?εγω σκεφτηκα να το κανω με μια if και να ρωταω αυτον π εισαγει τα δεδομενα τι τυπος ειναι το προιον και μετα να καλω τον constructor με τα συγκεκριμενα ορισματα γιαυτον τον τυπο
λαθαρα?
Είναι απόλυτα σωστό αυτό που έκανες, και εγώ αυτό σκέφτηκα και υλοποίησα ;)


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 24, 2012, 21:25:20 pm
με βάση αυτά που λέτε,
μεταξύ 1ης & 3ης κατηγορίας
θα πρέπει να μην έχουμε ακριβώς ίδιους τύπους μεταβλητών
γιατί δε θα ξέρει ποιον από τους 2 constructors να καλέσει;

αα!επίσης αφού θα έχουν όλα τα προιόντα της 1ης κατηγορίας π.χ. διαφορετική τιμή
πώς θα εισάγεται κάθε φορά αυτή;;;



Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: pentium4 on November 24, 2012, 21:28:00 pm
με βάση αυτά που λέτε,
μεταξύ 1ης & 3ης κατηγορίας
θα πρέπει να μην έχουμε ακριβώς ίδιους τύπους μεταβλητών
γιατί δε θα ξέρει ποιον από τους 2 constructors να καλέσει;



hint : βαλτους με αλλη σειρα πχ int int float ,int float int


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 24, 2012, 21:32:04 pm
με βάση αυτά που λέτε,
μεταξύ 1ης & 3ης κατηγορίας
θα πρέπει να μην έχουμε ακριβώς ίδιους τύπους μεταβλητών
γιατί δε θα ξέρει ποιον από τους 2 constructors να καλέσει;



hint :βαλτους με αλλη σειρα πχ int int float ,int float int

ναι οκ είτε αυτό, είτε βάζω κάτι double τότε π.χ.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: pentium4 on November 24, 2012, 21:42:02 pm
άσχετο. τα αποθέματα αφορουν κατηγοριες;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 24, 2012, 21:49:29 pm

επίσης αφού θα έχουν όλα τα προϊόντα της 1ης κατηγορίας π.χ. διαφορετική τιμή
πώς θα εισάγεται κάθε φορά αυτή;;;



δηλαδή    για 1η κατηγορία
                for (i=0;i<N1;i++){
                     p(i)=product(1,N1,price)

όπου N1=αριθμός προϊόντων 1ης κατηγορίας ΟΚ σταθερό
με το price τι κάνουμε όμως;

πόσο πολύ δεν έχει ξεκαθαρίσει τι θέλει αυτός ο άνθρωπος!  :???:


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 24, 2012, 21:52:46 pm
άσχετο. τα αποθέματα αφορουν κατηγοριες;
Εγώ καταλαβαίνω πως τα αποθέματα αφορούν το κάθε προϊόν ξεχωριστά (και επομένως και κατηγορίες ξεχωριστά).


επίσης αφού θα έχουν όλα τα προϊόντα της 1ης κατηγορίας π.χ. διαφορετική τιμή
πώς θα εισάγεται κάθε φορά αυτή;;;



δηλαδή    για 1η κατηγορία
                for (i=0;i<N1;i++){
                     p=product(1,N1,price)

όπου N1=αριθμός προϊόντων 1ης κατηγορίας ΟΚ σταθερό
με το price τι κάνουμε όμως;
Μπορείς να διαβάζεις το price, μέσα στο for-loop που έγραψες.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 24, 2012, 21:54:41 pm


επίσης αφού θα έχουν όλα τα προϊόντα της 1ης κατηγορίας π.χ. διαφορετική τιμή
πώς θα εισάγεται κάθε φορά αυτή;;;



δηλαδή    για 1η κατηγορία
                for (i=0;i<N1;i++){
                     p=product(1,N1,price)

όπου N1=αριθμός προϊόντων 1ης κατηγορίας ΟΚ σταθερό
με το price τι κάνουμε όμως;
Μπορείς να διαβάζεις το price, μέσα στο for-loop που έγραψες.

ότι και καλά ας πούμε περνάμε και τιμολόγιο;
μάλιστα... πφφφφφ
thanks


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 24, 2012, 22:04:32 pm
ότι και καλά ας πούμε περνάμε και τιμολόγιο;

Ο Κορτέσης μας βάζει αυτό το πρόγραμμα για να μας προετοιμάσει για το μέλλον που θα δουλεύουμε σε supermarket :D :D


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: ICE-CUBE on November 25, 2012, 04:02:59 am
παιδια έχει κάποιος το κομμάτι στο οποίο δεσμεύουμε μνήμη να δω πως γράφεται; Αυτό στη main θα το κάνουμε?


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 25, 2012, 12:37:33 pm
ίσως έτσι

Code:
int N;
product *p;

p = new product [N]


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: manos on November 25, 2012, 14:15:16 pm
Όταν δηλώνουμε έναν πίνακα με αντικείμενα μιας κλάσης και δεσμεύουμε μνήμη έστω για 5 θέσεις δεν θα έπρεπε να εκτελείται ο constructor που έχουμε ορίσει στην κλάση 5 φορές?Για παράδειγμα όταν ορίζω την κλάση

class test{
      int k;
public:
       test(void);     
};
test::test(void){
    k=7;
    cout <<"k="<<k<<"\n";


και στη συνάρτηση main ορίζω τον πίνακα list με αντικείμενα τύπου test

test *list;
if ((list=(test *)malloc(5*sizeof(test)))==NULL){                       
        exit(1);
   }
δε θα έπρεπε να εκτυπώνεται 5 φορές "k=7"?


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: sexycowboy on November 25, 2012, 14:21:47 pm
Όταν δηλώνουμε έναν πίνακα με αντικείμενα μιας κλάσης και δεσμεύουμε μνήμη έστω για 5 θέσεις δεν θα έπρεπε να εκτελείται ο constructor που έχουμε ορίσει στην κλάση 5 φορές?Για παράδειγμα όταν ορίζω την κλάση

class test{
      int k;
public:
       test(void);     
};
test::test(void){
    k=7;
    cout <<"k="<<k<<"\n";


και στη συνάρτηση main ορίζω τον πίνακα list με αντικείμενα τύπου test

test *list;
if ((list=(test *)malloc(5*sizeof(test)))==NULL){                       
        exit(1);
   }
δε θα έπρεπε να εκτυπώνεται 5 φορές "k=7"?


Με αυτό που έχεις γράψει δεσμεύεις μνήμη. Δε δημιουργείς αντικείμενα και συνεπώς δεν τρέχει κανένας constructor. Είναι σαν να του λες "Κράτησε μου χώρο για 5 αντικείμενα" όχι "Φτιάξε 5 αντικείμενα". Μετά θα πρέπει να δημιουργήσεις τα αντικείμενα.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: manos on November 25, 2012, 14:27:16 pm
Δοκίμασα στη συνέχεια την εντολή test list[0]; για να φτιάξω το πρώτο αντικείμενο της λίστας και μου βγάζει σφάλμα ότι αυτή η δήλωση έρχεται σε σύγκρουση με την προηγούμενη δήλωση test *list;.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 25, 2012, 14:59:39 pm
Δοκίμασα στη συνέχεια την εντολή test list[0]; για να φτιάξω το πρώτο αντικείμενο της λίστας και μου βγάζει σφάλμα ότι αυτή η δήλωση έρχεται σε σύγκρουση με την προηγούμενη δήλωση test *list;.

Πρώτα δημιουργησε ενα αντικειμενο για λίγο
test Random_Object(ορισματα του constructor που θέλεις)

και μετά βάλτο στον πινακα τυπου object
list[0]= Random_Object


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: anchelon on November 25, 2012, 16:57:23 pm
Ο κ Συμμεωνίδης μας είχε αναφέρει ότι όταν δημιουργούμε δυναμικά έναν πίνακα αντικειμένων πρεπει να κάνουμε την παρακάτω διαδικασία:
class A{}
main{
   A *P;
   p=(A*).....
   for(int i=0;i<N;i++){
         A temp;
         P=temp;//εδώ εννοείται το i σε αγκύλες πίνακα.δν το εμφανίζει!
   }
που ουσιαστικά δημιουργεί χώρο για το κάθε στοιχείο του πίνακα αντικειμένων.Μπορώ μέσα σε αυτή τη διαδικασία να προσδώσω κ τιμές στα στοιχεία του πίνακα αντικ. ή πρέπει να το κάνω ξεχωριστά??
                


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Locke on November 25, 2012, 17:04:55 pm
Ο κ Συμμεωνίδης μας είχε αναφέρει ότι όταν δημιουργούμε δυναμικά έναν πίνακα αντικειμένων πρεπει να κάνουμε την παρακάτω διαδικασία:
class A{}
main{
   A *P;
   p=(A*).....
   for(int i=0;i<N;i++){
         A temp;
         P=temp;//εδώ εννοείται το i σε αγκύλες πίνακα.δν το εμφανίζει!
   }
που ουσιαστικά δημιουργεί χώρο για το κάθε στοιχείο του πίνακα αντικειμένων.Μπορώ μέσα σε αυτή τη διαδικασία να προσδώσω κ τιμές στα στοιχεία του πίνακα αντικ. ή πρέπει να το κάνω ξεχωριστά??
                

Αν όμως το αντικείμενο temp έχει συνάρτηση αρχικών συνθηκών δεν θα πρέπει όταν θα το δηλώσουμε να βάλουμε και τα ορίσματα;
Τί ορίσματα θα βάλουμε εκεί;

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


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: anchelon on November 25, 2012, 17:31:13 pm
Ο κ Συμμεωνίδης μας είχε αναφέρει ότι όταν δημιουργούμε δυναμικά έναν πίνακα αντικειμένων πρεπει να κάνουμε την παρακάτω διαδικασία:
class A{}
main{
   A *P;
   p=(A*).....
   for(int i=0;i<N;i++){
         A temp;
         P=temp;//εδώ εννοείται το i σε αγκύλες πίνακα.δν το εμφανίζει!
   }
που ουσιαστικά δημιουργεί χώρο για το κάθε στοιχείο του πίνακα αντικειμένων.Μπορώ μέσα σε αυτή τη διαδικασία να προσδώσω κ τιμές στα στοιχεία του πίνακα αντικ. ή πρέπει να το κάνω ξεχωριστά??
                

Αν όμως το αντικείμενο temp έχει συνάρτηση αρχικών συνθηκών δεν θα πρέπει όταν θα το δηλώσουμε να βάλουμε και τα ορίσματα;
Τί ορίσματα θα βάλουμε εκεί;

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

for(int i=0;i<N;i++){
            cin >>c>>q>>o>>p;
            product temp(c,q,o,p);
            PRO=temp;
        }


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Locke on November 25, 2012, 17:58:09 pm
εγώ κάπως έτσι το έκανα:

for(int i=0;i<N;i++){
            cin >>c>>q>>o>>p;
            product temp(c,q,o,p);
            PRO=temp;
        }

Αν το temp έχει περισσότερες από μία σ.α.σ. πώς το κάνουμε; Θα ρωτήσουμε πρώτα τον χρήστη ποια θα χρησιμοποιήσει και μετα με if θα κάνουμε αυτό που έχεις γράψει για κάθε μία περίπτωση;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: anchelon on November 25, 2012, 18:11:27 pm
εγώ κάπως έτσι το έκανα:

for(int i=0;i<N;i++){
            cin >>c>>q>>o>>p;
            product temp(c,q,o,p);
            PRO=temp;
        }

Αν το temp έχει περισσότερες από μία σ.α.σ. πώς το κάνουμε; Θα ρωτήσουμε πρώτα τον χρήστη ποια θα χρησιμοποιήσει και μετα με if θα κάνουμε αυτό που έχεις γράψει για κάθε μία περίπτωση;
ναι εγώ έτσι το έκανα!


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Locke on November 25, 2012, 18:12:45 pm
εγώ κάπως έτσι το έκανα:

for(int i=0;i<N;i++){
            cin >>c>>q>>o>>p;
            product temp(c,q,o,p);
            PRO=temp;
        }

Αν το temp έχει περισσότερες από μία σ.α.σ. πώς το κάνουμε; Θα ρωτήσουμε πρώτα τον χρήστη ποια θα χρησιμοποιήσει και μετα με if θα κάνουμε αυτό που έχεις γράψει για κάθε μία περίπτωση;
ναι εγώ έτσι το έκανα!

οκ, σ ευχαριστώ πολύ!


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 25, 2012, 20:45:37 pm
ορίζω τη συνάρτηση sale ως εξής:

Code:
void sale(product &proionta, int N)

proionta είναι ο πίνακας αντικειμένων

μέσα στη sale, ενώ την έχω ορίσει friend
όταν γράφω το proionta(i) μου βγάζει πολλά errors.
πώς πρέπει να ορίσω τη συνάρτηση για να έχει κανονικά πρόσβαση στο proionta(i);


Επίσης, αυτό με το temp μπορεί κάποιος να το εξηγήσει πιο λιανά; Tι είναι και πού χρειάζεται; Και αν είναι απαραίτητο;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: bakeneko on November 25, 2012, 20:52:12 pm
πρέπει να την έχεις κάνει friend μέσα στην κλάση product για να έχει πρόσβαση στις μεταβλητές!


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 25, 2012, 20:55:27 pm
Ναι αυτό εννοείται.

Code:
class 

public:
friend void sale(product &p,int N);


κάπως έτσι


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: kofski17 on November 25, 2012, 20:58:09 pm
ορίζω τη συνάρτηση sale ως εξής:

Code:
void sale(product &proionta, int N)



ο ακέραιος Ν είναι το πόσα προϊόντα πάει ο πελάτης στο ταμείο στη συγκεκριμένη αγορά?


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 25, 2012, 21:00:41 pm
ορίζω τη συνάρτηση sale ως εξής:

Code:
void sale(product &proionta, int N)



ο ακέραιος Ν είναι το πόσα προϊόντα πάει ο πελάτης στο ταμείο στη συγκεκριμένη αγορά?

όχι ο Ν είναι ο αριθμός όλων των προϊόντων.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: kofski17 on November 25, 2012, 21:06:16 pm
πάντως από εκφώνηση:
να ορίζεται ακόμη η συνάρτηση sale() η οποία να υλοποιεί τη διαδικασία πώλησης ενός προϊόντος.
άρα εγώ καταλαβαίνω ότι αν ο πελάτης σε μια αγορά θέλει να αγοράσει ν προιόντα πρέπει να καλέσεις ν φορές την σειλ για κάθε προϊόν ξεχωριστά. :???:


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 25, 2012, 21:25:58 pm
πάντως από εκφώνηση:
να ορίζεται ακόμη η συνάρτηση sale() η οποία να υλοποιεί τη διαδικασία πώλησης ενός προϊόντος.
άρα εγώ καταλαβαίνω ότι αν ο πελάτης σε μια αγορά θέλει να αγοράσει ν προιόντα πρέπει να καλέσεις ν φορές την σειλ για κάθε προϊόν ξεχωριστά. :???:

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


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: sΚονταριτσα on November 25, 2012, 21:32:53 pm
Πως καλω την συναρτηση για το συγκεκριμενο αντικειμενο?ετσι ειναι σωστο?

Code:
for (;;){
          
          cout <<"An thelete na stamathsei h diadikasia polhshs pathste ton antistoixo kodiko/n";
          cin >>code;
          if (code==2012)break;
          
          for (i=0; i<synolikos_arithmos; i++){
          if (code==proionta[i].kodikos){
                                         sale(*proionta[i]);
                                         }
                                         }
         


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: kofski17 on November 25, 2012, 21:36:40 pm
πάντως από εκφώνηση:
να ορίζεται ακόμη η συνάρτηση sale() η οποία να υλοποιεί τη διαδικασία πώλησης ενός προϊόντος.
άρα εγώ καταλαβαίνω ότι αν ο πελάτης σε μια αγορά θέλει να αγοράσει ν προιόντα πρέπει να καλέσεις ν φορές την σειλ για κάθε προϊόν ξεχωριστά. :???:

Κάθε αντικείμενο του τύπου product, αποτελεί ένα συγκεκριμένο προϊόν, μιας συγκεκριμένης κατηγορίας. Επομένως, αν ένας αγοραστήες θέλει να αγοράσει N τεμάχια από ένα συγκεκριμένο προϊόν, τότε θα καλεσεις μια φορά τη συνάρτηση sale() και θα της δώσεις σαν όρισμα το συγκεκριμένο προϊόν.
πάλι απο εκφώνηση:
Όταν ένας πελάτης φτάνει στο ταμείο του καταστήματος εισάγεται ο κωδικός και η ποσότητα των προϊόντων (και όχι των τεμαχίων ) που αγόρασε
αυτό υποθέτω σημαίνει ότι όταν ο πελάτης πάει στο ταμέιο δεν έχει μαζι του Ν τεμάχια απο 1 προιόν, αλλά Ν προιόντα,για  το καθένα απτα οποια έχει παρει Μ1,Μ2,...,ΜΝ τεμάχια


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 25, 2012, 21:39:48 pm
πάντως από εκφώνηση:
να ορίζεται ακόμη η συνάρτηση sale() η οποία να υλοποιεί τη διαδικασία πώλησης ενός προϊόντος.
άρα εγώ καταλαβαίνω ότι αν ο πελάτης σε μια αγορά θέλει να αγοράσει ν προιόντα πρέπει να καλέσεις ν φορές την σειλ για κάθε προϊόν ξεχωριστά. :???:

Κάθε αντικείμενο του τύπου product, αποτελεί ένα συγκεκριμένο προϊόν, μιας συγκεκριμένης κατηγορίας. Επομένως, αν ένας αγοραστήες θέλει να αγοράσει N τεμάχια από ένα συγκεκριμένο προϊόν, τότε θα καλεσεις μια φορά τη συνάρτηση sale() και θα της δώσεις σαν όρισμα το συγκεκριμένο προϊόν.
πάλι απο εκφώνηση:
Όταν ένας πελάτης φτάνει στο ταμείο του καταστήματος εισάγεται ο κωδικός και η ποσότητα των προϊόντων (και όχι των τεμαχίων ) που αγόρασε
αυτό υποθέτω σημαίνει ότι όταν ο πελάτης πάει στο ταμέιο δεν έχει μαζι του Ν τεμάχια απο 1 προιόν, αλλά Ν προιόντα,για  το καθένα απτα οποια έχει παρει Μ1,Μ2,...,ΜΝ τεμάχια

Και εγώ αυτό κατάλαβα πως σημαίνει, και αυτό υλοποίησα στο πρόγραμμα μου...


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: kofski17 on November 25, 2012, 21:41:03 pm
πάντως από εκφώνηση:
να ορίζεται ακόμη η συνάρτηση sale() η οποία να υλοποιεί τη διαδικασία πώλησης ενός προϊόντος.
άρα εγώ καταλαβαίνω ότι αν ο πελάτης σε μια αγορά θέλει να αγοράσει ν προιόντα πρέπει να καλέσεις ν φορές την σειλ για κάθε προϊόν ξεχωριστά. :???:

Κάθε αντικείμενο του τύπου product, αποτελεί ένα συγκεκριμένο προϊόν, μιας συγκεκριμένης κατηγορίας. Επομένως, αν ένας αγοραστήες θέλει να αγοράσει N τεμάχια από ένα συγκεκριμένο προϊόν, τότε θα καλεσεις μια φορά τη συνάρτηση sale() και θα της δώσεις σαν όρισμα το συγκεκριμένο προϊόν.
πάλι απο εκφώνηση:
Όταν ένας πελάτης φτάνει στο ταμείο του καταστήματος εισάγεται ο κωδικός και η ποσότητα των προϊόντων (και όχι των τεμαχίων ) που αγόρασε
αυτό υποθέτω σημαίνει ότι όταν ο πελάτης πάει στο ταμέιο δεν έχει μαζι του Ν τεμάχια απο 1 προιόν, αλλά Ν προιόντα,για  το καθένα απτα οποια έχει παρει Μ1,Μ2,...,ΜΝ τεμάχια

Και εγώ αυτό κατάλαβα πως σημαίνει, και αυτό υλοποίησα στο πρόγραμμα μου...
άρα όταν σε μια αγορά ο πελάτης θέλει να αγοράσει Ν προϊόντα, πρέπει να καλέσεις Ν φορές την σειλ και όχι 1?
αυτό θέλω να ξεκαθαρίσω  :P


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 25, 2012, 21:44:12 pm
πάντως από εκφώνηση:
να ορίζεται ακόμη η συνάρτηση sale() η οποία να υλοποιεί τη διαδικασία πώλησης ενός προϊόντος.
άρα εγώ καταλαβαίνω ότι αν ο πελάτης σε μια αγορά θέλει να αγοράσει ν προιόντα πρέπει να καλέσεις ν φορές την σειλ για κάθε προϊόν ξεχωριστά. :???:

Κάθε αντικείμενο του τύπου product, αποτελεί ένα συγκεκριμένο προϊόν, μιας συγκεκριμένης κατηγορίας. Επομένως, αν ένας αγοραστήες θέλει να αγοράσει N τεμάχια από ένα συγκεκριμένο προϊόν, τότε θα καλεσεις μια φορά τη συνάρτηση sale() και θα της δώσεις σαν όρισμα το συγκεκριμένο προϊόν.
πάλι απο εκφώνηση:
Όταν ένας πελάτης φτάνει στο ταμείο του καταστήματος εισάγεται ο κωδικός και η ποσότητα των προϊόντων (και όχι των τεμαχίων ) που αγόρασε
αυτό υποθέτω σημαίνει ότι όταν ο πελάτης πάει στο ταμέιο δεν έχει μαζι του Ν τεμάχια απο 1 προιόν, αλλά Ν προιόντα,για  το καθένα απτα οποια έχει παρει Μ1,Μ2,...,ΜΝ τεμάχια

Και εγώ αυτό κατάλαβα πως σημαίνει, και αυτό υλοποίησα στο πρόγραμμα μου...
άρα όταν σε μια αγορά ο πελάτης θέλει να αγοράσει Ν προϊόντα, πρέπει να καλέσεις Ν φορές την σειλ και όχι 1?
αυτό θέλω να ξεκαθαρίσω  :P

Λογικά ναι, για Ν διαφορετικά προϊόντα (με διαφορετικό αριθμό τεμαχίων το καθένα) θα πρέπει να καλείς N φορές την sale().


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 25, 2012, 21:47:17 pm
Πως καλω την συναρτηση για το συγκεκριμενο αντικειμενο?ετσι ειναι σωστο?     

Μέσα στη main θα την καλείς ως εξής:
Code:
sale(proionta[i]);

Το function-definition, τότε, θα πρέπει να είναι:
Code:
float sale(&proion);


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 25, 2012, 21:50:19 pm
Ok, απλώς
μέσα στον for(  ; ; )
ανάλογα με τον κωδικό του προιόντος
καλείς την sale,
έχω κ ένα break σε περίπτωση που μου δώσει admin password

αλλά όταν δώσει admin pass δε θα βγει τελείως από τη for( ; ; )?
είναι σωστό αυτό σαν υλοποίηση?
εμείς δε θέλουμε να μείνει μέσα, για τον επόμενο πελάτη??


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Exomag on November 25, 2012, 21:57:20 pm
Ok, απλώς
μέσα στον for(  ; ; )
ανάλογα με τον κωδικό του προιόντος
καλείς την sale,
έχω κ ένα break σε περίπτωση που μου δώσει admin password

αλλά όταν δώσει admin pass δε θα βγει τελείως από τη for( ; ; )?
είναι σωστό αυτό σαν υλοποίηση?
εμείς δε θέλουμε να μείνει μέσα, για τον επόμενο πελάτη??

Η εκφώνηση δεν είναι απόλυτα σαφής σχετικά με το κατά πόσο η main() θα πρέπει να υλοποιεί την αγορά για πολλούς πελάτες (βέβαια χρησιμοποιεί το "πελάτες" σε πληθυντικό, οπότε μάλλον αυτό θέλει).
Σε αυτήν την περίπτωση θα πρέπει να φροντίσεις να μην βγαίνει τελείως έξω από το ατέρμων loop, έτσι ώστε να εξυπηρετούνται και οι υπόλοιποι πελάτες (δοκίμασε να χρησιμοποιήσεις continue ή κάποιο if {...} )


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Xleboniaris on November 25, 2012, 22:19:43 pm
Παιδιά τα έχω καταλάβει όλα αυτά που λέτε μέχρι στιγμής και έχω τελειώσει σχεδόν με την εργασία. Απλώς υπάρχει ένα σημείο που μπορεί να χρειαστεί να την αλλάξω αρκετά . Βασικά, όταν λέει η συνάρτηση sale να έχει πρόσβαση στα private δεδομένα , τι εννοεί ?? ότι η sale θα πρέπει να έχει όρισμα με αναφορά για να αλλάζει σε κάθε προϊόν πχ την διαθεσιμότητα ή ότι πρέπει να είναι friend στην κλάση product??


A, και +1 στην ερώτηση του μάνου


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: manos on November 25, 2012, 22:23:15 pm
Ξέρει κανείς πως δίνουμε ως τιμή σε μια μεταβλητή το ακέραιο μέρος μιας διαίρεσης?Το χρειάζομαι για να βρω το δώρο που παίρνει ο πελάτης για τα προιόντα τύπου 2.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: c0ndemn3d on November 25, 2012, 22:27:41 pm
Διαίρεση ακεραίων σου δίνει ακέραιο μέρος.


Αλλιώς γράψε: (int)(x/y) παρενθέσεις χρειάζονται


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: manos on November 25, 2012, 22:37:26 pm
Δεν υπάρχει κάποιος τελεστής?


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: sΚονταριτσα on November 25, 2012, 22:38:34 pm
την sale την οριζουμε ως εξης???

friend void sale (product &p):::::::::::::::::::::::::

πειτε λιγο γιατι εχω σκαλωσει λιγο.


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: jthois on November 25, 2012, 22:46:37 pm
την sale την οριζουμε ως εξης???

friend void sale (product &p):::::::::::::::::::::::::

πειτε λιγο γιατι εχω σκαλωσει λιγο.

Μέσα στην κλάση την γράφεις
Code:
friend float sale(product &p);

Όταν θα την ορίσεις έξω:
Code:
float sale (product &p){ ... }


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: c0ndemn3d on November 25, 2012, 22:52:14 pm
Δεν υπάρχει κάποιος τελεστής?


τι τον θες;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: jthois on November 25, 2012, 22:59:19 pm
Να επιστρέψω λίγο στο θέμα του constructor. Αφού διαβάσω τα στοιχεία ενός προιόντος πως τον καλώ; Κάτι τέτοιο δεν μου δουλεύει:
Code:
product1=product(id, stock, price);


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: heavy melon on November 25, 2012, 23:11:05 pm
Παιδιά,

Code:
for (;;){
         
          cout <<"An thelete na stamathsei h diadikasia polhshs pathste ton antistoixo kodiko/n";
          cin >>code;
         
         
          for (i=0; i<synolikos_arithmos; i++){
          if (code==proionta[i].getkodikos()){
                                         sale(proionta[i]);
                                         }
                                         }
          if (code==2012)break;
          }
     
      return 0;


σ' αυτό το σημείο του κώδικα που είναι μέσα στη main,
όταν το τρέχω, χωρίς να βάζω το 2012, με ρωτάει συνέχεια το ίδιο μήνυμα...
χωρίς να μπαίνει ποτέ στη sale μάλλον...

καμιά ιδέα τι παίζει?


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: NorthusXL on November 25, 2012, 23:16:53 pm
Να επιστρέψω λίγο στο θέμα του constructor. Αφού διαβάσω τα στοιχεία ενός προιόντος πως τον καλώ; Κάτι τέτοιο δεν μου δουλεύει:
Code:
product1=product(id, stock, price);

Έχεις δεσμεύσει δυναμικά με μάλλοκ  ;


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: jthois on November 25, 2012, 23:40:11 pm
Να επιστρέψω λίγο στο θέμα του constructor. Αφού διαβάσω τα στοιχεία ενός προιόντος πως τον καλώ; Κάτι τέτοιο δεν μου δουλεύει:
Code:
product1=product(id, stock, price);

Έχεις δεσμεύσει δυναμικά με μάλλοκ  ;

Είχα βάλει new, και δοκίμαζα διάφορα αλλά με αυτόν τον τρόπο δούλεψε! Thanks!!


Title: Re: [C++] Άσκηση B - 2012/2013 - Προθεσμία 25/11
Post by: Mr K on November 29, 2012, 11:43:51 am
Και η λύση που έχει διαφορές απο αυτή που περιγράφει ο Κορτέσης..

(Μερικά σχόλια είναι άσχετα, πήγαιναν σε μένα ενώ έκανα debugging)