THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: stefos on December 16, 2008, 11:11:58 am



Title: C++ 9η Εργασία 2008
Post by: stefos on December 16, 2008, 11:11:58 am
Ένα δίκτυο επικοινωνιών αποτελείται από έναν αριθμό σταθμών. Οι σταθμοί που αποτελούν το δίκτυο συνδέονται μεταξύ τους άμεσα ή έμμεσα. Άμεση σύνδεση σημαίνει ότι υπάρχει γραμμή που συνδέει απευθείας τους δύο σταθμούς ενώ στην περίπτωση έμμεσης σύνδεσης η επικοινωνία των δύο σταθμών γίνεται μέσω άλλων σταθμών του δικτύου.
  Να γραφεί το λογισμικό στο οποίο να ορίζεται η κλάση station η οποία προσομοιάζει ένα σταθμό και στην οποία να ορίζεται ένας ακέραιος ως η ταυτότητα του σταθμού. Στην ίδια κλάση να ορίζεται και μια επικάλυψη του τελεστή new η οποία να δεσμεύει μνήμη για έναν πίνακα από αντικείμενα του τύπου station και η οποία ταυτόχρονα να τυπώνει και τον αριθμό των αντικειμένων για τα οποία δεσμεύτηκε η μνήμη.
Στο λογισμικό να οριστεί ακόμη η κλάση network στην οποία να ορίζεται μία επικάλυψη του τελεστή new με την οποία να δημιουργείται ένα δίκτυο σταθμών τύπου station. Στην επικάλυψη αυτή να δεσμεύεται μνήμη για ένα πίνακα από αντικείμενα τύπου station για κάθε ένα από τα οποία να τοποθετείται ως ταυτότητα η θέση του αντικειμένου στον πίνακα. Στην ίδια επικάλυψη, για να οριστεί ο τρόπος σύνδεσης των σταθμών μεταξύ τους, να δεσμεύεται μνήμη και για έναν πίνακα ακεραίων αριθμών δύο διαστάσεων. Ο πίνακας αυτός να έχει μία γραμμή για κάθε σταθμό του δικτύου και ως τιμές για τα στοιχεία της γραμμής να καταχωρούνται οι ταυτότητες των σταθμών οι οποίοι συνδέονται άμεσα με τον σταθμό στον οποίο αντιστοιχεί η γραμμή. Στην ίδια κλάση να ορίζεται ακόμη και μια επικάλυψη του τελεστή delete η οποία να αποδεσμεύει τη μνήμη που δεσμεύεται κατά τη δημιουργία ενός αντικειμένου με τον τελεστή new στον τύπο της κλάσης.
  Η κλάση network να ορίζει ακόμη και τη συνάρτηση search_con η οποία να δέχεται ως ορίσματα τις ταυτότητες δύο σταθμών και να επιστρέφει την τιμή 0 αν οι σταθμοί ταυτίζονται, την τιμή 1 αν είναι άμεσα συνδεδεμένοι, την τιμή 2 αν στην έμμεση σύνδεση των δύο σταθμών μεσολαβεί μόνο ένας σταθμός και την τιμή 3 σε κάθε άλλη περίπτωση.
  Η συνάρτηση main να δεσμεύει, με τον τελεστή new, μνήμη για ένα αντικείμενο στον τύπο network, να διαβάζει τις ταυτότητες δύο σταθμών του δικτύου που δημιουργεί το αντικείμενο αυτό και με τη βοήθεια της συνάρτησης search_con να εκτυπώνει την κατάσταση της σύνδεσής τους.

Βοηθητικές παρατηρήσεις:
Οι κλάσεις μπορούν να ορίζουν και όποιες άλλες συναρτήσεις θεωρηθούν αναγκαίες για την σύνταξη του λογισμικού.
Αν θεωρηθεί αναγκαίο μπορείτε να δεσμεύσετε μνήμη και για άλλους πίνακες εκτός από αυτούς που αναφέρονται στην εκφώνηση.
Υπάρχουν διαφοροποιήσεις μεταξύ των μεταγλωττιστών όταν η επικάλυψη του τελεστή new καλείται να δεσμεύσει μνήμη για πίνακες. Στην περίπτωση αυτή ορισμένοι μεταγλωττιστές απαιτούν το πρότυπο της συνάρτησης επικάλυψης να είναι
void *operator new[ ](size_t size)
ενώ για επικαλύψεις οι οποίες θα δεσμεύουν μνήμη για ένα μόνο στοιχείο το πρότυπο είναι
void *operator new(size_t size)
Στην περίπτωση που δεν οριστεί συνάρτηση επικάλυψης με βάση το πρώτο πρότυπο και χρησιμοποιηθεί ο τελεστής new για δέσμευση πίνακα εκτελείται η έκδοση που ορίζεται από τον μεταγλωττιστή. Άλλοι μεταγλωττιστές και στις δύο περιπτώσεις, δέχονται το δεύτερο πρότυπο.
Στην περίπτωση της κλάσης station, εφόσον χρησιμοποιήσετε μεταγλωττιστή που ακολουθεί την πρώτη διαδικασία, να οριστεί επικάλυψη του τελεστή new και για τις δύο περιπτώσεις.
Η αντίστοιχη επικάλυψη για την κλάση network να αφορά μόνο ένα αντικείμενο.

     


Title: Re: C++ 9η Εργασία 2008
Post by: MARIOS on December 16, 2008, 13:17:38 pm
Mas douleuei etsi???


Title: Re: C++ 9η Εργασία 2008
Post by: MARIOS on December 16, 2008, 13:19:49 pm
Πόσες εργασίες θα έχουμε????

Αυτή είναι η τελευταία???


Title: Re: C++ 9η Εργασία 2008
Post by: Neal on December 17, 2008, 04:06:23 am
Ποιος ήρθε;;


Title: Re: C++ 9η Εργασία 2008
Post by: Matzika on December 17, 2008, 05:34:17 am
καλα είναι σοβαρός ο άνθρωπος???δεν γίνονται εργαστήρια και μαθήματα και αυτός βάζει εργασία και τη θέλει και σε μία βδομάδα??????


Title: Re: C++ 9η Εργασία 2008
Post by: Emfanever on December 17, 2008, 13:50:04 pm
Απότι άκουσα θα μας βάλει να φτιάξουμε πρόγραμμα που να υλοποιεί τη λίστα με τα δώρα του Αη Βασίλη, η οποία θα πρέπει να είναι ανεξάρτητη από τον αριθμό των βοηθών που έχει ( virtual κτλ).


Title: Re: C++ 9η Εργασία 2008
Post by: menas on December 17, 2008, 17:38:13 pm
Για οσους την κανουν προσεξτε οτι η επικαλυψη του τελεστη new "εννοειται" οτι ειναι static συναρτηση μελος που σημαινει οτι μπορει να εχει προσβαση μονο σε static μεταβλητες.


Title: Re: C++ 9η Εργασία 2008
Post by: mitsos_dlx on December 17, 2008, 22:06:10 pm
Η επικάλυψη της new στην κλάση station έχει κανένα λόγο ύπαρξης??? :???: :???: :???:
Γιατί εμένα μου φένεται άχρηστη....
Για ποιο λόγο να δεσμεύει ένας σταθμός χώρο για ένα πίνακα σταθμών??? Αυτό το κάνει η κλάση network...

Αλήθεια πότε σκοπεύει αν τις εξετάσει όλες τις εργασίες και συνεχίζει να βάζει??? Βαρέθηκα πια...


Title: Re: C++ 9η Εργασία 2008
Post by: menas on December 17, 2008, 23:01:49 pm
Η επικάλυψη της new στην κλάση station έχει κανένα λόγο ύπαρξης??? :???: :???: :???:
Γιατί εμένα μου φένεται άχρηστη....
Για ποιο λόγο να δεσμεύει ένας σταθμός χώρο για ένα πίνακα σταθμών??? Αυτό το κάνει η κλάση network...

Αλήθεια πότε σκοπεύει αν τις εξετάσει όλες τις εργασίες και συνεχίζει να βάζει??? Βαρέθηκα πια...

Την επικαλυψη που κανεις στην station θα την χρησιμοποιησεις μεσα στην επικαλυψη της new που θα γινει στην network.


Title: Re: C++ 9η Εργασία 2008
Post by: Anyparktos on December 20, 2008, 03:17:28 am
Πάντως επειδή εν τέλει έστειλα mail οι εργασίες φέτος θα είναι τουλάχιστον 10...
Συγκεκριμένα,παραθέτω το ίδιο το mail:

Quote
Το πόσες τελικά θα είναι οι εργασίες εξαρτάται και από το πόσα μαθήματα θα γίνουν τελικά. Πάντως για φέτος θα είναι τουλάχιστον 10.




Title: Re: C++ 9η Εργασία 2008
Post by: guillem on December 20, 2008, 13:31:07 pm
Πάντως επειδή εν τέλει έστειλα mail οι εργασίες φέτος θα είναι τουλάχιστον 10...
Συγκεκριμένα,παραθέτω το ίδιο το mail:

Quote
Το πόσες τελικά θα είναι οι εργασίες εξαρτάται και από το πόσα μαθήματα θα γίνουν τελικά. Πάντως για φέτος θα είναι τουλάχιστον 10.




A...επειδή έχουν γίνει μαθήματα μας βαζει εδώ και 2 εβδομάδες εργασίες... Ααααααααααα............. :P


Title: Re: C++ 9η Εργασία 2008
Post by: ripper_george on December 20, 2008, 13:53:42 pm
Ελα γιορτές με C++!!!
Τι άλλο μπορεί να θέλει ένας ηλεκτρολόγος????

κάντε και μια συνάρτηση new year που θα φέρνει το νέο έτος....

Τι στο διάολο θέλει ο μπάρμπας να κάνουμε στην network???
επικάλυψη του new, 2 πίνακες, ο ένας 2χ2....

Κάποιος που έχει καταλάβει ας μιλήσει...

Το μόνο που ζητάω από τον Αι Βασίλη είναι να ξεστραβωθεί ο Κορτέσης και να μας δώσει για μία φορά (στην εξεταστική καλύτερα) μια εκφώνηση που να μπορείς να βγάλεις άκρη,,,,


Title: Re: C++ 9η Εργασία 2008
Post by: MARIOS on December 20, 2008, 14:34:57 pm
dyskola


Title: Re: C++ 9η Εργασία 2008
Post by: haas on December 20, 2008, 16:33:55 pm
Ελα γιορτές με C++!!!
Τι άλλο μπορεί να θέλει ένας ηλεκτρολόγος????

κάντε και μια συνάρτηση new year που θα φέρνει το νέο έτος....

Τι στο διάολο θέλει ο μπάρμπας να κάνουμε στην network???
επικάλυψη του new, 2 πίνακες, ο ένας 2χ2....

Κάποιος που έχει καταλάβει ας μιλήσει...

Το μόνο που ζητάω από τον Αι Βασίλη είναι να ξεστραβωθεί ο Κορτέσης και να μας δώσει για μία φορά (στην εξεταστική καλύτερα) μια εκφώνηση που να μπορείς να βγάλεις άκρη,,,,
φιλε μου αυτο που ζητας ειναι ολιγον δυσκολο... :-\
οσον αφορα την εργασια απο οτι καταλαβα θελει για την network μια επικαλυψη της new για την network μεσα στην οποια θα δημιουργεις εναν πινακα αντικειμενων τυπου station (συμφωνα με την επικαλυψη της new για την station) και επισης εναν δισδιαστατο πινακα τυπου int τον οποιο θα τον γεμισεις με τα ids των stations δλδ πχ. στην 4η γραμμη του πινακα θα γεμισεις ολη την γραμμη με τα stations που συνδεονται αμεσα με το station 4.το ιδιο θα κανεις και για τις υπολοιπες γραμμες.
επισης για την network θελει μια απλη επικαλυψη του delete και μια συναρτηση search_con που ακομα δεν εχω καταφερει να καταλαβω πως θα κανει αυτα που θελει.

κανεις αλλος για την search_con που να ξερει περισσοτερα?


Title: Re: C++ 9η Εργασία 2008
Post by: eleny on December 20, 2008, 16:56:37 pm
μηπως ξερει κανεις πως γινεται η εκτυπωση του αριθμου των αντικειμενων στην επικαλυψη της new στην κλαση station? ::)


Title: Re: C++ 9η Εργασία 2008
Post by: apoxa on December 20, 2008, 19:25:28 pm
μηπως ξερει κανεις πως γινεται η εκτυπωση του αριθμου των αντικειμενων στην επικαλυψη της new στην κλαση station? ::)
Ναι ρε παιδια αυτο ειναι ενα δυσκολο κομματι πως το κανουμε??Καμμια ιδεα για την search_con


Title: Re: C++ 9η Εργασία 2008
Post by: cordou4 on December 20, 2008, 19:51:53 pm
μηπως ξερει κανεις πως γινεται η εκτυπωση του αριθμου των αντικειμενων στην επικαλυψη της new στην κλαση station? ::)
Ναι ρε παιδια αυτο ειναι ενα δυσκολο κομματι πως το κανουμε??Καμμια ιδεα για την search_con

cout<<"arithmos";


Title: Re: C++ 9η Εργασία 2008
Post by: mitsos_dlx on December 20, 2008, 20:33:08 pm
Οι κλάσεις θα είναι ανεξάρτητες?

Επίσης σχετικά με τις new...
Από ότι κατάλαβα θέλει στην επικάλυψη της network να καλέσουμε απευθείας την επικάλυψη της station (την οποία θα βάλουμε τότε static) για να κάνει εκείνη τη δέσμευση για τους n σταθμούς? Γιατί αν δεν γίνει έτσι τότε δεσμεύουμε 2 φορές μνήμη για σταθμούς στις 2 επικαλύψεις...

Κορτέση μας έστειλες πάλι... ^seestars^


Title: Re: C++ 9η Εργασία 2008
Post by: evageliav on December 21, 2008, 01:44:20 am
Για την επικάλυψη που πρέπει να γίνει στη κλάση network,μπορεί κάποιος να εξηγήσει τι εννοεί με το παρακάτω;
Στην επικάλυψη αυτή να δεσμεύεται μνήμη για ένα πίνακα από αντικείμενα τύπου station για κάθε ένα από τα οποία να τοποθετείται ως ταυτότητα η θέση του αντικειμένου στον πίνακα.;;


Title: Re: C++ 9η Εργασία 2008
Post by: AgentCain on December 21, 2008, 01:55:11 am
Μέσα στην επικάλυψη της new για την κλάση network θα φτιάξεις έναν πίνακα με αντικείμενα τύπου station και σε κάθε ένα από τα αντικείμενα αυτά θα βάλεις σαν id τον αριθμό της θέσης του αντικειμένου στον πίνακα (δλδ 0, 1, 2,..., κ)
Αν προσέξεις λέει ότι στην κλάση station πρέπει να ορίσεις μια μεταβλητή π.χ. id τύπου int όπου θα καταχωρείται η ταυτότητα του σταθμού σαν αριθμός


Title: Re: C++ 9η Εργασία 2008
Post by: AgentCain on December 21, 2008, 02:00:08 am
Οι κλάσεις θα είναι ανεξάρτητες?

Επίσης σχετικά με τις new...
Από ότι κατάλαβα θέλει στην επικάλυψη της network να καλέσουμε απευθείας την επικάλυψη της station (την οποία θα βάλουμε τότε static) για να κάνει εκείνη τη δέσμευση για τους n σταθμούς? Γιατί αν δεν γίνει έτσι τότε δεσμεύουμε 2 φορές μνήμη για σταθμούς στις 2 επικαλύψεις...

Κορτέση μας έστειλες πάλι... ^seestars^
Ναι οι κλάσεις θα είναι ανεξάρτητες

Δε δεσμεύεις 2 φορές
Ορίζεις την επικάλυψη της new στην κλάση station
Στην επικάλυψη της new στην κλάση network θα γράψεις ένα new station[k] αλλά εκτός από αυτό θα δώσεις και id στους σταθμούς και θα φτιάξεις έναν δισδιάστατο πίνακα για τη σύνδεση των σταθμών
Οπότε πρακτικά η νέα αυτή επικάλυψη επεκτείνει τις δυνατότητες του προγράμματος.


Title: Re: C++ 9η Εργασία 2008
Post by: ripper_george on December 21, 2008, 12:18:06 pm
Δηλαδη ο πίνακας 2χ2 να έχει κάτι τέτοιο για μορφή??


   1 2 3 4 5  6 7 8 9
1 -  1    1
2    -  1       1
3       -
4         -
5
6
7
8
9

όπου το ένα θα ανιτπροσωπεύει την άμεση σύνδεση???


Title: Re: C++ 9η Εργασία 2008
Post by: zeus90 on December 21, 2008, 12:36:57 pm
Δηλαδη ο πίνακας 2χ2 να έχει κάτι τέτοιο για μορφή??


   1 2 3 4 5  6 7 8 9
1 -  1    1
2    -  1       1
3       -
4         -
5
6
7
8
9

όπου το ένα θα ανιτπροσωπεύει την άμεση σύνδεση???
OXI  :o
Εγώ κατάλαβα ότι θα είναι ένας πίνακας με ν γραμμές (όπου ν όλοι οι σταθμοί που δημιουργήθηκαν) και η κάθε γραμμή θα έχει τόσα στοιχεία όσοι είναι και οι σταθμοί που συνδέονται άμεσα με τον σταθμό της εκάστοτε γραμμής.
Οπότε θα είναι κάπως έτσι:
0234
145
20
30124
4
54

Τα στοιχεία των γραμμών είναι το id των σταθμών και όχι κάποιο "συνθηματικό 1"

Με κάθε επιφύλαξη πάντα.Έτσι ανέλυσα τον γρίφο του Κορτέση αυτής της εβδομάδας... :D


Title: Re: C++ 9η Εργασία 2008
Post by: AgentCain on December 21, 2008, 12:38:01 pm
Quote
Δηλαδη ο πίνακας 2χ2 να έχει κάτι τέτοιο για μορφή??
Όχι ακριβώς, είναι αυτό που λέει ο Zeus90
Εσύ το πήρες με δυαδική καταχώρηση (δλδ κενό όπου δεν συνδέεται και 1 όπου συνδέεται)
Αν θεωρήσεις ότι η 1η γραμμή αφορά τον 1ο σταθμό τότε στα κελιά της 1ης γραμμής θα βάλεις τις id των σταθμών με τους οποίους συνδέεται δλδ 0, 2, 3, 4, 7...
Τα νούμερα είναι ενδεικτικά. Το μόνο σίγουρο είναι ότι η id του ίδιου του σταθμού (στη δική μας περίπτωση 0) πρέπει να περιέχεται στον πίνακα (και αν δεν περιέχεται πρέπει να θεωρείται γνωστή διότι η άμεση σύνδεση με τον εαυτό του είναι λογική θεώρηση)


Υπάρχει κάποιος που να ολοκλήρωσε την κλάση network?
Έχω κολλήσει στο σημείο όπου πρέπει να επιστραφεί από την επικάλυψη της new ο πίνακας με τους ακεραίους και ο πίνακας με τα αντικείμενα τύπου station.
Άμα ορίσω μεταβλητές private στην κλάση network και πάω να περάσω τους πίνακες σε αυτές τότε μου λέει ότι δε γίνεται κάτι τέτοιο
Άμα όμως δώσω τους πίνακες μέσω της new σαν ορίσματα σε συνάρτηση της ίδιας κλάσης ώστε να τα καταχωρήσει αυτή στις μεταβλητές, τότε το πρόγραμμα κρασάρει στην αντιστοίχιση των πινάκων τύπου station (οι πίνακες τύπου int αντιστοιχίζονται κανονικά)
Καμιά ιδέα γιατί συμβαίνει αυτό?
Άλλες ιδέες για την επίλυση του προβλήματος?


Title: Re: C++ 9η Εργασία 2008
Post by: ripper_george on December 21, 2008, 13:00:32 pm
thx!

Θα δω και το σημείο που λες, και αμα βρω κάτι θα ποστ'αρω. Και πάλι thx!


Title: Re: C++ 9η Εργασία 2008
Post by: AgentCain on December 21, 2008, 13:09:46 pm
Quote
τότε το πρόγραμμα κρασάρει στην αντιστοίχιση των πινάκων τύπου station

My bad!
Τελικά δεν κρασάρει εκεί!
Το πρόγραμμα κρασάρει στο σημείο return p;

Ο p κανονικά είναι ποιντερ τύπου void
Εγώ όμως τον έκανα τύπου station ώστε να μπορώ να αντιγράψω τους πίνακες
Ο compiler δε δέχεται να επιστρέψει ποιντερ τύπου station όπως επίσης δε δέχεται η new να είναι τύπου station ή να καλέσω συνάρτηση κλάσης station από ποιντερ τύπου void

Dead end!!! :-\


Title: Re: C++ 9η Εργασία 2008
Post by: AgentCain on December 21, 2008, 13:41:50 pm
Μια λύση βρέθηκε, προγραμματιστικά όμως δεν είναι και τόσο σωστή

Ορίζεις τους 2 πίνακες που δημιουργούνται στη new ως στατικ μεταβλητές στη κλάση network
Το πρόγραμμα δουλεύει αλλά χάνεις τη δυνατότητα να ορίσεις στο πρόγραμμα πάνω από ένα αντικείμενο τύπου network
Δε ξέρω κατά πόσο είναι σωστό αυτό, αλλά από τη στιγμή που λογικά δε χρειάζονται 2+ αντικείμενα network...


Title: Re: C++ 9η Εργασία 2008
Post by: menas on December 21, 2008, 14:01:39 pm
Μια λύση βρέθηκε, προγραμματιστικά όμως δεν είναι και τόσο σωστή

Ορίζεις τους 2 πίνακες που δημιουργούνται στη new ως στατικ μεταβλητές στη κλάση network
Το πρόγραμμα δουλεύει αλλά χάνεις τη δυνατότητα να ορίσεις στο πρόγραμμα πάνω από ένα αντικείμενο τύπου network
Δε ξέρω κατά πόσο είναι σωστό αυτό, αλλά από τη στιγμή που λογικά δε χρειάζονται 2+ αντικείμενα network...

"Η αντίστοιχη επικάλυψη για την κλάση network να αφορά μόνο ένα αντικείμενο." Για αυτο το λογο εκανε την παρατηρηρση.

Επισης το size/sizeof(station) δεν δουλευει αφου ο compiler δεσμευει μνημη οπως τον βολευει. Αυτο που ζηταει το ερωτημα θα μπορουσε ισως να γινει με εναν στατικο μετρητη μεσα στην station.


Title: Re: C++ 9η Εργασία 2008
Post by: AgentCain on December 21, 2008, 14:26:46 pm
"Η αντίστοιχη επικάλυψη για την κλάση network να αφορά μόνο ένα αντικείμενο." Για αυτο το λογο εκανε την παρατηρηρση.

Επισης το size/sizeof(station) δεν δουλευει αφου ο compiler δεσμευει μνημη οπως τον βολευει. Αυτο που ζηταει το ερωτημα θα μπορουσε ισως να γινει με εναν στατικο μετρητη μεσα στην station.

1)Αυτό το λέει για να μην κάνεις επικάλυψη new[] δλδ η new να κάνει πίνακα. Βέβαια θα μου πεις Κορτέσης είναι αυτός! :P

2)Αυτό γιατί δε δουλεύει? Το χρησιμοποιήσα και λειτουργεί σωστά. Μπορεί να δεσμεύει μνήμη όπου ναναι αλλά το μέγεθος είναι στανταρ


Title: Re: C++ 9η Εργασία 2008
Post by: Airmak_gr on December 21, 2008, 18:24:09 pm
οτι να ναι δεν εχω καταλαβει τιποτα απολυτως.......μια χαρά......!!!!τις αλλες κουτσα στραβα τις παλεψα......ε αυτη δεν παλευεται με τιποτα ομως......


Title: Re: C++ 9η Εργασία 2008
Post by: menas on December 21, 2008, 19:09:28 pm

1)Αυτό το λέει για να μην κάνεις επικάλυψη new[] δλδ η new να κάνει πίνακα. Βέβαια θα μου πεις Κορτέσης είναι αυτός! :P

2)Αυτό γιατί δε δουλεύει? Το χρησιμοποιήσα και λειτουργεί σωστά. Μπορεί να δεσμεύει μνήμη όπου ναναι αλλά το μέγεθος είναι στανταρ

Για το πρωτο δικιο εχεις, αλλα αφου δουλευεται μονο με static  δεν εχει και πολυ νοημα να κανεις πινακα.
Για το δευτερο, καπου το ειχα διαβασει αλλα δεν θυμαμαι που. Παντως δοκιμασα με την διαιρεση και βλεποντας τις τιμες των size και sizeof(station) ηταν αδυνατο να γυρισει το επιθυμητο αποτελεσμα. Το οτι σου γυρισε την τιμη που ηθελες μαλλον ειναι καθαρη τυχη.(Οχι και τοσο αν καταχωρουσες το αποτελεσμα της διαιρεσης σε μεταβλητη που εχεις δηλωσει ως ακεραιο αφου τα δεκαδικα εξαφανιζονται με αυτον τον τροπο .) Δοκιμασε  (και πες μου) δηλωνοντας διαφορετικο αριθμο μεταβλητων στην κλαση station και εκτυπωνε με εντολες cout τα size και sizeof πριν την διαιρεση. Εγω δουλευω με visual studio αλλα νομιζω αυτα ισχυουν σε οποιοδηποτε συχρονο compiler.


Title: Re: C++ 9η Εργασία 2008
Post by: zeus90 on December 21, 2008, 19:29:39 pm
Όταν βγάζει πολλά σφάλματα ο linker της μορφής undefined reference to 'network::n' τι μπορεί να συμβαίνει?????Κόλλησα... :-[


Title: Re: C++ 9η Εργασία 2008
Post by: AgentCain on December 21, 2008, 19:40:33 pm
Για το δευτερο, καπου το ειχα διαβασει αλλα δεν θυμαμαι που. Παντως δοκιμασα με την διαιρεση και βλεποντας τις τιμες των size και sizeof(station) ηταν αδυνατο να γυρισει το επιθυμητο αποτελεσμα. Το οτι σου γυρισε την τιμη που ηθελες μαλλον ειναι καθαρη τυχη.(Οχι και τοσο αν καταχωρουσες το αποτελεσμα της διαιρεσης σε μεταβλητη που εχεις δηλωσει ως ακεραιο αφου τα δεκαδικα εξαφανιζονται με αυτον τον τροπο .) Δοκιμασε  (και πες μου) δηλωνοντας διαφορετικο αριθμο μεταβλητων στην κλαση station και εκτυπωνε με εντολες cout τα size και sizeof πριν την διαιρεση. Εγω δουλευω με visual studio αλλα νομιζω αυτα ισχυουν σε οποιοδηποτε συχρονο compiler.
Χωρίς να γίνει καμία καταχώρηση των τιμών σε καμία ακέραια μεταβλητή μεταβλητή, πρόσθεσα στον κώδικά μου (μέσα στην επικάληψη της new στη κλάση station) τις εξής γραμμές:
  cout<<"Size="<<size<<"\n";
  cout<<"sizeof="<<sizeof(station)<<"\n";

Το 2ο επιστρέφει πάντα 4 και το 1ο ακέραια πολλαπλάσια του 4, ότι αριθμό σταθμών και να βάλω.
Δουλεύω Dev


Title: Re: C++ 9η Εργασία 2008
Post by: MARIOS on December 21, 2008, 19:43:16 pm
Όταν βγάζει πολλά σφάλματα ο linker της μορφής undefined reference to 'network::n' τι μπορεί να συμβαίνει?????Κόλλησα... :-[

Είναι σφάλματα σε Static μεταβλητές???


Title: Re: C++ 9η Εργασία 2008
Post by: zeus90 on December 21, 2008, 19:49:22 pm
Όταν βγάζει πολλά σφάλματα ο linker της μορφής undefined reference to 'network::n' τι μπορεί να συμβαίνει?????Κόλλησα... :-[

Είναι σφάλματα σε Static μεταβλητές???

ΝΑΙ!

edit:Resolved


Title: Re: C++ 9η Εργασία 2008
Post by: MARIOS on December 21, 2008, 20:35:46 pm
AAAA ok.....


Title: Re: C++ 9η Εργασία 2008
Post by: menas on December 21, 2008, 22:46:00 pm
Χωρίς να γίνει καμία καταχώρηση των τιμών σε καμία ακέραια μεταβλητή μεταβλητή, πρόσθεσα στον κώδικά μου (μέσα στην επικάληψη της new στη κλάση station) τις εξής γραμμές:
  cout<<"Size="<<size<<"\n";
  cout<<"sizeof="<<sizeof(station)<<"\n";

Το 2ο επιστρέφει πάντα 4 και το 1ο ακέραια πολλαπλάσια του 4, ότι αριθμό σταθμών και να βάλω.
Δουλεύω Dev

Δες το ακολουθο κομματι κωδικα:

Code:
#include <iostream>
#include <cfloat>
#include <climits>
#include <conio.h>
using std::cout;
using std::cin;

class station

protected:
int id;
public:
void *operator new[](size_t size);
~station(){cout<<"Antikeimeno typou station katastrafhke\n";}
};

void *station::operator new[](size_t size)
{
void *p;
if ((p=malloc(size))==NULL) exit(1);
cout<<"Desmeftike mnimi gia "<<size/sizeof(station)<<" sta8mous\n";
return p;
}
   
int main()
{
station *p;
p=new station[4];

_getche();
return 0;
}

χωρις την συναρτηση τελικων συνθηκων θα βγει κατα "τυχη" σωστος ο αριθμος. Επισης δες και εδώ (http://bytes.com/groups/c/605749-size-class) για περισσοτερες πληροφοριες .

Υ.Γ: Ο Dev δεν αντεχεται πραγματικα, ασε που τον εχουν παρατησει και οι δημιουργοι του εδω και πολλλα χρονια.


Title: Re: C++ 9η Εργασία 2008
Post by: Airmak_gr on December 22, 2008, 14:09:27 pm
παιδια οποιος μπορει να με help λιγο στην network σχετικα με την δημιουργια των id καθως και στην search_con να μου στειλει μηνυμα η να γραψει καποιο κομματι κωδικα που θα με βοηθησει γιατι δεν βγαζω ακρη......ευχαριστω!!


Title: Re: C++ 9η Εργασία 2008
Post by: ion on December 22, 2008, 15:16:06 pm
στο borland μου βγάζει ερρορ όταν γράφω:

void *operator new[](size_t size)

είναι αυτό που λέει ο κορτέσης;

δέχεται και στις 2 περιπτώσεις το ίδιο πρότυπο;


Title: Re: C++ 9η Εργασία 2008
Post by: Grecs on December 22, 2008, 16:32:54 pm
Μπορει καποιος να μου μεταφρασει αυτο το κομματι της εργασιας?

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


Title: Re: C++ 9η Εργασία 2008
Post by: ripper_george on December 22, 2008, 17:41:12 pm
Ρε παιδιά, έχει κανένας καταλάβει τι εννοεί λέγοντας έμμεση σύνδεση????

Ουσιαστικά εμείς καταχωρούμε όταν έχουμε άμεση σύνδεση.... (Στον 2χ2 πίνακα)
Αφού στην υπόλοιπη εκφώνηση δεν κάνει λόγο για έμμεση σύνδεση, τι στο καλό εννοεί όταν λέει:


Quote
  Η κλάση network να ορίζει ακόμη και τη συνάρτηση search_con η οποία να δέχεται ως ορίσματα τις ταυτότητες δύο σταθμών και να επιστρέφει την τιμή 0 αν οι σταθμοί ταυτίζονται, την τιμή 1 αν είναι άμεσα συνδεδεμένοι, την τιμή 2 αν στην έμμεση σύνδεση των δύο σταθμών μεσολαβεί μόνο ένας σταθμός και την τιμή 3 σε κάθε άλλη περίπτωση.


Title: Re: C++ 9η Εργασία 2008
Post by: ripper_george on December 22, 2008, 17:44:16 pm
Μπορει καποιος να μου μεταφρασει αυτο το κομματι της εργασιας?

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

Στον πίνακα 2χ2:

Station id / Stations ID with which there is immediate connection

For example:


2455741    14444 14442 14443 14445
2456483    14444 

etc....
(Η πρώτη στήλη είναι οι σταθμοί για τους οποίους αναφέρεσαι, ενώ τα υπόλποιπα στοιχεία είναι οι σταθμοί με τους οποίους ο πρώτος έχει άμεση σύνδεση...)


Με πιάνεις???


Title: Re: C++ 9η Εργασία 2008
Post by: menas on December 22, 2008, 18:32:49 pm
Ρε παιδιά, έχει κανένας καταλάβει τι εννοεί λέγοντας έμμεση σύνδεση????

Ουσιαστικά εμείς καταχωρούμε όταν έχουμε άμεση σύνδεση.... (Στον 2χ2 πίνακα)
Αφού στην υπόλοιπη εκφώνηση δεν κάνει λόγο για έμμεση σύνδεση, τι στο καλό εννοεί όταν λέει:


Quote
  Η κλάση network να ορίζει ακόμη και τη συνάρτηση search_con η οποία να δέχεται ως ορίσματα τις ταυτότητες δύο σταθμών και να επιστρέφει την τιμή 0 αν οι σταθμοί ταυτίζονται, την τιμή 1 αν είναι άμεσα συνδεδεμένοι, την τιμή 2 αν στην έμμεση σύνδεση των δύο σταθμών μεσολαβεί μόνο ένας σταθμός και την τιμή 3 σε κάθε άλλη περίπτωση.

Αυτο σημαινει οτι αν π.χ σταθμος 13 δεν συνδεεται αμεσα με τον ζητουμενο θα πρεπει για καθε σταθμο που συνδεεται αμεσα με τον 13 να γινει ελεγχος αν συνδεεται αμεσα με τον ζητουμενο. Και μην ξεχνας ελεγχος αν μεσολαβει μονο ενας σταθμος.


Title: Re: C++ 9η Εργασία 2008
Post by: goustafson on December 22, 2008, 20:55:41 pm
void *network::operator new[](size_t size){
     station *A;
     int t;
     A=new station [size/sizeof(A)];
     int i;
     size_t **b;
     b=(size_t **)malloc(size*sizeof(size_t*));
     for(i=0;i<size;i++){
                         b=(size_t *)malloc(size * sizeof(size_t));
         
                           }
       
                             }
     return b;
                       
     }

Εκανε κανεις τον operator με αυτό το τρόπο;;;


Title: Re: C++ 9η Εργασία 2008
Post by: sarasd on December 22, 2008, 21:54:48 pm
Υπάρχει κανείς που μπορεί να μου εξηγήσει πως η επικάλυψη της new στη station θα επιστρέφει τον αριθμό των αντικειμένων για τα οποία έγινε δέσμευση γιατί δεν πολύκαταλαβα αυτό που περιγράφτηκε σε προηγούμενο post... Ευχαριστώ.


Title: Re: C++ 9η Εργασία 2008
Post by: sarasd on December 22, 2008, 22:29:01 pm
Άκυρο, βλακεία μου... Το κατάλαβα.


Title: Re: C++ 9η Εργασία 2008
Post by: Grecs on December 22, 2008, 23:25:27 pm
Ξερει κανεις γιατι μου βγαζει αυτο το ερρορ:

 expected primary-expression before '[' token

Στις παρακατω γραμμες 1 κ 2?
Code:
for(i=0;i<l;i++){
                        cout<<"Enter id for station No"<<i+1;
1                        cin>>station[i].id;
 2                       a[i][1]=station[i].id;
                        }


Title: Re: C++ 9η Εργασία 2008
Post by: ion on January 11, 2009, 18:10:32 pm
Δεν ξέρω αν το είδατε αλλά η εργασία ξαναάνοιξε!

Λοιπόν ασχολείται κανείς, ή τελος πάντων μπορεί κανείς που ασχολήθηκε τότε, να μου λύσει καμια απορία;