THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: Orfikoss on October 31, 2010, 12:35:36 pm



Title: [C++] 2η Εργασία 2010
Post by: Orfikoss on October 31, 2010, 12:35:36 pm
Εργασία Β (Hμ/νία λήξης δηλώσεων: 07/11/2010)


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

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

 Στο λογισμικό να ορίζεται ακόμη η κλάση sea_site η οποία να υλοποιεί τα οικόπεδα με πρόσοψη στην θάλασσα. Με τη δημιουργία αντικειμένων στον τύπο της κλάσης να διαβάζονται, εκτός από τα στοιχεία που διαβάστηκαν και στην περίπτωση της κλάσης site, ο αριθμός των κορυφών που ορίζουν την πρόσοψη στη θάλασσα, και να δεσμεύεται δυναμικά μνήμη όπου να καταχωρούνται οι αύξοντες αριθμοί αυτών των κορυφών. Η κλάση να διαθέτει, εκτός από τις συναρτήσεις που ορίζονται για την κλάση site και μια συνάρτηση η οποία να υπολογίζει το μήκος της πρόσοψης του οικοπέδου στην θάλασσα.
Στο λογισμικό να οριστεί η συνάρτηση calk η οποία να δέχεται έναν πίνακα αντικειμένων τύπου site και έναν πίνακα αντικειμένων τύπου sea_site. Στη συνάρτηση να δίνεται το ποσοστό εισφοράς σε Γη, η τιμή για κάθε τετραγωνικό μέτρο που πρέπει να καταβάλουν οι ιδιοκτήτες εάν μετά την εισφορά σε γη το οικόπεδο είναι μικρότερο των 100 τετραγωνικών μέτρων, καθώς και το ποσό που πρέπει να καταβάλουν οι ιδιοκτήτες παραθαλασσίων οικοπέδων για κάθε μέτρο της πρόσοψης του οικοπέδου τους στην θάλασσα. Η συνάρτηση να υπολογίζει τη συνολική έκταση που θα εισφέρουν οι ιδιοκτήτες και το συνολικό ποσό που θα εισπραχθεί.

Η συνάρτηση main του προγράμματος να διαβάζει τον αριθμό των οικοπέδων που δεν έχουν πρόσοψη στη θάλασσα και τον αντίστοιχο αριθμό των παραθαλασσίων οικοπέδων. Στη συνέχεια αφού δεσμευτεί δυναμικά μνήμη για την καταχώρηση του αντίστοιχου πίνακα με αντικείμενα τύπου site  και του αντίστοιχου πίνακα με αντικείμενα τύπου sea_site να καλείται η συνάρτηση calk για να υπολογιστεί η συνολική έκταση που θα εισφέρουν οι ιδιοκτήτες και το συνολικό ποσό που θα εισπραχθεί. Το πρόγραμμα, αφού εκτυπώσει αυτά τα ποσά,  να εκτυπώνει για κάθε ιδιοκτήτη τα στοιχεία του οικοπέδου του,  την έκταση που θα απομείνει μετά την εισφορά σε Γη και τα χρήματα που θα καταβάλει.

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

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


Title: Re: [C++] 2η Εργασία 2010
Post by: rspappas on November 01, 2010, 15:04:37 pm
 ^ex_shocked^

 ^eatpaper^


Title: Re: [C++] 2η Εργασία 2010
Post by: Dimitris1989 on November 01, 2010, 17:22:21 pm
1)Ο τύπος που δίνει το εμβαδόν είναι σωστός; Στο τημμυ γράφει:

Quote
area = Σ(xi+1-xi)(yi+1-yi)/2

αλλά δε μου βγάζει σωστά το εμβαδό πχ ενός κύβου

2)
Quote
"Να χρησιμοποιηθεί η συνάρτηση malloc για κάθε δυναμική δέσμευση μνήμης. Η μνήμη που δεσμεύτηκε δυναμικά να αποδεσμευτεί με το τέλος του προγράμματος. "

Για ποιο λόγο χρησιμοποιήσουμε την malloc στη C++ από τη στιγμή που υπάρχει η new;

3)
Quote
"Για την εισφορά σε Γη ορίζεται ένα ποσοστό επί της έκτασης του οικοπέδου και εάν το οικόπεδο που απομένει είναι μικρότερο των 100 τετραγωνικών μέτρων, η εισφορά σε Γη περιορίζεται στην πάνω από τα 100 τετραγωνικών μέτρα έκταση. Στην περίπτωση αυτή ο ιδιοκτήτης καταβάλει, για κάθε τετραγωνικό μέτρο που υπολείπεται έως ότου συμπληρωθούν τα 100 ένα συγκεκριμένο ποσό. Εάν το οικόπεδο έχει πρόσοψη στη θάλασσα ο ιδιοκτήτης καταβάλει ένα επιπλέον ποσό για κάθε μέτρο της πρόσοψης αυτής."
Μπορεί κάποιος να εξηγήσει τι ακριβώς γίνεται εδώ


Title: Re: [C++] 2η Εργασία 2010
Post by: Orfikoss on November 01, 2010, 22:52:40 pm
1)Ο τύπος που δίνει το εμβαδόν είναι σωστός; Στο τημμυ γράφει:

Quote
area = Σ(xi+1-xi)(yi+1-yi)/2

αλλά δε μου βγάζει σωστά το εμβαδό πχ ενός κύβου

Αυτόν τον τύπο έχει στο doc. Στη wikipedia (link (http://en.wikipedia.org/wiki/Polygon#Area_and_centroid)) έχει τον τύπο Tex code


2)
Quote
"Να χρησιμοποιηθεί η συνάρτηση malloc για κάθε δυναμική δέσμευση μνήμης. Η μνήμη που δεσμεύτηκε δυναμικά να αποδεσμευτεί με το τέλος του προγράμματος. "

Για ποιο λόγο χρησιμοποιήσουμε την malloc στη C++ από τη στιγμή που υπάρχει η new;
Γιατί έτσι θέλει ο κορτέσης :p


3)
Quote
"Για την εισφορά σε Γη ορίζεται ένα ποσοστό επί της έκτασης του οικοπέδου και εάν το οικόπεδο που απομένει είναι μικρότερο των 100 τετραγωνικών μέτρων, η εισφορά σε Γη περιορίζεται στην πάνω από τα 100 τετραγωνικών μέτρα έκταση. Στην περίπτωση αυτή ο ιδιοκτήτης καταβάλει, για κάθε τετραγωνικό μέτρο που υπολείπεται έως ότου συμπληρωθούν τα 100 ένα συγκεκριμένο ποσό. Εάν το οικόπεδο έχει πρόσοψη στη θάλασσα ο ιδιοκτήτης καταβάλει ένα επιπλέον ποσό για κάθε μέτρο της πρόσοψης αυτής."
Μπορεί κάποιος να εξηγήσει τι ακριβώς γίνεται εδώ

Αν το ποσοστό που πρέπει να δώσεις είναι πχ x% τότε, αν αφαιρέσεις από το οικόπεδο σου x% και το αποτέλεσμα είναι μικρότερο από 100τμ τότε κρατάς τα 100τμ και πληρώνεις κάτι για τη διαφορά...


Title: Re: [C++] 2η Εργασία 2010
Post by: pepe on November 04, 2010, 00:59:17 am
μπορώ σε 2 διαφορετικές κλάσεις να έχω ίδια ονόματα μεταβλητών?


Title: Re: [C++] 2η Εργασία 2010
Post by: Orfikoss on November 04, 2010, 01:11:46 am
ναι, αφού είναι τοπικές  ;)


Title: Re: [C++] 2η Εργασία 2010
Post by: ScytheB on November 04, 2010, 17:39:15 pm
Η τραγικότητα των εκφωνήσεων του Κορτέση...

Έλεος , λάθος τύπος εμβαδού... και λέω γτ δεν δουλεύει το πρόγραμμα... ΑΑΑ>...

Αυτά...


Title: Re: [C++] 2η Εργασία 2010
Post by: zorono1 on November 05, 2010, 12:27:35 pm
Με την πλευρά που κοιτάζει θάλασσα έβγαλε κανείς κανα συμπέρασμα??
βασικά:
1)οι κορυφές που θα διαβάσουμε γι αυτή την πλευρά δεν περιλαμβάνονται στις κορυφές του οικοπέδου που διαβάσαμε για να υπολογίσουμε το εμβαδόν του?

2)πως σκατά θα καταχωρούνται οι αύξοντες αριθμοί κορυφών????

3)πως υπολογίζουμε το μήκος της πλευράς..??

Ευχαριστώ εκ των προτέρων


Title: Re: [C++] 2η Εργασία 2010
Post by: .nikos. on November 05, 2010, 13:14:25 pm
Quote from: ethmmy
Παράταση της Εργασίας Β μέχρι και τη Δευτέρα, 8/11

5 Νοε 2010 11:49 πμ

Συμεωνίδης

Μετά  από  παράκληση  αρκετών  συναδέλφων  σας,  δίνεται  παράταση  μιας  ημέρας  για  την  εργασία  Β.
Η  λήξη  της  προθεσμίας  είναι  πλέον  τη  Δευτέρα  8/11,  23:59.
Παρακαλώ  να  ενημερώσετε  τους  συναδέλφους  σας.


Title: Re: [C++] 2η Εργασία 2010
Post by: nikitas350 on November 05, 2010, 16:36:28 pm
calk από το calkulate


Title: Re: [C++] 2η Εργασία 2010
Post by: Tracy_McGrady on November 05, 2010, 18:12:34 pm
calk από το calkulate
like!Και όχι μόνο...


Title: Re: [C++] 2η Εργασία 2010
Post by: epi on November 05, 2010, 19:58:27 pm
μπορώ σε 2 διαφορετικές κλάσεις να έχω ίδια ονόματα μεταβλητών?

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


Title: Re: [C++] 2η Εργασία 2010
Post by: Αιμιλία η φτερωτή χελώνα on November 05, 2010, 20:02:13 pm
εσυ τι λες?


Title: Re: [C++] 2η Εργασία 2010
Post by: Orfikoss on November 05, 2010, 20:12:25 pm
calk από το calkulate
χαχαχαχαχαχαχαχα εννοείται!  ;D


Title: Re: [C++] 2η Εργασία 2010
Post by: epi on November 05, 2010, 20:18:53 pm
εσυ τι λες?

λεω πως αν ημουν 100% σιγουρος δεν θα ρωτούσα...... :D


Title: Re: [C++] 2η Εργασία 2010
Post by: Αιμιλία η φτερωτή χελώνα on November 05, 2010, 20:20:51 pm
αν δεν εχουν κληρονομικη σχεση, ναι μπορεις


Title: Re: [C++] 2η Εργασία 2010
Post by: proud_metalhead on November 05, 2010, 20:37:30 pm
Με την πλευρά που κοιτάζει θάλασσα έβγαλε κανείς κανα συμπέρασμα??
βασικά:
1)οι κορυφές που θα διαβάσουμε γι αυτή την πλευρά δεν περιλαμβάνονται στις κορυφές του οικοπέδου που διαβάσαμε για να υπολογίσουμε το εμβαδόν του?

2)πως σκατά θα καταχωρούνται οι αύξοντες αριθμοί κορυφών????

3)πως υπολογίζουμε το μήκος της πλευράς..??

Ευχαριστώ εκ των προτέρων
εγω προσωπικα θεωρησα οτι στον αρι8μο των κορυφων υπαρχουν και αυτες που κοιταν στη θαλασσα.μετα ζητησα τον αριθμο αυτων και τους εδωσα ενα κωδικο.μετα κατα την δηλωση των συντεταγμενων θεωρησα οτι το στοιχειο 0 του πινακα ειναι η 1η κορυφη στη θαλασσα,το 2ο στοιχειο η 2η κορυφη στη θαλασσα κ.ο.κ. οταν τελειωσα με τισ κορυφες που κοιταν στη θαλασσα εκανα μια αλλη for για τις υπολοιπες κορυφες.αλλα το ι δν ξεκινουσε απο το 0 αλλα απο τον επομενο αριθμο που τελειωσα με τισ προηγουμενες. δν ειμαι σιγουρος αν ισχυει αλλα ετσι και αλλιως η προσπαθεια μετραει. ελπιζω να σε βοηθησα :)


Title: Re: [C++] 2η Εργασία 2010
Post by: Tracy_McGrady on November 06, 2010, 01:28:06 am
αν δεν εχουν κληρονομικη σχεση, ναι μπορεις
Και αν έχουν κληρονομική σχέση απλα η παράγουσα μπόρει εφόσον ειναι public να την χρησιμοποιεί! Χωρίς κληρονομικότητα πρέπει να γράψουμε 2 φορές τη συνάρτηση αλλάζοντας το όνομα της κλάσης??μπερδεύτικα  :D


Title: Re: [C++] 2η Εργασία 2010
Post by: Tracy_McGrady on November 06, 2010, 01:30:37 am
Με την πλευρά που κοιτάζει θάλασσα έβγαλε κανείς κανα συμπέρασμα??
βασικά:
1)οι κορυφές που θα διαβάσουμε γι αυτή την πλευρά δεν περιλαμβάνονται στις κορυφές του οικοπέδου που διαβάσαμε για να υπολογίσουμε το εμβαδόν του?

2)πως σκατά θα καταχωρούνται οι αύξοντες αριθμοί κορυφών????

3)πως υπολογίζουμε το μήκος της πλευράς..??

Ευχαριστώ εκ των προτέρων
εγω προσωπικα θεωρησα οτι στον αρι8μο των κορυφων υπαρχουν και αυτες που κοιταν στη θαλασσα.μετα ζητησα τον αριθμο αυτων και τους εδωσα ενα κωδικο.μετα κατα την δηλωση των συντεταγμενων θεωρησα οτι το στοιχειο 0 του πινακα ειναι η 1η κορυφη στη θαλασσα,το 2ο στοιχειο η 2η κορυφη στη θαλασσα κ.ο.κ. οταν τελειωσα με τισ κορυφες που κοιταν στη θαλασσα εκανα μια αλλη for για τις υπολοιπες κορυφες.αλλα το ι δν ξεκινουσε απο το 0 αλλα απο τον επομενο αριθμο που τελειωσα με τισ προηγουμενες. δν ειμαι σιγουρος αν ισχυει αλλα ετσι και αλλιως η προσπαθεια μετραει. ελπιζω να σε βοηθησα :)
Μην σκάτε και πολυ ρε παιδιά!Σιγά μην κοιτάξει και κάθε κορυφή ξεχωριστά! :) Εγώ το for το ξεκίνησα απο το 0 πάντως γιατί θέλει 2 διαφορετικές συναρτήσεις για παραθαλάσσιο!Αλλα cool  8))


Title: Re: [C++] 2η Εργασία 2010
Post by: Άδης on November 06, 2010, 06:32:02 am
Quote
...Με την δημιουργία αντικειμένων στον τύπο της κλάσης να διαβάζεται το όνομα του ιδιοκτήτη, ένας ακέραιος που δίνεται ως κωδικός για το οικόπεδο, ο αριθμός των κορυφών του οικοπέδου και...

Τι ακριβώς εννοεί σ' αυτό  το σημείο; Ότι πρέπει να φτιάξουμε οπωσδήποτε constructor για να δώσουμε όνομα, κωδικό  κλπ. όταν δημιουργούμε τα αντικείμενα ή πρώτα φτιάχνουμε τα αντικείμενα και μετά με συναρτήσεις π.χ. setname δίνουμε το όνομα και τα άλλα στοιχεία;


Title: Re: [C++] 2η Εργασία 2010
Post by: i_am_batman on November 06, 2010, 14:46:25 pm
Προφανώς μέσα σε constructor θα την κάνεις τη δουλειά! Αν χρησιμοποιήσεις setName() κ.τ.λ. θα είναι και πιο πολύς κόπος και λάθος προγραμματιστικά. Γενικά, πάντα θα φτιάχνεις έναν constructor με το που δημιουργείς την κλάση, ακόμα και αν τελικά δεν τον χρειαστείς. Λογικά θα σας το έχουν πει αυτό.


Title: Re: [C++] 2η Εργασία 2010
Post by: Tracy_McGrady on November 06, 2010, 15:11:56 pm
Quote
...Με την δημιουργία αντικειμένων στον τύπο της κλάσης να διαβάζεται το όνομα του ιδιοκτήτη, ένας ακέραιος που δίνεται ως κωδικός για το οικόπεδο, ο αριθμός των κορυφών του οικοπέδου και...

Τι ακριβώς εννοεί σ' αυτό  το σημείο; Ότι πρέπει να φτιάξουμε οπωσδήποτε constructor για να δώσουμε όνομα, κωδικό  κλπ. όταν δημιουργούμε τα αντικείμενα ή πρώτα φτιάχνουμε τα αντικείμενα και μετά με συναρτήσεις π.χ. setname δίνουμε το όνομα και τα άλλα στοιχεία;
Ναι φίλε constructor θέλει!για να επιβεβαιώσω και τον batman..


Title: Re: [C++] 2η Εργασία 2010
Post by: rspappas on November 07, 2010, 00:28:26 am
για την αποσταση των 2 σημειων, ενα απλο πυθαγορειο χρειαζεται...


Title: Re: [C++] 2η Εργασία 2010
Post by: Άδης on November 07, 2010, 00:30:37 am
OK Ευχαριστώ.

Βασικά επειδή δεν τους έχω καταλάβει πολύ καλά τους constructors:
Τα αντικείμενα πότε δημιουργούνται στο συγκεκριμένο πρόγραμμα; Όταν δεσμεύουμε δυναμικά μνήμη με malloc για τον αριθμό των οικοπέδων που δώσαμε ή στην αρχή πριν δεσμεύσουμε μνήμη (π.χ. με το site *A; έχουν δημιουργηθεί ήδη αντικέιμενα; );
Από τη στιγμή που δημιουργούνται όλα τα αντικείμενα ταυτόχρονα πως μπορούμε με constructor να δώσουμε και διαφορετικό όνομα και κωδικό; Δε θα χρειαστούμε και άλλες συναρτήσεις πχ setName() , setCode() ;

Τέσπα την εργασία μπορώ να την προχωρήσω και χωρίς constructors, απλά αν μπορείτε λίγο να μου εξηγήσετε για να την κάνω καλύτερη και να το καταλάβω και καλύτερα.


Title: Re: [C++] 2η Εργασία 2010
Post by: MiTsOmAn on November 07, 2010, 03:08:48 am
Ρε παιδιά βλέπω και ξαναβλέπω την εκφώνηση και δεν έχω καταλάβει ακόμα που ζητάω από τον χρήστη τι ποσοστό του οικοπέδου θα χάσει , και αν είναι ένα νούμερο για όλα τα οικόπεδα ή διαφορετικό για κα8ε οικόπεδο...
Άν υπάρχει κάποιος που έχει πιεί καφέ και δουλεύει ο εγκέφαλος του ας μου απαντήσει  :)


Title: Re: [C++] 2η Εργασία 2010
Post by: christgc on November 07, 2010, 04:11:49 am
Αυτό το ποσοστό θα διαβάζεται στη συνάρτηση calk και λογικά θα είναι ίδιο για όλα τα οικόπεδα...


Title: Re: [C++] 2η Εργασία 2010
Post by: Avraam on November 07, 2010, 12:31:30 pm
Καμια ιδεα κανεις για το πως θα υπολογισουμε το μηκος της προσοψης του παραθαλασσιου οικοπεδου????????? :-\


Title: Re: [C++] 2η Εργασία 2010
Post by: di_em on November 07, 2010, 15:11:28 pm
Για ποιό λόγο ζητάει να δίνουμε στην calk τα ποσοστά? Αφου ήδη έχουμε υπολογίσει στις συναρτήσεις των κλάσεων πόση γη και πόσα χρήματα θα δώσει ο ιδιοκτήτης του αντίστοιχου οικοπέδου.


Title: Re: [C++] 2η Εργασία 2010
Post by: MiTsOmAn on November 07, 2010, 16:35:48 pm
Υποθέτω οι συναρτήσεις υπολογισμού των κλάσεων θα δέχονται το ποσοστό σαν όρισμα...


Title: Re: [C++] 2η Εργασία 2010
Post by: Laharl on November 07, 2010, 18:29:27 pm
Για ποιό λόγο ζητάει να δίνουμε στην calk τα ποσοστά? Αφου ήδη έχουμε υπολογίσει στις συναρτήσεις των κλάσεων πόση γη και πόσα χρήματα θα δώσει ο ιδιοκτήτης του αντίστοιχου οικοπέδου.

Καλά ναι αυτό είναι το πιο κουφό που ζητάει ο Κορτέσης...Δηλαδή σαν να σου λέει γράψε άλλες 30 σειρές αχρείαστου κώδικα επειδή έτσι γουστάρω :P


Title: Re: [C++] 2η Εργασία 2010
Post by: Tracy_McGrady on November 07, 2010, 19:34:24 pm
Το ποσοστό είναι ίδιο για ολα τ οικόπεδα και για την πρόσοψη υπολογίζεις το άθροισμα των αποστάσεων!τουλάχιστον εγώ αυτό το συμπέρασμα έβγαλα!


Title: Re: [C++] 2η Εργασία 2010
Post by: lindou on November 07, 2010, 20:25:05 pm
στην κλαση χρειαζεται να ξερουμε το ποσοστο εισφορας και το ποσο ανα τετραγωνικο της διαφορας,ετσι?
στην calk θα τα ξαναζηταμε?


Title: Re: [C++] 2η Εργασία 2010
Post by: Groucho on November 07, 2010, 20:37:40 pm
το ζητας στην calk και το δινεις σαν ορισμα στις συναρτησεις των κλασεων που το χρειαζονται


Title: Re: [C++] 2η Εργασία 2010
Post by: lindou on November 07, 2010, 20:41:23 pm
ναι αλλα την calk την καλεις αφου εχεις ορισει το αντικειμενο,ετσι δεν ειναι?


Title: Re: [C++] 2η Εργασία 2010
Post by: Groucho on November 07, 2010, 20:49:26 pm
ναι.θα ορισεις τις συναρτησεις της κλασης ετσι ωστε να δεχονται ορισματα,τα οποια ορισματα θα ειναι το ποσοστο εισφορας και η τιμη του τετραγωνικου, και οταν τις καλεις μεσα απο την calk θα τους δινεις τα αντιστοιχα ορισματα αφου προηγουμενως τα εχεις διαβασει


Title: Re: [C++] 2η Εργασία 2010
Post by: MariosPro on November 08, 2010, 13:16:14 pm
Στην εργασια λέει πως καθε δυναμικη δεσμευση να γινεται με malloc.Οταν ομως κανεις malloc στην main για τα αντικειμενα δεν καλειται η συναρτηση αρχικων συνθηκων γνωριζει καποιος πως μπορει να γινει?


Title: Re: [C++] 2η Εργασία 2010
Post by: JakeLaMotta on November 08, 2010, 14:53:21 pm
οταν πρεπει να κανουμε malloc για να δεσμευσουμε μνημη για τους 2 πινακες με τα αντικειμενα,πως ακριβως γινεται??κατι τετοιο:
site *a
a=(*site)malloc(n*sizeof(site)
????


Title: Re: [C++] 2η Εργασία 2010
Post by: blackhead on November 08, 2010, 15:05:19 pm
der brudi weisst alles!!!!!!!!!!


Title: Re: [C++] 2η Εργασία 2010
Post by: Orfikoss on November 08, 2010, 15:31:14 pm
Έχει φτιάξει κανείς testcase να δούμε αν τα βγάζει σωστά;


Title: Re: [C++] 2η Εργασία 2010
Post by: Argirios on November 08, 2010, 18:04:03 pm
η συνάρτηση calk πώς θα τα υπολογίζει αυτά που λέει? αφού δε μπορεί να χρησημοποιήσει τα private στοιχεία της κλάσης


Title: Re: [C++] 2η Εργασία 2010
Post by: kakashi on November 08, 2010, 18:07:49 pm
η συνάρτηση calk πώς θα τα υπολογίζει αυτά που λέει? αφού δε μπορεί να χρησημοποιήσει τα private στοιχεία της κλάσης

Θα την κάνεις friend συνάρτηση και στις δύο κλάσεις και θα μπορεί να τα βλέπει όλα.


Title: Re: [C++] 2η Εργασία 2010
Post by: Argirios on November 08, 2010, 18:11:06 pm
θέξ ^super^


Title: Re: [C++] 2η Εργασία 2010
Post by: The Stig on November 08, 2010, 20:10:46 pm
Τελικά ποιον τύπο χρησιμοποιήσατε για το εμβαδό? Της wiki ή του κορτέση?

edit: "ο αριθμός των κορυφών που ορίζουν την πρόσοψη στη θάλασσα, και να δεσμεύεται δυναμικά μνήμη όπου να καταχωρούνται οι αύξοντες αριθμοί αυτών των κορυφών."
Τι εννοεί αύξοντες αριθμοί? Σε τι χρειάζονται? Μήπως εννοεί συντεταγμένες?


Title: Re: [C++] 2η Εργασία 2010
Post by: kakashi on November 08, 2010, 20:31:26 pm
Τελικά ποιον τύπο χρησιμοποιήσατε για το εμβαδό? Της wiki ή του κορτέση?

edit: "ο αριθμός των κορυφών που ορίζουν την πρόσοψη στη θάλασσα, και να δεσμεύεται δυναμικά μνήμη όπου να καταχωρούνται οι αύξοντες αριθμοί αυτών των κορυφών."
Τι εννοεί αύξοντες αριθμοί? Σε τι χρειάζονται? Μήπως εννοεί συντεταγμένες?

Προφανώς θα χρησιμοποιήσεις του Κορτέση.Εκτός και αν θες να του γράψεις στο τέλος ότι έκανε λάθος στον τύπο ;)

Τώρα για την δυναμική δέσμευση μνήμης.Σου ζητάει έναν πίνακα που θα έχει ως στοιχεία τον αύξοντα αριθμό της θέσης όπου βρίσκονται οι συντεταγμένες των κορυφών που είναι παραθαλάσσιες.
Αυτό μπορείς να το κάνεις όταν βάζεις τις συντεταγμένες όλων τον κορυφών.Θα ρωτάς αφού τις βάλεις εάν είναι παραθαλάσσια η κορυφή, και εάν είναι τότε βάζεις το i της επανάληψης στην οποία βρίσκεσαι(γιατί για να βάλεις συντεταγμένες κάνεις μια for) στον πίνακα που θέλεις.
Απλά πρέπει να προσέξεις σε ποια θέση του πίνακα θα αποθηκεύεις το i κάθε φορά.Θα πρέπει δηλαδή να βάλεις ένα flag(αν θυμάμαι καλά έτσι λέγεται) έξω απο την επανάληψη(θα το βάλεις ίσο με 0) που θα αυξάνει κάθε φορά που θα βγαίνεις από τον έλεγχο που κάνεις για το αν είναι παραθαλάσσια η κορυφή.
Αυτό κατάλαβα εγώ τουλάχιστον.Ελπίζω να μην σε μπέρδεψα.


Title: Re: [C++] 2η Εργασία 2010
Post by: proud_metalhead on November 08, 2010, 21:19:48 pm
οταν πρεπει να κανουμε malloc για να δεσμευσουμε μνημη για τους 2 πινακες με τα αντικειμενα,πως ακριβως γινεται??κατι τετοιο:
site *a
a=(*site)malloc(n*sizeof(site)
????
for(......)
{
site temp
a=temp
}
γενικα η constructor δν εκτελειτε με μαλλοκ.μασ το ειπε ο συμεωνιδης


Title: Re: [C++] 2η Εργασία 2010
Post by: kakashi on November 08, 2010, 21:32:44 pm
οταν πρεπει να κανουμε malloc για να δεσμευσουμε μνημη για τους 2 πινακες με τα αντικειμενα,πως ακριβως γινεται??κατι τετοιο:
site *a
a=(*site)malloc(n*sizeof(site)
????
for(......)
{
site temp
a=temp
}
γενικα η constructor δν εκτελειτε με μαλλοκ.μασ το ειπε ο συμεωνιδης

Δεν κατάλαβα που ακριβώς γίνεται η δυναμική δέσμευση μνήμης με αυτό τον τρόπο;Μπορείς να το εξηγήσεις λίγο γιατί και εγώ δεν ξέρω πως να το κάνω.


Title: Re: [C++] 2η Εργασία 2010
Post by: proud_metalhead on November 08, 2010, 21:35:56 pm
οταν πρεπει να κανουμε malloc για να δεσμευσουμε μνημη για τους 2 πινακες με τα αντικειμενα,πως ακριβως γινεται??κατι τετοιο:
site *a
a=(*site)malloc(n*sizeof(site)
????
for(......)
{
site temp
a=temp
}
γενικα η constructor δν εκτελειτε με μαλλοκ.μασ το ειπε ο συμεωνιδης

Δεν κατάλαβα που ακριβώς γίνεται η δυναμική δέσμευση μνήμης με αυτό τον τρόπο;Μπορείς να το εξηγήσεις λίγο γιατί και εγώ δεν ξέρω πως να το κάνω.
θεωρω οτι n θεσεις ο πινακας Α
site *A;
A=(site*)malloc(n*sizeof(site));
for(i=0; i<n; i++)
{
    site temp // temp βοη8ητικο αντικειμενο
   


Title: Re: [C++] 2η Εργασία 2010
Post by: il capitano on November 08, 2010, 21:38:56 pm
Συμβουλη:
όταν γραφεται κωδικα βαλτε τον μεσα σε


Code:
 κωδικας 


ειναι το κουμπί με την # για όποιον δεν το εχει προσεξει


Title: Re: [C++] 2η Εργασία 2010
Post by: nikitas350 on November 08, 2010, 21:49:50 pm
οταν πρεπει να κανουμε malloc για να δεσμευσουμε μνημη για τους 2 πινακες με τα αντικειμενα,πως ακριβως γινεται??κατι τετοιο:
site *a
a=(*site)malloc(n*sizeof(site)
????
for(......)
{
site temp
a=temp
}
γενικα η constructor δν εκτελειτε με μαλλοκ.μασ το ειπε ο συμεωνιδης

Δεν κατάλαβα που ακριβώς γίνεται η δυναμική δέσμευση μνήμης με αυτό τον τρόπο;Μπορείς να το εξηγήσεις λίγο γιατί και εγώ δεν ξέρω πως να το κάνω.
θεωρω οτι n θεσεις ο πινακας Α
site *A;
A=(site*)malloc(n*sizeof(site));
for(i=0; i<n; i++)
{
    site temp // temp βοη8ητικο αντικειμενο
   

Μα για αυτό υπάρχει η new... Το να δημιουργείς αντικείμενα με malloc είναι πολύ παράλογο.


Title: Re: [C++] 2η Εργασία 2010
Post by: proud_metalhead on November 08, 2010, 22:08:44 pm
οταν πρεπει να κανουμε malloc για να δεσμευσουμε μνημη για τους 2 πινακες με τα αντικειμενα,πως ακριβως γινεται??κατι τετοιο:
site *a
a=(*site)malloc(n*sizeof(site)
????
for(......)
{
site temp
a=temp
}
γενικα η constructor δν εκτελειτε με μαλλοκ.μασ το ειπε ο συμεωνιδης

Δεν κατάλαβα που ακριβώς γίνεται η δυναμική δέσμευση μνήμης με αυτό τον τρόπο;Μπορείς να το εξηγήσεις λίγο γιατί και εγώ δεν ξέρω πως να το κάνω.
θεωρω οτι n θεσεις ο πινακας Α
site *A;
A=(site*)malloc(n*sizeof(site));
for(i=0; i<n; i++)
{
    site temp // temp βοη8ητικο αντικειμενο
   

Μα για αυτό υπάρχει η new... Το να δημιουργείς αντικείμενα με malloc είναι πολύ παράλογο.

αυτα να τα λες στον κορτεση. εκτος του οτι δν εχουμε κανει new στο προγραμμα λεει η δεσμευση μνημης να γινει με  malloc.


Title: Re: [C++] 2η Εργασία 2010
Post by: Joseph D. on November 08, 2010, 22:11:47 pm
οταν πρεπει να κανουμε malloc για να δεσμευσουμε μνημη για τους 2 πινακες με τα αντικειμενα,πως ακριβως γινεται??κατι τετοιο:
site *a
a=(*site)malloc(n*sizeof(site)
????
for(......)
{
site temp
a=temp
}
γενικα η constructor δν εκτελειτε με μαλλοκ.μασ το ειπε ο συμεωνιδης

Δεν κατάλαβα που ακριβώς γίνεται η δυναμική δέσμευση μνήμης με αυτό τον τρόπο;Μπορείς να το εξηγήσεις λίγο γιατί και εγώ δεν ξέρω πως να το κάνω.
θεωρω οτι n θεσεις ο πινακας Α
site *A;
A=(site*)malloc(n*sizeof(site));
for(i=0; i<n; i++)
{
    site temp // temp βοη8ητικο αντικειμενο
    

Βασικά, νομίζω θα έπρεπε να κάνεις
Code:
site *A;
A=(site*)malloc(n*sizeof(site));
for(i=1; i<n; i++)
{
    site temp // temp βοη8ητικο αντικειμενο
    Α[ι]=temp
}

Δηλαδή το i να αρχίζει από 1, γιατί στην αρχική δήλωση εκτελείται μία φορά ο constructor.
Έχω δίκιο ή όχι; Για διαφωτίστε.


Ε... μάλλον έχω άδικο.


Title: Re: [C++] 2η Εργασία 2010
Post by: kakashi on November 08, 2010, 22:38:24 pm
Στην calk συνάρτηση δεν θα χρειαστεί να κάνουμε μια επανάληψη που θα προσθέτει γιαι κάθε οικόπεδο την γη και τα χρήματα;
Ποια θα είναι η συνθήκη για τον τερματισμό της επανάληψης αφού η calk έχει ορίσματα τους πίνακες αλλά όχι τον αριθμό των στοιχείων των πινάκων;


Title: Re: [C++] 2η Εργασία 2010
Post by: proud_metalhead on November 08, 2010, 23:23:36 pm
οταν πρεπει να κανουμε malloc για να δεσμευσουμε μνημη για τους 2 πινακες με τα αντικειμενα,πως ακριβως γινεται??κατι τετοιο:
site *a
a=(*site)malloc(n*sizeof(site)
????
for(......)
{
site temp
a=temp
}
γενικα η constructor δν εκτελειτε με μαλλοκ.μασ το ειπε ο συμεωνιδης

Δεν κατάλαβα που ακριβώς γίνεται η δυναμική δέσμευση μνήμης με αυτό τον τρόπο;Μπορείς να το εξηγήσεις λίγο γιατί και εγώ δεν ξέρω πως να το κάνω.
θεωρω οτι n θεσεις ο πινακας Α
site *A;
A=(site*)malloc(n*sizeof(site));
for(i=0; i<n; i++)
{
    site temp // temp βοη8ητικο αντικειμενο
    

Βασικά, νομίζω θα έπρεπε να κάνεις
Code:
site *A;
A=(site*)malloc(n*sizeof(site));
for(i=1; i<n; i++)
{
    site temp // temp βοη8ητικο αντικειμενο
    Α[ι]=temp
}

Δηλαδή το i να αρχίζει από 1, γιατί στην αρχική δήλωση εκτελείται μία φορά ο constructor.
Έχω δίκιο ή όχι; Για διαφωτίστε.


Ε... μάλλον έχω άδικο.

κοιτα στην 1η εργασια παλι ειχα κανει malloc  στο αντικειμενο και το ειχα λαθος. ο σιμεωνιδης με ειπε αυτο που σας λεω τωρα.μου ειπε οτι δν εκτελειτε αν εχουμε pointer και επομενοσ το i πρεπει να ειναι 0.παντως μν σκας. η προσπαθεια μετρα.για σιγουρια ρωτα σε εργαστηριο  :)


Title: Re: [C++] 2η Εργασία 2010
Post by: proud_metalhead on November 08, 2010, 23:25:31 pm
Στην calk συνάρτηση δεν θα χρειαστεί να κάνουμε μια επανάληψη που θα προσθέτει γιαι κάθε οικόπεδο την γη και τα χρήματα;
Ποια θα είναι η συνθήκη για τον τερματισμό της επανάληψης αφού η calk έχει ορίσματα τους πίνακες αλλά όχι τον αριθμό των στοιχείων των πινάκων;
πολυ απλα στελνεις και το μεγεθος των πινακων σαν ορισμα,ετσι και αλλιως το μεγεθος το οριζεις μεσα στην main και δν εχεις καποιο προβλημα μη μεταφερσιμοτητας


Title: Re: [C++] 2η Εργασία 2010
Post by: rspappas on November 08, 2010, 23:25:48 pm
Στην calk συνάρτηση δεν θα χρειαστεί να κάνουμε μια επανάληψη που θα προσθέτει γιαι κάθε οικόπεδο την γη και τα χρήματα;
Ποια θα είναι η συνθήκη για τον τερματισμό της επανάληψης αφού η calk έχει ορίσματα τους πίνακες αλλά όχι τον αριθμό των στοιχείων των πινάκων;

εγω εκανα τσατσια και εβαλα σαν ορισματα της καλκ και τον αριθμο των οικοπεδων


Title: Re: [C++] 2η Εργασία 2010
Post by: kakashi on November 08, 2010, 23:29:40 pm
Ναι αυτό σκέφτηκα και εγώ αλλά νόμιζα ότι πρέπει να βάλουμε μόνο τα ορίσματα που ζητάει.Θα το κάνς και εγώ έτσι λοιπόν :)


Title: Re: [C++] 2η Εργασία 2010
Post by: Joseph D. on November 08, 2010, 23:34:10 pm
Στην calk συνάρτηση δεν θα χρειαστεί να κάνουμε μια επανάληψη που θα προσθέτει γιαι κάθε οικόπεδο την γη και τα χρήματα;
Ποια θα είναι η συνθήκη για τον τερματισμό της επανάληψης αφού η calk έχει ορίσματα τους πίνακες αλλά όχι τον αριθμό των στοιχείων των πινάκων;

εγω εκανα τσατσια και εβαλα σαν ορισματα της καλκ και τον αριθμο των οικοπεδων

Ωραία τσατσιά. Εγώ έβαλα μόνο εννιά (9) ορίσματα.


Title: Re: [C++] 2η Εργασία 2010
Post by: MiTsOmAn on November 08, 2010, 23:36:38 pm
Στην calk συνάρτηση δεν θα χρειαστεί να κάνουμε μια επανάληψη που θα προσθέτει γιαι κάθε οικόπεδο την γη και τα χρήματα;
Ποια θα είναι η συνθήκη για τον τερματισμό της επανάληψης αφού η calk έχει ορίσματα τους πίνακες αλλά όχι τον αριθμό των στοιχείων των πινάκων;

εγω εκανα τσατσια και εβαλα σαν ορισματα της καλκ και τον αριθμο των οικοπεδων

κι εγώ το ίδιο έκανα γιατί να είναι τσατσιά;  :)

αλλού κόλλαω όταν χρησιμοποιώ την sqrt για να υπολογίσω τις αποστάσεις που θέλω μου βγάζει μύνημα λάθους
error C2108: subscript is not of integral type

ενώ όλες οι μεταβλητές που εμπλέκονται είναι float ξέρει κανείς τι παίζει;


Title: Re: [C++] 2η Εργασία 2010
Post by: Joseph D. on November 08, 2010, 23:50:42 pm

αλλού κόλλαω όταν χρησιμοποιώ την sqrt για να υπολογίσω τις αποστάσεις που θέλω μου βγάζει μύνημα λάθους
error C2108: subscript is not of integral type

ενώ όλες οι μεταβλητές που εμπλέκονται είναι float ξέρει κανείς τι παίζει;

Μήπως την έκφραση που είναι ρίζα την εκχωρείς σε μεταβλητή τύπου int ή την κάνεις return σε συνάρτηση τύπου int;


Title: Re: [C++] 2η Εργασία 2010
Post by: rspappas on November 09, 2010, 00:22:34 am
αλλού κόλλαω όταν χρησιμοποιώ την sqrt για να υπολογίσω τις αποστάσεις που θέλω μου βγάζει μύνημα λάθους
error C2108: subscript is not of integral type

ενώ όλες οι μεταβλητές που εμπλέκονται είναι float ξέρει κανείς τι παίζει;

την βιβλιοθηκη math.h την εβαλες?


Title: Re: [C++] 2η Εργασία 2010
Post by: rspappas on November 09, 2010, 00:32:32 am
εγω παντως αλλου εχω προβληματιστει.
οταν εχεις ορισμενα σημεια και θελεις το εμβαδον της περιοχης που οριζουν, δεν ξερεις ακριβως πως ενωνονται.
δειτε το σχημα που επισυναπτω για να καταλαβετε τι λεω


Title: Re: [C++] 2η Εργασία 2010
Post by: Joseph D. on November 09, 2010, 01:37:56 am
εγω παντως αλλου εχω προβληματιστει.
οταν εχεις ορισμενα σημεια και θελεις το εμβαδον της περιοχης που οριζουν, δεν ξερεις ακριβως πως ενωνονται.
δειτε το σχημα που επισυναπτω για να καταλαβετε τι λεω

Σε ενδιαφέρει αυτό; Αν προσέξεις, νομίζω το εμβαδό είναι ίδιο σε όλα. Φαίνεται και από τον τύπο νομίζω που περιέχει xi και yi.

Άσχετα απ'αυτό βέβαια, ωραίος μαθηματικός προβληματισμός. +1