THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: vasilis94 on November 01, 2014, 16:57:02 pm



Title: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: vasilis94 on November 01, 2014, 16:57:02 pm
Άσκηση Β

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

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

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

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

Σημείωση: Το λογισμικό να ικανοποιεί την αρχή της ενσωμάτωσης


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: GiorgosOmegas on November 03, 2014, 22:11:44 pm
Ξέρει κανείς τα email των μεταπτυχιακών που κάνουν τα εργαστήρια; Γενικά ξέρει κανείς αν απαντάνε σε απορίες αμα στείλω κώδικα;


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: nohponex on November 03, 2014, 22:17:08 pm
Ξέρει κανείς τα email των μεταπτυχιακών που κάνουν τα εργαστήρια; Γενικά ξέρει κανείς αν απαντάνε σε απορίες αμα στείλω κώδικα;
Ο Καλογιάννης σας κανει σωστά ?
gregory.kalogiannis@gmail.com


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: GiorgosOmegas on November 03, 2014, 22:20:05 pm
Ξέρει κανείς τα email των μεταπτυχιακών που κάνουν τα εργαστήρια; Γενικά ξέρει κανείς αν απαντάνε σε απορίες αμα στείλω κώδικα;
Ο Καλογιάννης σας κανει σωστά ?
gregory.kalogiannis@gmail.com

Δε ξέρω.. Κανεις που το κάνει φέτος;;

Ευχαριστώ πάντως  :)


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Fcoriolis on November 03, 2014, 22:22:02 pm
Ο Σισμάνης κάνει, και το mail νομίζω είναι στο ethmmy!


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: GiorgosOmegas on November 03, 2014, 22:31:15 pm
Ο Σισμάνης κάνει, και το mail νομίζω είναι στο ethmmy!

Ok, thanks :)


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 05, 2014, 20:25:36 pm
θα πρεπει να δημιουργησω μια μονο κλαση product ?
Ή μια κλαση product και 3(μια για καθε τυπο προιοντος) κλασεις πχ product1,product2,product3 ?


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Fcoriolis on November 05, 2014, 20:29:21 pm
θα πρεπει να δημιουργησω μια μονο κλαση product ?
Ή μια κλαση product και 3(μια για καθε τυπο προιοντος) κλασεις πχ product1,product2,product3 ?
Μια κλάση θέλεις, σκέψου απλά πως μπορείς να δημιουργείς τρία προϊόντα με μια μόνο κλάση, τι χρειάζεται να έχει τρεις φορές η κλάση;


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 05, 2014, 20:36:09 pm
θα πρεπει να δημιουργησω μια μονο κλαση product ?
Ή μια κλαση product και 3(μια για καθε τυπο προιοντος) κλασεις πχ product1,product2,product3 ?
Μια κλάση θέλεις, σκέψου απλά πως μπορείς να δημιουργείς τρία προϊόντα με μια μόνο κλάση, τι χρειάζεται να έχει τρεις φορές η κλάση;

H ασκηση εχει μεσα κληρονιμικοτητα κλασεων σωστα ?? και με τα εξτρα στοιχεια του καθε προιοντος τι γινεται ? π.χ το προιον τυπου 3 θα εχει μια μεταβλητη για το βαρος αυτη,οπως και οι υπολοιπες
(εξτρα) μεταβλητες θα δηλωθουν ολες στην μοναδικη κλαση product ?


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Fcoriolis on November 05, 2014, 20:41:05 pm
τι έχει κάθε κλάση όσες φορές θέλει, και εκτελείται κάθε φορά αναλόγως τα ορίσματα;


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 05, 2014, 20:46:46 pm
τι έχει κάθε κλάση όσες φορές θέλει, και εκτελείται κάθε φορά αναλόγως τα ορίσματα;
Λες οτι αυτο θα γινει με συναρτησεις αρχικων συνθηκων....οκ
Ομως ξαναρωταω γιατι δεν καταλαβα...Ολες οι μεταβλητες απο τους 3 τυπους προιοντων θα δηλωθουν στην κλαση product ?


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Fcoriolis on November 05, 2014, 20:49:51 pm
E ναι, και κάθε constructor θα έχει τα ορίσματα του κάθε φορά!


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 05, 2014, 20:52:49 pm
ok thanks !!


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 05, 2014, 20:55:02 pm
oποτε δεν εχω κληρονομικοτητα σε αυτη την εργασια..
αν ειχα κληρονομικοτητα επρεπε να ειχα και παραπανω κλασεις απο μια σωστα ??(διαβαζα θεωρεια για κληρονομικοτητα γ'αυτο μπερδευτηκα)


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Fcoriolis on November 05, 2014, 20:56:21 pm
oποτε δεν εχω κληρονομικοτητα σε αυτη την εργασια..
αν ειχα κληρονομικοτητα επρεπε να ειχα και παραπανω κλασεις απο μια σωστα ??(διαβαζα θεωρεια για κληρονομικοτητα γ'αυτο μπερδευτηκα)
Σωστά, δεν πρέπει να χρειάζεται κληρονομικότητα


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: K on November 05, 2014, 21:07:28 pm
Και γω απ' ότι βλέπω κληρονομικότητα δεν έχει.


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 05, 2014, 21:24:34 pm
εκανα ετσι την κλαση
Code:
¨class product
{
    int code,apothema,offer;
    float price,kg_price;


  public:
      product(int a,int b,float c);
      product(int a,int b,float c,int d);
      product(int a,int b,float c);

};

και μου βγαζει error  'product::product(int, int, float)' cannot be overloaded !!
δεν μπορω να εχω σ.α.σ με ιδια ορισματα μαλλον....?
και αν βαλλω d,e,f αντι για a,b,c το ιδιο βγαζει παλι...



Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 05, 2014, 21:43:17 pm
εκανα ετσι την κλαση
Code:
¨class product
{
    int code,apothema,offer;
    float price,kg_price;


  public:
      product(int a,int b,float c);
      product(int a,int b,float c,int d);
      product(int a,int b,float c);

};

και μου βγαζει error  'product::product(int, int, float)' cannot be overloaded !!
δεν μπορω να εχω σ.α.σ με ιδια ορισματα μαλλον....?
και αν βαλλω d,e,f αντι για a,b,c το ιδιο βγαζει παλι...


τελικα αλλαξα την σειρα των ορισματον της 3ης σ.α.σ σε float a,int b,int c και το δεχεται τωρα
αλλα πρεπει να υπαρχει πιο καλος τροπος
στο internet λεει οτι γινεται με static αλλα μου φανηκε περιπλοκο....


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Cern O' Bill on November 06, 2014, 00:09:13 am
το αποθεμα στον τυπο 3 ειναι σε kg αρα float^


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: vasilis94 on November 06, 2014, 00:15:31 am
εκανα ετσι την κλαση
Code:
¨class product
{
    int code,apothema,offer;
    float price,kg_price;


  public:
      product(int a,int b,float c);
      product(int a,int b,float c,int d);
      product(int a,int b,float c);

};

και μου βγαζει error  'product::product(int, int, float)' cannot be overloaded !!
δεν μπορω να εχω σ.α.σ με ιδια ορισματα μαλλον....?
και αν βαλλω d,e,f αντι για a,b,c το ιδιο βγαζει παλι...


τελικα αλλαξα την σειρα των ορισματον της 3ης σ.α.σ σε float a,int b,int c και το δεχεται τωρα
αλλα πρεπει να υπαρχει πιο καλος τροπος
στο internet λεει οτι γινεται με static αλλα μου φανηκε περιπλοκο....

Νομίζω ότι αρκεί αυτό που κάνεις. Σε παρόμοια εργασία πέρυσι κάτι τέτοιο έκανε κι ο Κορτέσης όπως τσέκαρα. Σίγουρα, δε μπορούσες να κάνεις αυτό που πήγες αρχικά, πως θα ξέρει ο compiler ποια συνάρτηση να εκτελέσει όταν θα στείλεις int,int,float;

Ο μόνος τρόπος που χαμε κάνει πέρυσι για ίδια ονόματα - ίδια ορίσματα είναι με pointer σε παραγόμενη κλάση (όπου σε κάθε παραγόμενη ορίζοταν διαφορετικά η συνάρτηση), αλλά αυτά είναι καμενιές επόμενων εργασιών.


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 06, 2014, 00:49:17 am
ευχαριστω πολυ !!


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 06, 2014, 00:53:57 am
εκανα ετσι την κλαση
Code:
¨class product
{
    int code,apothema,offer;
    float price,kg_price;


  public:
      product(int a,int b,float c);
      product(int a,int b,float c,int d);
      product(int a,int b,float c);

};

και μου βγαζει error  'product::product(int, int, float)' cannot be overloaded !!
δεν μπορω να εχω σ.α.σ με ιδια ορισματα μαλλον....?
και αν βαλλω d,e,f αντι για a,b,c το ιδιο βγαζει παλι...


τελικα αλλαξα την σειρα των ορισματον της 3ης σ.α.σ σε float a,int b,int c και το δεχεται τωρα
αλλα πρεπει να υπαρχει πιο καλος τροπος
στο internet λεει οτι γινεται με static αλλα μου φανηκε περιπλοκο....

Νομίζω ότι αρκεί αυτό που κάνεις. Σε παρόμοια εργασία πέρυσι κάτι τέτοιο έκανε κι ο Κορτέσης όπως τσέκαρα. Σίγουρα, δε μπορούσες να κάνεις αυτό που πήγες αρχικά, πως θα ξέρει ο compiler ποια συνάρτηση να εκτελέσει όταν θα στείλεις int,int,float;

Ο μόνος τρόπος που χαμε κάνει πέρυσι για ίδια ονόματα - ίδια ορίσματα είναι με pointer σε παραγόμενη κλάση (όπου σε κάθε παραγόμενη ορίζοταν διαφορετικά η συνάρτηση), αλλά αυτά είναι καμενιές επόμενων εργασιών.
το τι κανουν αυτες οι 3 συναρτησεις α.σ το οριζω πιο κατω...ομως τι θα γινει θα εκτελεστουν και οι 3 με τη σειρα? εγω τις χρησιμοποιω για να ορισω π.χ στην πρωτη α=code,b=apothema,c=price στην 2η α=μπλα,β=μπλα κλπ κλπ το ιδιο και στην 3η
ειναι σωστο αυτο που κανω ??


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Napoleon on November 06, 2014, 01:19:48 am
δεν γίνεται για ένα αντικείμενο να εκτελεστούν και οι 3,γιατί ο constructor εκτελείται όταν το ορίζεις και μπορείς να το ορίσεις μια φορά


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 06, 2014, 21:03:50 pm
"Τα αντικείμενα του πίνακα να αντιστοιχούν στα διαφορετικά προϊόντα που υπάρχουν στο κατάστημα. ""
Αυτο πως θα το κανω ??
Οκ.Εκανα δυν.δεσμευση μνημης,και με cout,cin ζηταω τον αριθμο των προιοντων που υπαρχουν στο καταστημα (n προιοντα).Ομως πως θα καταχωρισω τα προιοντα στον πινακα αυτον αναλογα με την κατηγορια στην οποια ανηκουν ?
θα το κανω με for ?? πρεπει να ελεγχω τι ειδους προιον ειναι το καθενα ?


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Napoleon on November 06, 2014, 21:06:37 pm
με for.Μπορείς να ζητάς την κατηγορία του προιόντος και μετά με switch να καλείς τον αντίστοιχο constructor


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 06, 2014, 21:18:45 pm
με for.Μπορείς να ζητάς την κατηγορία του προιόντος και μετά με switch να καλείς τον αντίστοιχο constructor
ωραια αυτο σκεφτηκα και εγω...
δηλαδη θα καλειται ο αντιστοιχος constructor και θα αποθηκευεται το προιον σε καθε loop ?


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Napoleon on November 06, 2014, 22:42:50 pm
Ναι


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 06, 2014, 23:01:08 pm
o constructor μια φορα δεν καλειται ομως ?? πως θα κανω loop εγω ??  :???:
ή μηπως καλειται καθε φορα που δημιουργειται ενα αντικειμενο ??


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Napoleon on November 06, 2014, 23:34:30 pm
προφανώς και καλείται κάθε φορά που φτιάχνεις αντικείμενο.δηλαδή καν το κάπως έτσι:
Code:
for(...) {
switch...
case 1:
product a(int a,int b,float c)
array[i]=a
case 2:
product b(float,int,int)
pinakas[i]=b
κλπ


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 06, 2014, 23:51:00 pm
στους 3 διαφορετικους constructors ζηταω τον κωδικο την τιμη κλπ κλπ (αναλογα τι στοιχεια εχει καθε κατηγορια προιοντος)
Μετα ομως στην main πως θα καλεσω αυτους τους constructors ??
π.χ εκανα αυτο
Code:
product(int a,int b,float c);
      product(int a,int b,float c,int d);
      product(float a,int b,int c);

και μετα στην main θα καλεσω τον constructor ετσι:
Code:
product(a,b,c)
??


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Napoleon on November 07, 2014, 01:01:48 am
o constructor δημιουργεί αντικείμενο.Πχ αν θες να δημιουργήσεις ένα αντικείμενο που λέγεται example και θες να το δημιουργήσεις με τον 1ο constructor γράφεις
Code:
product example(a,b,c)


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airpap on November 07, 2014, 18:48:26 pm
Quote
o constructor δημιουργεί αντικείμενο.Πχ αν θες να δημιουργήσεις ένα αντικείμενο που λέγεται example και θες να το δημιουργήσεις με τον 1ο constructor γράφεις

και ποια ειναι η διαφορα αμα θες να δημιουργησεις αντικειμενο με τον δευτερο ή τριτο constructor?


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Kthulu on November 07, 2014, 19:07:19 pm
Οι 3 διαφορετικες κατηγορίες δεν ταυτίζονται με τα διαφορετικά προιόντα έτσι;
υ.γ. Το ξερω πως είναι χαζή η ερώτηση, αλλά για σιγουρα..


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 07, 2014, 19:08:32 pm
Quote
o constructor δημιουργεί αντικείμενο.Πχ αν θες να δημιουργήσεις ένα αντικείμενο που λέγεται example και θες να το δημιουργήσεις με τον 1ο constructor γράφεις

και ποια ειναι η διαφορα αμα θες να δημιουργησεις αντικειμενο με τον δευτερο ή τριτο constructor?

αμα θες να δημιουργησεις αντικειμενο με τον 2ο ή 3ο constructor
τοτε καλεσε ετσι την συναρτηση(τουλαχιστον αυτο εκανα εγω αμα υπαρχει λαθος να μου πειτε)
Code:

case 1:

case 2:
product product2(code,apothema,price,offer);
P[i]=product2;//αποθηκευση σε πινακα

case 3:
product product3(kg_price,code_apothema);
P[i]=product3;


Δηλαδη ο 2ος constructor διαφοροποιηται απο τον 1ο επειδη εχει ενα ορισμα παραπανω και ο 3ος απο τον 1ο γιατι ειναι (float,int,int) αντι για (int,int,float)


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 07, 2014, 19:10:46 pm
Οι 3 διαφορετικες κατηγορίες δεν ταυτίζονται με τα διαφορετικά προιόντα έτσι;
υ.γ. Το ξερω πως είναι χαζή η ερώτηση, αλλά για σιγουρα..
αν καταλαβα καλα την ερωτηση σου οχι δεν ταυτιζονται
δηλαδη μπορεις να εχεις 100 προιοντα π.χ αλλα οι κατηγοριες θα ειναι 3 παλι...καθε προιον ανηκει σε μια απο τις 3 κατηγοριες


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Kthulu on November 07, 2014, 19:14:38 pm
Οκ σε ευχαριστω!


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airpap on November 07, 2014, 19:27:20 pm
Quote
o constructor δημιουργεί αντικείμενο.Πχ αν θες να δημιουργήσεις ένα αντικείμενο που λέγεται example και θες να το δημιουργήσεις με τον 1ο constructor γράφεις

και ποια ειναι η διαφορα αμα θες να δημιουργησεις αντικειμενο με τον δευτερο ή τριτο constructor?

αμα θες να δημιουργησεις αντικειμενο με τον 2ο ή 3ο constructor
τοτε καλεσε ετσι την συναρτηση(τουλαχιστον αυτο εκανα εγω αμα υπαρχει λαθος να μου πειτε)
Code:

case 1:

case 2:
product product2(code,apothema,price,offer);
P[i]=product2;//αποθηκευση σε πινακα

case 3:
product product3(kg_price,code_apothema);
P[i]=product3;


Δηλαδη ο 2ος constructor διαφοροποιηται απο τον 1ο επειδη εχει ενα ορισμα παραπανω και ο 3ος απο τον 1ο γιατι ειναι (float,int,int) αντι για (int,int,float)

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


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Μουργόλυκος on November 07, 2014, 20:29:56 pm
Αφου θα φτιαξουμε τον πινακα με τα αντικειμενα απο τις 3 διαφορετικες κατηγοριες, πως θα τον προσπελασουμε ετσι ωστε να βρουμε τον κωδικο που εδωσε ο πελατης?


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: airguitar on November 07, 2014, 20:43:31 pm
στη συναρτηση sale πρεπει να καταχωρησω τα προιοντα που αγορασε ο πελατης σε πινακα ?


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Napoleon on November 08, 2014, 00:57:03 am
Αφου θα φτιαξουμε τον πινακα με τα αντικειμενα απο τις 3 διαφορετικες κατηγοριες, πως θα τον προσπελασουμε ετσι ωστε να βρουμε τον κωδικο που εδωσε ο πελατης?

Code:
Int thesi
For(....)
If kodikospelati==pinakas[i].code
thesi=i
στη συναρτηση sale πρεπει να καταχωρησω τα προιοντα που αγορασε ο πελατης σε πινακα ?

Όχι μπορείς να την καλείς για το κάθε ένα και να προσθετεις σε μια μεταβλητή στη main κάθε τιμή που επιστρέφει


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Μουργόλυκος on November 08, 2014, 17:19:27 pm
Αφου θα φτιαξουμε τον πινακα με τα αντικειμενα απο τις 3 διαφορετικες κατηγοριες, πως θα τον προσπελασουμε ετσι ωστε να βρουμε τον κωδικο που εδωσε ο πελατης?

Code:
Int thesi
For(....)
If kodikospelati==pinakas[i].code
thesi=i

Και θα πρεπει πρωτα για να το κανω αυτο στην κλαση να ορισω την getcode, ή δεν χρειαζεται?


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Kthulu on November 08, 2014, 17:30:00 pm
Έχει κανείς ιδέα για το που θα δίνεται η ποσότητα των τεμαχίων που υπάρχουν σε κάθε προιόν; Η δήλωση των διαφορετικών προιόντων πρέπει γίνει από πριν ή τη στιγμή που ο πελάτης αγοράζει;;


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Napoleon on November 08, 2014, 17:49:08 pm
Αφου θα φτιαξουμε τον πινακα με τα αντικειμενα απο τις 3 διαφορετικες κατηγοριες, πως θα τον προσπελασουμε ετσι ωστε να βρουμε τον κωδικο που εδωσε ο πελατης?

Code:
Int thesi
For(....)
If kodikospelati==pinakas[i].code
thesi=i

Και θα πρεπει πρωτα για να το κανω αυτο στην κλαση να ορισω την getcode, ή δεν χρειαζεται?

ναι αυτό ήθελα να πω kodikospelati==pinakas.getcode();

(χρειάζεται γιατί η code είναι private)


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Vlassis on November 08, 2014, 20:38:21 pm
Αν καποιος στην κατηγορια δωσει κατι διαφορετικο απο 1, 2 και 3, τι πρεπει να γινεται??
edit:
Μπορουμε να ορισουμε το αποθεμα ως float και αναλογα την τιμη που του δινουμε να το παιρνει η συναρτηση ειτε ως int ειτε ως float?


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Napoleon on November 08, 2014, 21:49:38 pm
Αν καποιος στην κατηγορια δωσει κατι διαφορετικο απο 1, 2 και 3, τι πρεπει να γινεται??
edit:
Μπορουμε να ορισουμε το αποθεμα ως float και αναλογα την τιμη που του δινουμε να το παιρνει η συναρτηση ειτε ως int ειτε ως float?

όχι


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Fedra on November 09, 2014, 20:18:58 pm
μήπως μπορεί να εξηγήσει κάποιος τι ακριβώς πρέπει να γίνεται στην main με τον πίνακα? γτ την εκφώνηση δεν την καταλαβαίνω..  :-\


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: ablaoublas on November 09, 2014, 20:23:18 pm
Χρειάζεται να χρησιμοποιήσουμε και φιλικές συναρτήσεις ; Αν ναι μπόρει να μου εξηγήσει κάποιος γιατί ;

 Μήπως ως στοιχείο της κλάσης πρέπει να υπάρχει και η κατηγορία που ανήκει το προιόν ;


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Baratheon on November 09, 2014, 21:10:45 pm
Χρειάζεται να χρησιμοποιήσουμε και φιλικές συναρτήσεις ; Αν ναι μπόρει να μου εξηγήσει κάποιος γιατί ;

 Μήπως ως στοιχείο της κλάσης πρέπει να υπάρχει και η κατηγορία που ανήκει το προιόν ;

ναι χρειαζεται γιατι σου λεει η sale να εχει προσβαση στo private κομματι της κλασσης


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: ablaoublas on November 09, 2014, 21:15:14 pm
Χρειάζεται να χρησιμοποιήσουμε και φιλικές συναρτήσεις ; Αν ναι μπόρει να μου εξηγήσει κάποιος γιατί ;

 Μήπως ως στοιχείο της κλάσης πρέπει να υπάρχει και η κατηγορία που ανήκει το προιόν ;

ναι χρειαζεται γιατι σου λεει η sale να εχει προσβαση στo private κομματι της κλασσης

Μα αν την δηλώσω στο public κομμάτι της κλάσης δεν θα έχει ούτως ή άλλως πρόσβαση στο private κομμάτι της κλάσης ; Γιατί πρέπει να γίνει και friend ;


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Μουργόλυκος on November 09, 2014, 21:22:55 pm
Χρειάζεται να χρησιμοποιήσουμε και φιλικές συναρτήσεις ; Αν ναι μπόρει να μου εξηγήσει κάποιος γιατί ;

 Μήπως ως στοιχείο της κλάσης πρέπει να υπάρχει και η κατηγορία που ανήκει το προιόν ;

ναι χρειαζεται γιατι σου λεει η sale να εχει προσβαση στo private κομματι της κλασσης

Μα αν την δηλώσω στο public κομμάτι της κλάσης δεν θα έχει ούτως ή άλλως πρόσβαση στο private κομμάτι της κλάσης ; Γιατί πρέπει να γίνει και friend ;
Μονο αμα φτιαξεις συναρτησεις get θα εχει προσβαση. Για να εχει απευθειας προσβαση πρεπει να ειναι friend


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: ablaoublas on November 09, 2014, 23:03:11 pm
Χρειάζεται να χρησιμοποιήσουμε και φιλικές συναρτήσεις ; Αν ναι μπόρει να μου εξηγήσει κάποιος γιατί ;

 Μήπως ως στοιχείο της κλάσης πρέπει να υπάρχει και η κατηγορία που ανήκει το προιόν ;

ναι χρειαζεται γιατι σου λεει η sale να εχει προσβαση στo private κομματι της κλασσης

Μα αν την δηλώσω στο public κομμάτι της κλάσης δεν θα έχει ούτως ή άλλως πρόσβαση στο private κομμάτι της κλάσης ; Γιατί πρέπει να γίνει και friend ;
Μονο αμα φτιαξεις συναρτησεις get θα εχει προσβαση. Για να εχει απευθειας προσβαση πρεπει να ειναι friend
Τελικά αν μία τυχαία συνάρτηση την δηλώσω στο public μέρος που έχει πρόσβαση ; Πουθενά ; Γιατί με βάση αυτά που λες και η συνάρτηση get δεν πρέπει να είναι friend ; Πωωω παίζει να έκανα χοντρομαλακία στην προηγούμενη εργασία  :-[


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: Baratheon on November 09, 2014, 23:48:15 pm
Ετσι οπως εχω καταλαβει απο τη θεωρια η φιλικη συναρτηση δεν ειναι μελος της κλασης απλα την δηλωνεις ως friend μεσα στην κλαση για να εχει προσβαση στα στοιχεια της.Γιαυτο και μετα στη main δεν γραφεις πχ a.sale() αλλα σκετο sale(,,,)..δηλαδη δεν την καλεις μεσω καποιου αντικειμενου αλλα τα ορισματα της μπορουν (πρεπει στην περιπτωση μας) να ειναι αντικειμενα.Αυτα καταλαβα αν κανω λαθος ας διορθωσει καποιος!!


Title: Re: [C++] Άσκηση B - 2014/2015 - Προθεσμία 9/11/2014
Post by: ablaoublas on November 09, 2014, 23:55:30 pm
Ετσι οπως εχω καταλαβει απο τη θεωρια η φιλικη συναρτηση δεν ειναι μελος της κλασης απλα την δηλωνεις ως friend μεσα στην κλαση για να εχει προσβαση στα στοιχεια της.Γιαυτο και μετα στη main δεν γραφεις πχ a.sale() αλλα σκετο sale(,,,)..δηλαδη δεν την καλεις μεσω καποιου αντικειμενου αλλα τα ορισματα της μπορουν (πρεπει στην περιπτωση μας) να ειναι αντικειμενα.Αυτα καταλαβα αν κανω λαθος ας διορθωσει καποιος!!


A σωστός, αυτή είναι η ουσία  8))  Επιπλέον δεν γράφεις float a::sale(,,,) αλλα σκέτο float sale(,,,) για να γράψεις τον κώδικα ...