• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 18, 2025, 02:03:04 am

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 18, 2025, 02:03:04 am

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Πρακτική Άσκηση ΤΗΜΜΥ 201...
by chris_p30
[Today at 00:45:33]

[Μεταφορά και Διανομή ΗΕ]...
by Nikos_313
[Today at 00:10:29]

Ισραήλ - Ιράν: Πόλεμος στ...
by Katarameno
[June 17, 2025, 21:32:50 pm]

[Ψηφιακά Ολοκληρωμένα Κυκ...
by tzortzis
[June 17, 2025, 21:25:42 pm]

[Εφ.Θερμοδυναμική] Γενικέ...
by PAPARI69
[June 17, 2025, 20:59:13 pm]

[Γραφική] Λυμένα θέματα
by okanpala
[June 17, 2025, 18:56:22 pm]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[June 17, 2025, 14:25:00 pm]

Αντικατάστασης πυκνωτή σε...
by george14
[June 17, 2025, 13:58:20 pm]

Πότε θα βγει το μάθημα; -...
by tzortzis
[June 17, 2025, 13:19:53 pm]

Αποτελέσματα Εξεταστικής ...
by george14
[June 17, 2025, 12:08:25 pm]

[ΨEE] Γενικές απορίες και...
by Juror8
[June 17, 2025, 12:06:57 pm]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[June 16, 2025, 22:46:54 pm]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[June 16, 2025, 19:49:00 pm]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[June 16, 2025, 16:56:56 pm]

[Αρχές Οικονομίας] Να επι...
by _Trob
[June 16, 2025, 13:28:21 pm]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[June 16, 2025, 12:13:45 pm]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]
Στατιστικά
Members
Total Members: 9961
Latest: Poli
Stats
Total Posts: 1426704
Total Topics: 31710
Online Today: 215
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 26
Guests: 147
Total: 173
ioannisdamantis
Joannapet
Anton Pozov
teosimeon
Kazi
thomasdt
elias_farhood
Theislander
mimaki
Bit4Thought
melisste22
tasos gourd
PolarBear
mitsos753905
Sanaia
Yamal
despinat
tinidou
Lykaonia
el1
pdiamantis
m.renia
Mr Watson
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads
με προσοχή στα ονόματα των αρχείων!
THMMY.gr > Forum > Μαθήματα Βασικού Κύκλου > 2ο Εξάμηνο > Αντικειμενοστραφής Προγραμματισμός (Moderators: chatzikys, tzortzis) > [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
0 Members and 1 Guest are viewing this topic.
Pages: [1] 2 3 Go Down Print
Author Topic: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014  (Read 4998 times)
vasilis94
Veteran
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1511



View Profile
[C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« on: November 24, 2014, 18:19:41 pm »

Άσκηση Ε

         Σε ένα χυτήριο υπάρχει μια σειρά από παραγγελίες που πρέπει να εκτελεστούν. Η παραγγελίες εκτελούνται σύμφωνα με μια σειρά προτεραιότητας που έχει καθοριστεί από πριν. Τα τεμάχια των παραγγελιών διαφέρουν ως προς το σχήμα ή και τις διαστάσεις τους ενώ δεν ενδιαφέρει είδος του μετάλλου που θα χρησιμοποιηθεί. Στο χυτήριο υπάρχουν διάφορες ποσότητες μετάλλων που χρησιμοποιούνται για την χύτευση των τεμαχίων. Η σειρά με την οποία χρησιμοποιείται το κάθε μέταλλο είναι και αυτή προκαθορισμένη. Η διαδικασία που ακολουθείται για την εκτέλεση των παραγγελιών απαιτεί να κατασκευαστούν πρώτα όλα τα τεμάχια της παραγγελιάς που έχει προτεραιότητα χρησιμοποιώντας, με τη σειρά που έχει προκαθοριστεί, τα  αποθέματα των μετάλλων που υπάρχουν στο χυτήριο. Η διαδικασία συνεχίζεται με την επόμενη παραγγελία μέχρι να εκτελεστούν όλες οι παραγγελίες ή να τελειώσουν τα αποθέματα μετάλλων που υπάρχουν στο χυτήριο.
         Να γραφεί το λογισμικό στο οποίο να ορίζεται η κλάση material τα αντικείμενα τις οποίας να υλοποιούν τα διαφορετικά μέταλλα πού υπάρχουν στο χυτήριο. Με τη δημιουργία αντικειμένων στον τύπο της κλάσης να διαβάζεται η ποσότητα του αντίστοιχου μετάλλου καθώς και το ειδικό του βάρος.
         Στο λογισμικό να ορίζεται ακόμη η συνάρτηση production(…) η οποία να εκτυπώνει τη διαδικασία με την οποία θα εκτελεστούν οι παραγγελίες. Η συνάρτηση να υπολογίζει και να εκτυπώνει τον αριθμό και τον τύπο των τεμαχίων που θα κατασκευαστούν από το κάθε μέταλλο μέχρι να τελειώσουν όλες οι παραγγελίες ή να εξαντληθούν τα αποθέματα μετάλλων που διαθέτει το χυτήριο. Η συνάρτηση να είναι ανεξάρτητη από τον αριθμό και τον τύπο των τεμαχίων που πρόκειται να κατασκευαστούν.
         Ως εφαρμογή να οριστούν οι κλάσεις product1 και product2 που να υλοποιούν δύο διαφορετικού σχήματος τεμάχια που πρέπει να κατασκευάσει το χυτήριο. Τα αντικείμενα της κλάσης product1 είναι κύλινδροι για κάθε έναν από τους οποίους είναι γνωστή η ακτίνα της βάσης και το ύψος, καθώς και ο αριθμός των τεμαχίων που πρέπει να κατασκευαστούν. Τα αντικείμενα της κλάσης product2 είναι κύβοι για κάθε έναν από τους οποίους είναι γνωστή η πλευρά καθώς και ο αριθμός των τεμαχίων που πρέπει να κατασκευαστούν. Κατά την δημιουργία των αντικειμένων στους τύπους των πιο πάνω κλάσεων να διαβάζεται ο αριθμός των τεμαχίων και όλα τα απαραίτητα στοιχεία για τον υπολογισμό του όγκου του τεμαχίου που υλοποιεί το αντικείμενο. Οι κλάσεις να διαθέτουν τις κατάλληλες συναρτήσεις για τον υπολογισμό του όγκού του μετάλλου που θα απαιτηθεί για την κατασκευή του κάθε τεμαχίου.
        Η συνάρτηση main του προγράμματος να ορίζει έναν πίνακα από 5 αντικείμενα τύπου material τα οποία να υλοποιούν τα μέταλλα που διαθέτει το χυτήριο. Στη συνέχεια, αφού οριστούν, ένας πίνακας με 5 αντικείμενα τύπου product1 και ένας πίνακας με 4 αντικείμενα τύπου product2, να καλείται η συνάρτηση production(), για τα 9 αυτά αντικείμενα, για να εκτυπώσει τη διαδικασία με την οποία θα εκτελεστούν οι παραγγελίες.

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

Η συνάρτηση production() να καλείται μια μόνο φορά.
Για την κατασκευή των τεμαχίων δεν επιτρέπεται η ανάμιξη των μετάλλων.
Logged
K
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 2392



View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #1 on: November 24, 2014, 18:38:22 pm »

πως δύναται να υπάρξει δυναμική συνάρτηση χωρίς κληρονομικότητα?
Logged

https://www.youtube.com/watch?v=yVfR_fhZK58#t=2m41
ablaoublas
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 619


Are you feeling lucky ?


View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #2 on: November 24, 2014, 22:00:06 pm »

'Αλλος ένας γρίφος για εκφώνηση Angry
Ποια θα είναι η βασική κλάση και τι θα περιέχει ;
Logged

https://www.youtube.com/watch?v=WEivBoS_bnI
Kthulu
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1066



View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #3 on: November 25, 2014, 11:59:49 am »

Έχει κανεις ιδεα για το πως θ υλοποιηθει η συναρτηση και πως στο καλο θα μαθουμε ποια ειναι η προτεραιοτητα;
Logged

It is no measure of health to be well adjusted to a profoundly sick society<br /><br />https://www.youtube.com/watch?v=TmAnjlQbRSE
mrboombastic
Καταξιωμένος/Καταξιωμένη
***
Posts: 130


View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #4 on: November 26, 2014, 22:08:43 pm »

Τα τεμάχια κάθε παραγγελίας θα είναι φτιαγμένα απ΄το ίδιο υλικό;
Logged
airguitar
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Posts: 1395


View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #5 on: November 27, 2014, 23:22:36 pm »

η κλαση material θα εχει 5 κλασεις παραγωμενες απο αυτη οπου καθε μια απο τις 5 ειναι ενα διαφορετικο μεταλο ?
Logged
Kthulu
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1066



View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #6 on: November 28, 2014, 15:14:43 pm »

Quote from: airguitar on November 27, 2014, 23:22:36 pm
η κλαση material θα εχει 5 κλασεις παραγωμενες απο αυτη οπου καθε μια απο τις 5 ειναι ενα διαφορετικο μεταλο ?
Όχι φυσικά. Μια κλάση θα ειναι και θα οριζεις 5 αντικειμενα αυτης της κλασης,τα οποια θα ειναι τα διαφορετικα μεταλλα
Logged

It is no measure of health to be well adjusted to a profoundly sick society<br /><br />https://www.youtube.com/watch?v=TmAnjlQbRSE
Kthulu
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1066



View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #7 on: November 28, 2014, 16:33:05 pm »

Η προτεραιότητα κατασκευής είναι η ίδια με την σειρα που δηλωνονται τα αντικειμενα με πρωτο τα product1 και μετα το product2 ; Για τα μεταλλα επισης; Ή η προτεραιότητα δηλώνεται κάπως αλλιώς μέσα στο πρόγραμμα;;
Logged

It is no measure of health to be well adjusted to a profoundly sick society<br /><br />https://www.youtube.com/watch?v=TmAnjlQbRSE
airguitar
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Posts: 1395


View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #8 on: November 28, 2014, 21:39:20 pm »

πως θα υπολογιζει η συναρτηση τον αριθμό και τον τύπο των τεμαχίων που θα κατασκευαστούν από το κάθε μέταλλο ??
Logged
K
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 2392



View Profile
Re: [Προγραμματιστικές Τεχνικές] Γενικές απορίες ανακοινώσεις/επικαιρότητα 2014/2015
« Reply #9 on: November 29, 2014, 19:30:29 pm »

Quote from: alex-pv on November 29, 2014, 18:58:54 pm
Quote from: ablaoublas on November 29, 2014, 18:55:55 pm
Τελικά μεχρί πόσες εργασίες μπορείς να μην παραδώσεις ηλεκτρονικά στον Κορτέση χωρίς να κοπείς ;
Η εργασία Ε είναι απάλευτηηηηηη  Angry
2

για την Ε δες τις αντίστοιχες από προηγούμενα έτη

Μπορείς να εξηγήσεις γιατί στη λύση του κάνει τη δέσμευση μνήμης με αυτόν τον τρόπο:
product **P;
int Np=0;
product::product()
{
if(Np==0){
P=(product **)malloc(sizeof(product *));
if(P==NULL){
cout<<"Δεν υπάρχει αρκετή διαθέσιμη μνήμη (θέση 1)\n";
exit(1);
}
P[0]=this;
Np++;
}
else{
Np++;
P=(product **)realloc(P,Np*sizeof(product *));
if(P==NULL){
cout<<"Δεν υπάρχει αρκετή διαθέσιμη μνήμη (θέση 2)\n";
exit(1);
}
P[Np-1]=this;
}
}
Logged

https://www.youtube.com/watch?v=yVfR_fhZK58#t=2m41
Vlassis
Veteran
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Posts: 2162


εφακ


View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #10 on: November 30, 2014, 02:23:50 am »

Quote from: konstaim on November 24, 2014, 18:38:22 pm
πως δύναται να υπάρξει δυναμική συνάρτηση χωρίς κληρονομικότητα?
Χρειαζεται τελικα virtual ή οχι??
Το οτι σχεδον κανεις δεν απανταει στις ερωτησεις απολυτα λογικο με τετοια εκφωνηση  Angry
Logged

πρόπελ
Is any of it real? I mean, look at this. Look at it! A world built on fantasy! Synthetic emotions in the form of pills, psychological warfare in the form of advertising, mind-altering chemicals in the form of food, brainwashing seminars in the form of media, controlled isolated bubbles in the form of social networks. mr.robot s01e10
BabisI
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 252



View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #11 on: November 30, 2014, 03:28:40 am »

Quote from: kosmas on November 30, 2014, 02:23:50 am
Quote from: konstaim on November 24, 2014, 18:38:22 pm
πως δύναται να υπάρξει δυναμική συνάρτηση χωρίς κληρονομικότητα?
Χρειαζεται τελικα virtual ή οχι??
Το οτι σχεδον κανεις δεν απανταει στις ερωτησεις απολυτα λογικο με τετοια εκφωνηση  Angry
Ναι χρειάζεται,επειδή θέλει ανεξαρτησία της συνάρτησης από τον τύπο/είδος της παραγγελίας.Για να υπολογίζεις τον κάθε όγκο,να εμφανίζεις τι είναι το είδος κλπ θα πρέπει να καλούνται virtual αντίστοιχες συναρτήσεις.Εδώ φυσικά ξέρουμε εκ των προτέρων ότι τα 5 πρώτα είναι κύλινδροι  και τα υπόλοιπα 4 κύβοι,αλλά γενικά δεν ξέρεις τι παίρνεις από τη main,αν πχ ο πίνακας είχε 3 κυλίνδρους,5 κύβους,9 κυλίνδρους κλπ για 100 αντικείμενα,θα έπρεπε κάθε φορά να ξέρεις τι διαχειρίζεσαι.
Logged

Scientists discover the world that exists; engineers create the world that never was.<br /><br />-Theodore Von Karman
c0ndemn3d
Veteran
Αbsolute ΤΗΜΜΥ.gr
******
Posts: 4804


Yarr!


View Profile
Re: [Προγραμματιστικές Τεχνικές] Γενικές απορίες ανακοινώσεις/επικαιρότητα 2014/2015
« Reply #12 on: November 30, 2014, 03:43:55 am »

Quote from: konstaim on November 29, 2014, 19:30:29 pm
Quote from: alex-pv on November 29, 2014, 18:58:54 pm
Quote from: ablaoublas on November 29, 2014, 18:55:55 pm
Τελικά μεχρί πόσες εργασίες μπορείς να μην παραδώσεις ηλεκτρονικά στον Κορτέση χωρίς να κοπείς ;
Η εργασία Ε είναι απάλευτηηηηηη  Angry
2

για την Ε δες τις αντίστοιχες από προηγούμενα έτη

Μπορείς να εξηγήσεις γιατί στη λύση του κάνει τη δέσμευση μνήμης με αυτόν τον τρόπο:
product **P;
int Np=0;
product::product()
{
if(Np==0){
P=(product **)malloc(sizeof(product *));
if(P==NULL){
cout<<"Δεν υπάρχει αρκετή διαθέσιμη μνήμη (θέση 1)\n";
exit(1);
}
P[0]=this;
Np++;
}
else{
Np++;
P=(product **)realloc(P,Np*sizeof(product *));
if(P==NULL){
cout<<"Δεν υπάρχει αρκετή διαθέσιμη μνήμη (θέση 2)\n";
exit(1);
}
P[Np-1]=this;
}
}

Καταρχάς έχει ορίσει ένα αντικείμενο τύπου product**. Όπως βλέπεις, χρησιμοποιείται για να κρατήσει pointers σε αντικείμενα τύπου product. Σκέψου:

  • Δεν γνωρίζουμε πόσα αντικείμενα τέτοια έχουμε (από εκτέλεση σε εκτέλεση διαφέρει).
  • Ο constructor καλείται πολλές φορές.

Καλώ πρώτη φορά τον constructor, άρα ο πίνακας δεν έχει αντικείμενα. Ωραία, σου λέει. Θα δεσμεύσω χώρο για ένα αντικείμενο και θα βάλω το οριζόμενο αντικείμενο εκεί. Αυξάνω τη μεταβλητή Np για να δείξω ότι ορίστηκε ακόμα ένα αντικείμενο.

Μετά καλώ δεύτερη ή ν-οστή φορά. Αυτή τη φορά κάνουμε realloc γιατί έχουμε ήδη δεσμευμένο χώρο και αντικείμενα που δεν πρέπει να χάσουμε!

Τώρα θα πεις <<μάγκα μου, το κατάλαβα, αλλά γιατί έτσι;>>.

1) Έχουμε έναν γενικό πίνακα για να αποθηκεύουμε τα αντικείμενα γιατί δεν ξέρουμε πόσα θα είναι.
2) Ακόμη δεν ξέρουμε τι τύπου θα είναι. Αυτό είναι που λέμε ανεξαρτησία προγράμματος, με την έννοια ότι εγώ θα πάρω τον κώδικα, θα βάλω άλλη μια κλάση (κληρονομημένη προφανώς από την αρχική μας) και το πρόγραμα θα δουλεύει μια χαρά. Για αυτό αποθηκεύω τους pointers! Άμα δεις τη θεωρία αυτό επιτρέπεται (δηλαδή να είναι διαφορετική κλάση), εφόσον οι κλάσεις κληρονομούνται από την ίδια!
Logged

In response, the pirates had to adhere to a doctrine of their own...
war against the world

They took my home, I can't walk away from that; can you?
 Forget me, forget Teach, forget loyalty, compacts, honours, debts, all of it.
The only question that matters is this: Who are you?
K
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 2392



View Profile
Re: [Προγραμματιστικές Τεχνικές] Γενικές απορίες ανακοινώσεις/επικαιρότητα 2014/2015
« Reply #13 on: November 30, 2014, 13:03:29 pm »

Quote from: c0ndemn3d on November 30, 2014, 03:43:55 am
Quote from: konstaim on November 29, 2014, 19:30:29 pm
Quote from: alex-pv on November 29, 2014, 18:58:54 pm
Quote from: ablaoublas on November 29, 2014, 18:55:55 pm
Τελικά μεχρί πόσες εργασίες μπορείς να μην παραδώσεις ηλεκτρονικά στον Κορτέση χωρίς να κοπείς ;
Η εργασία Ε είναι απάλευτηηηηηη  Angry
2

για την Ε δες τις αντίστοιχες από προηγούμενα έτη

Μπορείς να εξηγήσεις γιατί στη λύση του κάνει τη δέσμευση μνήμης με αυτόν τον τρόπο:
product **P;
int Np=0;
product::product()
{
if(Np==0){
P=(product **)malloc(sizeof(product *));
if(P==NULL){
cout<<"Δεν υπάρχει αρκετή διαθέσιμη μνήμη (θέση 1)\n";
exit(1);
}
P[0]=this;
Np++;
}
else{
Np++;
P=(product **)realloc(P,Np*sizeof(product *));
if(P==NULL){
cout<<"Δεν υπάρχει αρκετή διαθέσιμη μνήμη (θέση 2)\n";
exit(1);
}
P[Np-1]=this;
}
}

Καταρχάς έχει ορίσει ένα αντικείμενο τύπου product**. Όπως βλέπεις, χρησιμοποιείται για να κρατήσει pointers σε αντικείμενα τύπου product. Σκέψου:

  • Δεν γνωρίζουμε πόσα αντικείμενα τέτοια έχουμε (από εκτέλεση σε εκτέλεση διαφέρει).
  • Ο constructor καλείται πολλές φορές.

Καλώ πρώτη φορά τον constructor, άρα ο πίνακας δεν έχει αντικείμενα. Ωραία, σου λέει. Θα δεσμεύσω χώρο για ένα αντικείμενο και θα βάλω το οριζόμενο αντικείμενο εκεί. Αυξάνω τη μεταβλητή Np για να δείξω ότι ορίστηκε ακόμα ένα αντικείμενο.

Μετά καλώ δεύτερη ή ν-οστή φορά. Αυτή τη φορά κάνουμε realloc γιατί έχουμε ήδη δεσμευμένο χώρο και αντικείμενα που δεν πρέπει να χάσουμε!

Τώρα θα πεις <<μάγκα μου, το κατάλαβα, αλλά γιατί έτσι;>>.

1) Έχουμε έναν γενικό πίνακα για να αποθηκεύουμε τα αντικείμενα γιατί δεν ξέρουμε πόσα θα είναι.
2) Ακόμη δεν ξέρουμε τι τύπου θα είναι. Αυτό είναι που λέμε ανεξαρτησία προγράμματος, με την έννοια ότι εγώ θα πάρω τον κώδικα, θα βάλω άλλη μια κλάση (κληρονομημένη προφανώς από την αρχική μας) και το πρόγραμα θα δουλεύει μια χαρά. Για αυτό αποθηκεύω τους pointers! Άμα δεις τη θεωρία αυτό επιτρέπεται (δηλαδή να είναι διαφορετική κλάση), εφόσον οι κλάσεις κληρονομούνται από την ίδια!

Καταρχήν σε ευχαριστώ ειλικρινά φίλε που μπήκες στον κόπο να γράψεις ένα τόσο μεγάλο κείμενο για να μου απαντήσεις στην απορία. Το εκτιμώ ιδιαίτερα διότι το φόρουμ σιγά σιγά καταντάει νεκρό και η βοήθεια αν και αναγκαία είναι πλέον δυσεύρετη.
Μια μικρή διευκρίνιση μόνο πάνω σ' αυτό,ο pointer this  που δίνεται την δεύτερη φορά (διότι εν προκειμένω έχουμε 2 αντικείμενα) διαφέρει από αυτόν που δίνεται την πρώτη και κρατιέται ώστε μετά να γίνει το realloc?
Ρωτάω γιατί έχω δοκιμάσει να δεσμεύσω κατευθείαν 2 θέσεις στον **P εφόσον εδώ ξέρουμε το μέγεθος και να δώσω κατευθείαν και στις 2 τον this.Παρολ' αυτά το πρόγραμμα τρέχει λανθασμένα έτσι.
Logged

https://www.youtube.com/watch?v=yVfR_fhZK58#t=2m41
c0ndemn3d
Veteran
Αbsolute ΤΗΜΜΥ.gr
******
Posts: 4804


Yarr!


View Profile
Re: [C++] Άσκηση E - 2014/2015 - Προθεσμία 30/11/2014
« Reply #14 on: November 30, 2014, 16:28:08 pm »

Προφανώς! Γιατί το this αναφέρεται στο αντικείμενο το οποίο ορίζεται εκείνη τη στιγμή! Άρα αυτό που κάνεις είναι να βάλεις το ίδιο αντικείμενο 2 φορές σε 2 διαφορετικές θέσεις μνήμης. Η συνάρτηση αυτή εκτελείται μια φορά ανά αντικείμενο και το this προφανώς κάθε φορά κρατάει εκείνο το αντικείμενο.


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

Logged

In response, the pirates had to adhere to a doctrine of their own...
war against the world

They took my home, I can't walk away from that; can you?
 Forget me, forget Teach, forget loyalty, compacts, honours, debts, all of it.
The only question that matters is this: Who are you?
Pages: [1] 2 3 Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...