THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: mafalda on November 12, 2011, 12:40:12 pm



Title: [C++] Εργασία Α (2011-12)
Post by: mafalda on November 12, 2011, 12:40:12 pm
Ανέβηκε στο eTHMMY: (παράδοση μέχρι 20/11)

Άσκηση Α
  Η εγγραφή σε μια σελίδα κοινωνικής δικτύωσης γίνεται στέλνοντας ένα e-mail στο διαχειριστή της σελίδας. Στο e-mail δηλώνεται ένα όνομα, ένα login name και ένα password. Ο διαχειριστής καταχωρεί το νέο μέλος δίνοντας του ως ταυτότητα (id) τη θέση του στον πίνακα των μελών της σελίδας. Αφού ολοκληρωθούν οι εγγραφές η σελίδα ανοίγει στα μέλη της τα οποία μπαίνουν σε αυτή δίνοντας το login name  και το password. Όταν ένα μέλος της σελίδας μπει σε αυτήν μπορεί να αναζητήσει με το όνομά του κάποιο από τα μέλη της, να καταχωρίσει ένα μέλος ως φίλο, να διαγράψει ένα μέλος από φίλο ή να τυπώσει τα ονόματα των φίλων του.
  Να γραφεί το λογισμικό που διαχειρίζεται τη σελίδα. Στο λογισμικό, για κάθε μέλος της σελίδας, να ορίζεται ένα αντικείμενο στο οποίο να καταχωρούνται, ως private στοιχεία, η ταυτότητα του μέλους, το όνομα του, το login name, το password και ένας πίνακας με το πολύ 10 θέσεις στον οποίο θα καταχωρούνται οι ταυτότητες των μελών που θα δηλώσει ως φίλους. Με τη δημιουργία αντικειμένων στον τύπο της αντίστοιχης κλάσης να καταχωρούνται τα στοιχεία του μέλους το οποίο υλοποιεί το αντικείμενο. Η αντίστοιχη κλάση να διαθέτει τις κατάλληλες συναρτήσεις έτσι ώστε να εξυπηρετούνται οι λειτουργίες που διαθέτει η σελίδα.

Βοηθητικές παρατηρήσεις
  Ο πίνακας των αντικειμένων που υλοποιούν τα μέλη της σελίδας να ορίζεται δυναμικά.
  Η εγγραφή φίλων να επιτρέπει τις πολλαπλές εγγραφές του ίδιου μέλους.
Στο λογισμικό να ορίζεται αρχικά μια ατέρμων ανακύκλωση σε κάθε επανάληψη της οποίας να γίνεται η καταχώρηση ενός νέου μέλους. Η επαναλήψεις να σταματούν όταν ο διαχειριστής της σελίδας δώσει το δικό του login name και password.
  Το λογισμικό να διαθέτει μια δεύτερη ατέρμων ανακύκλωση σε κάθε επανάληψη της οποίας να ζητείται από τον χρήστη να εισάγει το login name του και το password για να μπει στη σελίδα. Μετά την είσοδο ο χρήστης να μπορεί, μέσα από ένα μενού επιλογών, να χρησιμοποιεί τις δυνατότητες που διαθέτει η σελίδα. Η ανακύκλωση να τερματίζεται όταν ο διαχειριστής δώσει το δικό του login name και το password.
   Το λογισμικό να συμμορφώνεται με την αρχή της ενσωμάτωσης.      


Title: Re: [C++] Εργασία Α (2011-12)
Post by: zisis00 on November 12, 2011, 14:16:35 pm
Οχι, ο Κορτέσης δεν κάνει translate ξένες εργασίες στα Ελληνικά. Ο όρος "ατέρμων ανακύκλωση" είναι επιστημονικός και συνάμα οικολογικός..

Ποιός ξέρει πάλι τι συντακτηκά λάθη θα έχει η εργασία...
Καλή μετάφραση στα ελληνικά!


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Ναταλία on November 12, 2011, 15:25:46 pm
τα στοιχεια του καθε μελους θα πρεπει να καταχωρηθουν δυναμικα σε πινακες?!  :???:


Title: Re: [C++] Εργασία Α (2011-12)
Post by: kmaniac on November 12, 2011, 15:49:37 pm
τα στοιχεια του καθε μελους θα πρεπει να καταχωρηθουν δυναμικα σε πινακες?!  :???:

Που το είδες αυτό??Κάτι μου βρωμάει στην εργασία.Η δυναμική δημιουργία αντικειμένων πως θα γίνει??Αν γίνει με malloc δεν μπορώ να δώσω αρχικές συνθήκες κατα την δημιουργία του αντικειμένου.
Δεν θα έχω συνάρτηση αρχικών συνθηκών???


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Ναταλία on November 12, 2011, 15:58:40 pm
ειπα μηπως χρειαζονται πινακες γιατι λεει οτι ο καθε χρηστης αναζηταει καποιο αλλο μελος, οποτε λεω μηπως ειναι καπου αποθηκευμενα τα ονοματα...αλλα δεν βγαινει ετσι..
εκανα συναρτηση αρχικων συνθηκων που ζηταει ονοματα, login_name κτλ


Title: Re: [C++] Εργασία Α (2011-12)
Post by: kmaniac on November 12, 2011, 16:18:54 pm
Σε πίνακα θα μπει το id του κάθε μέλους.Αφού έκανες συνάρτηση αρχικών συνθηκών που ζητάει ονόματα,όταν δώσεις στοιχεία του admin για να σταματήσει πως θα κόψεις την ατέρμνων ανακύκλωση??Στην main δεν την κάνεις??


Title: Re: [C++] Εργασία Α (2011-12)
Post by: tiger on November 12, 2011, 16:30:35 pm
η ανακυκλωση που λετε ειναι σε ενα for να υποθεσω?


Title: Re: [C++] Εργασία Α (2011-12)
Post by: kmaniac on November 12, 2011, 16:33:39 pm
η ανακυκλωση που λετε ειναι σε ενα for να υποθεσω?

γίνεται με πολλούς τρόπους.Έστω for(;; )  {..........}


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Ναταλία on November 12, 2011, 16:43:01 pm
Σε πίνακα θα μπει το id του κάθε μέλους.Αφού έκανες συνάρτηση αρχικών συνθηκών που ζητάει ονόματα,όταν δώσεις στοιχεία του admin για να σταματήσει πως θα κόψεις την ατέρμνων ανακύκλωση??Στην main δεν την κάνεις??

ψεματα, το αλλαξα..
δεν μου εβγαινε..!


Title: Re: [C++] Εργασία Α (2011-12)
Post by: tiger on November 12, 2011, 17:00:42 pm
απο for βγαινεις με break. βαζεις ενα if κατι για ελεγχο και με την εντολη break βγαινεις απο το for


Title: Re: [C++] Εργασία Α (2011-12)
Post by: teslaaaa on November 13, 2011, 21:04:38 pm
τα ονοματα,user's name ,password θα ειναι strings να υποθεσω?αν ναι ομως τι μεγεθος θα εχουν?η θα οριζονται κ αυτα δυναμικα? :-\


Title: Re: [C++] Εργασία Α (2011-12)
Post by: sofigami on November 13, 2011, 21:15:30 pm
τα ονοματα,user's name ,password θα ειναι strings να υποθεσω?αν ναι ομως τι μεγεθος θα εχουν?η θα οριζονται κ αυτα δυναμικα? :-\

Όχι δυναμικά. Βάλε στο char[..] μεγέθη που θεωρείς φυσιολογικά εσύ.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: teslaaaa on November 13, 2011, 21:22:49 pm
τα ονοματα,user's name ,password θα ειναι strings να υποθεσω?αν ναι ομως τι μεγεθος θα εχουν?η θα οριζονται κ αυτα δυναμικα? :-\

Όχι δυναμικά. Βάλε στο char[..] μεγέθη που θεωρείς φυσιολογικά εσύ.
τελικα τα εβαλα με define κ να δινει ο χρηστης το μεγεθος του string...thnx :)


Title: Re: [C++] Εργασία Α (2011-12)
Post by: tiger on November 14, 2011, 19:38:25 pm
στις περιπτωσεις αυτες ποτε δεν δινει ο χρηστης το μεγεθος για το μηκος του ονοματος ,password κτλ.  υπαρχει ενα μεγιστο που πρεπει αναγαστικα ολοι να τηρουνε. οποτε θα λεγα να βαλεις ειτε στην δηλωση πχ char[20] - οποτε μπορει να εχει μεγιστο μηκος 20,αλλα κ λιγοτερα μηκη- ειτε εκει που το βαλες στο define αλλα οχι του χρηστη.αλλα του admin.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Laza G on November 14, 2011, 20:36:35 pm
Και με string να γίνει το ίδιο είναι.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: tiger on November 14, 2011, 21:02:19 pm
τι εννοεις ακριβως? τα string αποθηκευονται σε character μεταβλητες


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Laza G on November 14, 2011, 22:03:44 pm
char* με include το <string> header. Για να μπορεί ο άλλος να βάλει όσους χαρακτήρες θέλει. Αλλά όπως και να το κάνεις είναι σωστό. Στις βάσεις δεδομένων πχ χρησιμοποιείται varchar[25] συνήθως για τα ονόματα -> εδώ char[25] δλδ.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: tiger on November 15, 2011, 02:08:55 am
ε αυτο δεν ειπα? :D


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Bazinga on November 15, 2011, 15:34:59 pm
πως θα ξερουμε ποσα θα ειναι τα μελη της σελιδας?το οριζουμε εμεις? δεν καταλαβαινω  :-\ :-\


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Niobe on November 15, 2011, 18:10:49 pm
Βασικα συναρτηση αρχικων συνθηκων εχει κανει ??



Title: Re: [C++] Εργασία Α (2011-12)
Post by: Ναταλία on November 16, 2011, 14:30:51 pm
οταν θελω να φτιαξω τον πινακα φιλοι για το κ μελος,
πως καταχωρω τα id?
εστω οτι το αντικειμενο μου ειναι a
θα γραψω κατι του στυλ :
a [κ] . filoi[y]= ... ?


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 16, 2011, 16:08:31 pm
οταν θελω να φτιαξω τον πινακα φιλοι για το κ μελος,
πως καταχωρω τα id?
εστω οτι το αντικειμενο μου ειναι a
θα γραψω κατι του στυλ :
a [κ] . filoi[y]= ... ?

αν και τωρα ξυπνησα,νομιζω το y δε χρειαζεται εφοσον εχεις pointer και τον μετακινεις


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 16, 2011, 18:37:23 pm
Ο πίνακας των αντικειμένων που υλοποιούν τα μέλη της σελίδας να ορίζεται δυναμικά.
για ποιόν πίνακα ομιλεί;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: antonios on November 16, 2011, 18:42:03 pm
οταν θελω να φτιαξω τον πινακα φιλοι για το κ μελος,
πως καταχωρω τα id?
εστω οτι το αντικειμενο μου ειναι a
θα γραψω κατι του στυλ :
a [κ] . filoi[y]= ... ?

αν και τωρα ξυπνησα,νομιζω το y δε χρειαζεται εφοσον εχεις pointer και τον μετακινεις

το αντικείμενο είναι το a.... άρα για να αναφερθείς στον πίνακα φίλοι, γράφεις a . filoi (x)=.....


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 16, 2011, 19:01:21 pm
ο πίνακας των φίλων δε θα πρέπει να είναι 2 διαστάσεων;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 16, 2011, 19:06:02 pm
ο πίνακας των φίλων δε θα πρέπει να είναι 2 διαστάσεων;
οχι εχει μονο τα ids
ο πινακας των εγγραφων ειναι με 2 διαστασεις


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 16, 2011, 19:12:17 pm
για ποιό λόγο;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 16, 2011, 19:15:37 pm
ο πίνακας των φίλων δε θα πρέπει να είναι 2 διαστάσεων;
οχι εχει μονο τα ids
ναι έχει τα ids των φίλων αλλά πώς θα ξέρουμε ποιανού μέλους φίλοι είναι;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 16, 2011, 19:20:17 pm
ο πίνακας των φίλων δε θα πρέπει να είναι 2 διαστάσεων;
οχι εχει μονο τα ids
ναι έχει τα ids των φίλων αλλά πώς θα ξέρουμε ποιανού μέλους φίλοι είναι;

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


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Ναταλία on November 16, 2011, 19:21:17 pm
οταν θελω να φτιαξω τον πινακα φιλοι για το κ μελος,
πως καταχωρω τα id?
εστω οτι το αντικειμενο μου ειναι a
θα γραψω κατι του στυλ :
a [κ] . filoi[y]= ... ?

αν και τωρα ξυπνησα,νομιζω το y δε χρειαζεται εφοσον εχεις pointer και τον μετακινεις

το αντικείμενο είναι το a.... άρα για να αναφερθείς στον πίνακα φίλοι, γράφεις a . filoi (x)=.....

ναι.. δικιο εχεις
εκανα λαθος. εννοουσα οτι εχω πινακα αντικειμενων *a
που ουσιαστικα το a[0] εναι για το 1ο μελος, το a[1] για το 2ο κτλ..
οποτε αν θελω να αλλαξω το στοιχειο y του πινακα φιλοι του κ μελους τι θα πρεπει να γραψω?  :-\


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 16, 2011, 19:57:20 pm
αα κ κατι αλλο
αμα βάλω break σε ενα if σε μια συνάρτηση,θα βγει τελείως απ τη συνάρτηση;
αν το κάνω σε μια δομή επανάληψης;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Ναταλία on November 16, 2011, 20:13:39 pm
αα κ κατι αλλο
αμα βάλω break σε ενα if σε μια συνάρτηση,θα βγει τελείως απ τη συνάρτηση;
αν το κάνω σε μια δομή επανάληψης;

αν βαλεις break σε ενα if θα βγει απο το if οχι απο ολη τη συναρτηση!


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 16, 2011, 20:21:19 pm
αααα κατάλαβα
ευχαριστώω


Title: Re: [C++] Εργασία Α (2011-12)
Post by: ForestBlack on November 16, 2011, 21:10:59 pm
Quote
Με τη δημιουργία αντικειμένων στον τύπο της αντίστοιχης κλάσης να καταχωρούνται τα στοιχεία του μέλους το οποίο υλοποιεί το αντικείμενο.

έχει καταλάβει κάποιος τι εννοεί??


Title: Re: [C++] Εργασία Α (2011-12)
Post by: gmtms on November 16, 2011, 23:39:24 pm
τι φάση, το επίπεδο δυσκολίας είναι φυσιολογικό για 1η άσκηση; δεν έχω καμία ιδέα πως να ξεκινήσω

εντίτ: αν καποιος γνωστης μπορει να εξηγήσει σχετικά απλά τα βήματα ή να ανεβάσει ένα πρότυπο βάση του οποίου να καταλάβουμε λίγο τι παίζει (όχι, δεν έχω στόχο την στεγνή αντιγραφή) θα ήμουν υπόχρεος


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 16, 2011, 23:43:35 pm
είναι λίγο τρομακτική :-\ αλλά κούτσα κούτσα κάτι βγαίνει
πολύ κλάση ρε παιδάκι μου
το ονομα τον κωδικό μέλους κτλ τα αποθηκεύουμε σε πίνακα ή κάνουμε μια συνάρτηση στην κλάση και τα βρίσκουμε κάθε φορά απο κεί;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Earendil on November 17, 2011, 03:12:23 am
Ποιο είναι το νόημα της ατερμονης ανακυκλωσης? αφου για να δημιουργηθει ο πινακας τως αντικειμενων, χρειαζεται να ορισουμε συγκεκριμενο μεγεθος π.χ. 100 θεσεις....αυτο σημαινει 100 μελη, αρα δεν εχει νοημα να υπαρχει for που θα τρεχει για παντα...

Βασικα, δεν θα πρεπε να λεει ο κορτεσης συγκεκριμενο αριθμο μελων πχ max 100?


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 17, 2011, 15:24:30 pm
ίσως, δεν είμαι σίγουρη,θέλει να ορίσουμε δυναμικά την κλάση
να μετρήσουμε τα μέλη της ανακύκλωσης και έξω από αυτήν να δημιουργήσουμε μια κλάση
βέβαια και γω με πίνακες το έκανα


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pepper ann on November 17, 2011, 15:32:16 pm
Ποιο είναι το νόημα της ατερμονης ανακυκλωσης? αφου για να δημιουργηθει ο πινακας τως αντικειμενων, χρειαζεται να ορισουμε συγκεκριμενο μεγεθος π.χ. 100 θεσεις....αυτο σημαινει 100 μελη, αρα δεν εχει νοημα να υπαρχει for που θα τρεχει για παντα...

Βασικα, δεν θα πρεπε να λεει ο κορτεσης συγκεκριμενο αριθμο μελων πχ max 100?
ακριβώς επειδή δεν σου λέει πουθενά τον αριθμό των μελών,θεωρητικά,πρέπει να ορίσεις δυναμικά τον πίνακα.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Earendil on November 17, 2011, 17:27:11 pm
Thank you! βασικά αυτό που με μπέρδευε ήταν ότι ακόμα και με τη δυναμικη δεσμευση, παντα οριζαμε συγκεκριμενο αριθμο επαναληψεων, ενα ταδε N, αλλα στην τελικη αφου οριζουμε δυναμικα οντως δεν υπαρχει λογος να ξερουμε απ την αρχη τον αριθμο των  βηματων , βαζεις εναν counter και αναλογα με το ποσο αυξανεται, τοσο μεγαλωνει και ο πινακας σου(στην ουσια τοσες περισσοτερες θεσεις δειχνει ο pointer)...τελοσπαντων μια χαρα :P


Title: Re: [C++] Εργασία Α (2011-12)
Post by: jt26 on November 17, 2011, 17:47:27 pm
Thank you! βασικά αυτό που με μπέρδευε ήταν ότι ακόμα και με τη δυναμικη δεσμευση, παντα οριζαμε συγκεκριμενο αριθμο επαναληψεων, ενα ταδε N, αλλα στην τελικη αφου οριζουμε δυναμικα οντως δεν υπαρχει λογος να ξερουμε απ την αρχη τον αριθμο των  βηματων , βαζεις εναν counter και αναλογα με το ποσο αυξανεται, τοσο μεγαλωνει και ο πινακας σου(στην ουσια τοσες περισσοτερες θεσεις δειχνει ο pointer)...τελοσπαντων μια χαρα :P
Σωστα. Και απλως βαζεις ενα μπρεικ στη λουπα σου, μεσα σε εναν ελεγχο


Title: Re: [C++] Εργασία Α (2011-12)
Post by: jt26 on November 17, 2011, 17:49:16 pm
Η ασκηση ειναι πραγματι δυσκολη και οσο να ναι υπαρχουν ασαφειες. Όταν το παιζεις φεισμπουκακιας, αυτα γινονται....


Title: Re: [C++] Εργασία Α (2011-12)
Post by: tiger on November 17, 2011, 20:18:56 pm
αα κ κατι αλλο
αμα βάλω break σε ενα if σε μια συνάρτηση,θα βγει τελείως απ τη συνάρτηση;
αν το κάνω σε μια δομή επανάληψης;

αν βαλεις break σε ενα if θα βγει απο το if οχι απο ολη τη συναρτηση!

λαθος.
προσοχη!@!!
η break δεν σε βγαζει απο if. σε βγαζει απο for.  αν εχεις ενα if μεσα σε ενα for,τοτε η break θα σε βγαλει απο το for.  αν ειναι απλα μεσα σε ενα if ,τοτε δεν θα σε βγαλει απο το if.ουτε φυσικα απο την συναρτηση


Title: Re: [C++] Εργασία Α (2011-12)
Post by: perukas on November 17, 2011, 21:21:35 pm
Εχει βρει κανενας τη συναρτηση για την εκτυπωση των φιλων του χρηστη??

εχω κολλησει πολυ ασχημα εκει περα



Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 17, 2011, 21:22:54 pm
αα κ κατι αλλο
αμα βάλω break σε ενα if σε μια συνάρτηση,θα βγει τελείως απ τη συνάρτηση;
αν το κάνω σε μια δομή επανάληψης;

αν βαλεις break σε ενα if θα βγει απο το if οχι απο ολη τη συναρτηση!

λαθος.
προσοχη!@!!
η break δεν σε βγαζει απο if. σε βγαζει απο for.  αν εχεις ενα if μεσα σε ενα for,τοτε η break θα σε βγαλει απο το for.  αν ειναι απλα μεσα σε ενα if ,τοτε δεν θα σε βγαλει απο το if.ουτε φυσικα απο την συναρτηση


ισχυει . επισης το break δουλευει και στο switch case (οποτε αν μπορεις βαλε switch αντι για if αν θες δομη επιλογης )

οταν λεει "Ο πίνακας των αντικειμένων που υλοποιούν τα μέλη της σελίδας να ορίζεται δυναμικά" εννοει ο υποπινακας με τους φιλους του καθενος; ή γενικα ο πινακας εγγραφων;

επισης η αρχη της ενσωματωσης τι @@ ειναι;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: zioy on November 17, 2011, 23:02:16 pm
ρε παιδια πειτε μου λιγο για να την ξεκινησω ποσες κλασεις δημιουργησατε και ποιες ειναι αυτες?


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 18, 2011, 00:10:22 am
ο πινακας των εγγραφων πρεπει να περιεχει των πινακα φιλων η μπορω να τον βαλω ξεχωρα καπου; (γιατι χρησιμοποιω ποιντερ και δε ξερω που "δειχνει" ο ποιντερ)


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 18, 2011, 00:36:10 am
Εχει βρει κανενας τη συναρτηση για την εκτυπωση των φιλων του χρηστη??

εχω κολλησει πολυ ασχημα εκει περα


Code:
void members::print_friend(int j)
{
     int i=0;
      if (friends[j][0]==NULL)
         {
                                 cout<<"Den exete kanenan filo"<<"\n";
         }
     for ( ;i<10;i++)
     {  
         cout<<friends[j][i]<<"\n";                        
         if (i!=10 && friends[j][i+1]==NULL ) break;
         }
}
εγώ την έκανα έτσι
ξέρω πως είναι λάθος
αλλά δε θα σκάσω για μια κωλοεργασία

edit:έβαλα το όνομα τον κωδικο κλπ σε πίνακα οπότε τον πίνακα των φίλων τον έκανα 2 διαστάσεων κι έστειλα στη συνάρτηση τον πρώτο δείκτη, δηλαδή το μέλος που έχει κάνει login
αν δεν έχει κανέναν φίλο το εμφανίζει (εδώ δεν μπόρεσα να βρώ πώς να βγώ τελείως απ τη συνάρτηση)



Title: Re: [C++] Εργασία Α (2011-12)
Post by: Ναταλία on November 18, 2011, 01:34:16 am
αα κ κατι αλλο
αμα βάλω break σε ενα if σε μια συνάρτηση,θα βγει τελείως απ τη συνάρτηση;
αν το κάνω σε μια δομή επανάληψης;

αν βαλεις break σε ενα if θα βγει απο το if οχι απο ολη τη συναρτηση!

λαθος.
προσοχη!@!!
η break δεν σε βγαζει απο if. σε βγαζει απο for.  αν εχεις ενα if μεσα σε ενα for,τοτε η break θα σε βγαλει απο το for.  αν ειναι απλα μεσα σε ενα if ,τοτε δεν θα σε βγαλει απο το if.ουτε φυσικα απο την συναρτηση


ωχ σορυ!!! δεν ειχα ιδεα!!
και αν θες να βγεις απο την if υπαρχει καποια εντολη?


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 18, 2011, 01:37:30 am
μα για ποιό λόγο να βγείς από την if?


Title: Re: [C++] Εργασία Α (2011-12)
Post by: mark333 on November 18, 2011, 12:57:37 pm
Μία ερώτηση έχω.. Αν είχα παρακολουθήσει θα έβγαζα νόημα? Ότι και να κάνω μου βγαίνει λάθος στην εργασία.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: antonios on November 18, 2011, 13:30:43 pm
Μία ερώτηση έχω.. Αν είχα παρακολουθήσει θα έβγαζα νόημα? Ότι και να κάνω μου βγαίνει λάθος στην εργασία.

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


Title: Re: [C++] Εργασία Α (2011-12)
Post by: rspappas on November 18, 2011, 14:24:24 pm
κρατηστε το τοπικ καθαρο και μην τρομαζετε τους συμφοιτητες σας


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Ναταλία on November 18, 2011, 15:52:32 pm
μα για ποιό λόγο να βγείς από την if?

μου χρειαστηκε σε καποια φαση..
αν ξερεις..!


Title: Re: [C++] Εργασία Α (2011-12)
Post by: antonios on November 18, 2011, 15:56:59 pm
μα για ποιό λόγο να βγείς από την if?

μου χρειαστηκε σε καποια φαση..
αν ξερεις..!

μάλλον σκέφτεσαι λάθος.... σκέψου διαφορετικά ή βρες κάποιον άλλο τρόπο να κάνεις αυτό που θελεις


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 18, 2011, 16:00:43 pm
τελικα των πινακα των φιλων μπορω να τον αποθηκευσω οπου θελω? ξεχωριστα ; (απαντηστε πλιζ  μηπως και την αρχισω επιτελους)
ο πινακας των μελων δε χρειαζεται να χει ολα τα στοιχεια; (μαζι και τον (υπο)πινακα των φιλων;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: princess_of_the_dawn on November 18, 2011, 17:14:38 pm
την εργασία με τί όνομα την ανεβάζουμε;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: ValmadiaN on November 18, 2011, 18:17:58 pm
τελικα των πινακα των φιλων μπορω να τον αποθηκευσω οπου θελω? ξεχωριστα ; (απαντηστε πλιζ  μηπως και την αρχισω επιτελους)
ο πινακας των μελων δε χρειαζεται να χει ολα τα στοιχεια; (μαζι και τον (υπο)πινακα των φιλων;

Ο πίνακας με τις ταυτότητες των φίλων θα είναι στο private κομμάτι της κλάσης που θα δημιουργήσεις.
Θα είναι μονοδιάσταστος και θα έχει μέγεθος μέχρι και 10.

Ο πίνακας των μελών είναι ένας πίνακας της main με στοιχεία, αντικείμενα της κλάσης σου.
Είναι μονοδιάστατος.

ΥΓ.: Δε λέω ότι δεν γίνεται και με δύο διαστάσεις , απλά είναι περισσότερος ο κόπος κατά
τη γνώμη μου!


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 18, 2011, 18:20:45 pm
τελικα των πινακα των φιλων μπορω να τον αποθηκευσω οπου θελω? ξεχωριστα ; (απαντηστε πλιζ  μηπως και την αρχισω επιτελους)
ο πινακας των μελων δε χρειαζεται να χει ολα τα στοιχεια; (μαζι και τον (υπο)πινακα των φιλων;

Ο πίνακας με τις ταυτότητες των φίλων θα είναι στο private κομμάτι της κλάσης που θα δημιουργήσεις.
Θα είναι μονοδιάσταστος και θα έχει μέγεθος μέχρι και 10.

Ο πίνακας των μελών είναι ένας πίνακας της main με στοιχεία, αντικείμενα της κλάσης σου.
Είναι μονοδιάστατος.

ΥΓ.: Δε λέω ότι δεν γίνεται και με δύο διαστάσεις , απλά είναι περισσότερος ο κόπος κατά
τη γνώμη μου!

ευχαριστω ξεκινησα πριν ωρα με μονοδιαστατους και ο θεος βοηθος(οποιοσδηποτε θεος)


Title: Re: [C++] Εργασία Α (2011-12)
Post by: mark333 on November 18, 2011, 18:37:10 pm
Thank you! βασικά αυτό που με μπέρδευε ήταν ότι ακόμα και με τη δυναμικη δεσμευση, παντα οριζαμε συγκεκριμενο αριθμο επαναληψεων, ενα ταδε N, αλλα στην τελικη αφου οριζουμε δυναμικα οντως δεν υπαρχει λογος να ξερουμε απ την αρχη τον αριθμο των  βηματων , βαζεις εναν counter και αναλογα με το ποσο αυξανεται, τοσο μεγαλωνει και ο πινακας σου(στην ουσια τοσες περισσοτερες θεσεις δειχνει ο pointer)...τελοσπαντων μια χαρα :P

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


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Earendil on November 18, 2011, 20:00:09 pm
Ίσως το κανα ανορθόδοξα , αλλά έγραψα το εξής:
(Τα id, username και password δεν ειναι τα private στοιχεια που ζητα ο κορτεσης, απλα μεταβλητες που χρησιμοποιω εγω και τις ονομασα το ιδιο για ευκολια)

  p=new facebook[id];                                                                     
      p[id].set_facebook(id,username,password);   
      id++;   

οπου  p ο πινακας των αντικειμενων που δημιουργω και id ο counter τον οποιο στην αρχη της int main() τον ορισα =0.
Δηλαδη: πρωτα δηλωνω τον πινακα , μετα δημιουργω το αντικειμενο του πινακα και μετα ανεβαζω τον counter ετσι ωστε στην επομενη λουπα της ατερμονης ανακυκλωσης να δημιουργηθει κι αλλη θεση στον πινακα και να καλεστει το αντιστοιχο αντικειμενο.
Με καθε επιφυλαξη βεβαια, δεν ξερω αν ειναι σωστο ετσι το ανεβασα παντως :P


Title: Re: [C++] Εργασία Α (2011-12)
Post by: mark333 on November 18, 2011, 20:05:04 pm
Ίσως το κανα ανορθόδοξα , αλλά έγραψα το εξής:
(Τα id, username και password δεν ειναι τα private στοιχεια που ζητα ο κορτεσης, απλα μεταβλητες που χρησιμοποιω εγω και τις ονομασα το ιδιο για ευκολια)

  p=new facebook[id];                                                                     
      p[id].set_facebook(id,username,password);   
      id++;   

οπου  p ο πινακας των αντικειμενων που δημιουργω και id ο counter τον οποιο στην αρχη της int main() τον ορισα =0.
Δηλαδη: πρωτα δηλωνω τον πινακα , μετα δημιουργω το αντικειμενο του πινακα και μετα ανεβαζω τον counter ετσι ωστε στην επομενη λουπα της ατερμονης ανακυκλωσης να δημιουργηθει κι αλλη θεση στον πινακα και να καλεστει το αντιστοιχο αντικειμενο.
Με καθε επιφυλαξη βεβαια, δεν ξερω αν ειναι σωστο ετσι το ανεβασα παντως :P


Όλα αυτά σε while???
το δοκίμασες και δουλεύει? γιατί έκανα το ίδιο και όταν βάζω δεύτερο όνομα κτλ δεν κρατάει τα πρώτα.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Earendil on November 18, 2011, 20:26:15 pm
Βασικα οντως δεν κραταει θεσεις μ αυτον τον τροπο... τι να σου πω, μετα δεν εχω ιδεα πως θα γινει χωρις να δηλωσεις συγκεκριμενο αριθμο μελων η εστω ενα μεγιστο για τον πινακα.....

εν τω μεταξυ μετα απο μερικες δηλωσεις κρασαρει και το προγραμμα μου :P
τελοσπαντων, προσωπικα το ανεβασα ετσι σιγα...αντι να βαλει ο κορτεσης καμια εργασια εισαγωγικη να καταλαβουμε κλασεις (εχοντας κανει ενα μολις μαθημα ασκησεων πανω σε αυτες), βαζει αυτο το πραγμα.....
anyway...


Title: Re: [C++] Εργασία Α (2011-12)
Post by: mark333 on November 18, 2011, 20:30:38 pm
so true.... θα το κανω κ εγώ έτσι μάλλον γιατί στην τελική δεν βγαίνει και τίποτα άλλο. :S


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pierikara on November 18, 2011, 21:37:33 pm
Αφού δεν ξέρουμε τον αριθμό των μελών, για τον πίνακα των αντικειμένων δεσμεύουμε μνήμη σε κάθε επανάληψη;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 18, 2011, 22:00:26 pm
Αφού δεν ξέρουμε τον αριθμό των μελών, για τον πίνακα των αντικειμένων δεσμεύουμε μνήμη σε κάθε επανάληψη;

ουι
οταν διαγραφω φιλο κανω free?


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pepper ann on November 18, 2011, 22:34:44 pm
Αφού δεν ξέρουμε τον αριθμό των μελών, για τον πίνακα των αντικειμένων δεσμεύουμε μνήμη σε κάθε επανάληψη;

ουι
οταν διαγραφω φιλο κανω free?
εννοείς από τον πίνακα των φίλων;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 18, 2011, 22:41:40 pm
Αφού δεν ξέρουμε τον αριθμό των μελών, για τον πίνακα των αντικειμένων δεσμεύουμε μνήμη σε κάθε επανάληψη;

ουι
οταν διαγραφω φιλο κανω free?
εννοείς από τον πίνακα των φίλων;
ναι


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pepper ann on November 18, 2011, 22:43:46 pm
Αφού δεν ξέρουμε τον αριθμό των μελών, για τον πίνακα των αντικειμένων δεσμεύουμε μνήμη σε κάθε επανάληψη;

ουι
οταν διαγραφω φιλο κανω free?
εννοείς από τον πίνακα των φίλων;
γιατί;
τον ορίζεις δυναμικά;
ναι


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 18, 2011, 22:46:09 pm
Αφού δεν ξέρουμε τον αριθμό των μελών, για τον πίνακα των αντικειμένων δεσμεύουμε μνήμη σε κάθε επανάληψη;

ουι
οταν διαγραφω φιλο κανω free?
εννοείς από τον πίνακα των φίλων;
γιατί;
τον ορίζεις δυναμικά;
ναι

ναι δυναμικα τον ορισα..εσυ εβαλες 10 θεσεις;
(πες μου οτι δε θελει δυναμικα γτ εφαγα ολο το απογευμα με τη malloc)


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pepper ann on November 18, 2011, 22:56:06 pm
Αφού δεν ξέρουμε τον αριθμό των μελών, για τον πίνακα των αντικειμένων δεσμεύουμε μνήμη σε κάθε επανάληψη;

ουι
οταν διαγραφω φιλο κανω free?

εννοείς από τον πίνακα των φίλων;
γιατί;
τον ορίζεις δυναμικά;
ναι

ναι δυναμικα τον ορισα..εσυ εβαλες 10 θεσεις;
(πες μου οτι δε θελει δυναμικα γτ εφαγα ολο το απογευμα με τη malloc)
αφού σου λέει μέχρι 10 θέσεις.σου λέει το μέγεθος του πίνακα :Ρ


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 18, 2011, 22:57:54 pm
Αφού δεν ξέρουμε τον αριθμό των μελών, για τον πίνακα των αντικειμένων δεσμεύουμε μνήμη σε κάθε επανάληψη;

ουι
οταν διαγραφω φιλο κανω free?

εννοείς από τον πίνακα των φίλων;
γιατί;
τον ορίζεις δυναμικά;
ναι

ναι δυναμικα τον ορισα..εσυ εβαλες 10 θεσεις;
(πες μου οτι δε θελει δυναμικα γτ εφαγα ολο το απογευμα με τη malloc)
αφού σου λέει μέχρι 10 θέσεις.σου λέει το μέγεθος του πίνακα :Ρ

ε λεει μεχρι :P και περυσι ελεγε μεχρι και καναμε δυναμικα :P ε τωωωωρα δε το αλλαζω ... (Γαμω τους ποιντερς)


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pepper ann on November 18, 2011, 23:00:54 pm
Αφού δεν ξέρουμε τον αριθμό των μελών, για τον πίνακα των αντικειμένων δεσμεύουμε μνήμη σε κάθε επανάληψη;

ουι
οταν διαγραφω φιλο κανω free?

εννοείς από τον πίνακα των φίλων;
γιατί;
τον ορίζεις δυναμικά;
ναι

ναι δυναμικα τον ορισα..εσυ εβαλες 10 θεσεις;
(πες μου οτι δε θελει δυναμικα γτ εφαγα ολο το απογευμα με τη malloc)
αφού σου λέει μέχρι 10 θέσεις.σου λέει το μέγεθος του πίνακα :Ρ

ε λεει μεχρι :P και περυσι ελεγε μεχρι και καναμε δυναμικα :P ε τωωωωρα δε το αλλαζω ... (Γαμω τους ποιντερς)
εμ
δεν νομίζω.
οταν σου λέει μέγεθος ξεκάθαρα γιατί να θέλει να τον ορίσεις δυναμικά;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 18, 2011, 23:05:30 pm
το βαλα δυναμικα απλα εβαλα οριο 10 (counter)  :'( :'( :'(
κοπος 2 ημερων  :'( :'(


Title: Re: [C++] Εργασία Α (2011-12)
Post by: ValmadiaN on November 18, 2011, 23:20:06 pm
το βαλα δυναμικα απλα εβαλα οριο 10 (counter)  :'( :'( :'(
κοπος 2 ημερων  :'( :'(

Γιατί δεν τον δηλώνεις μέσα στην κλάση σου,σε στυλ:

int friends[10];

και να ξεμπερδεύεις;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pepper ann on November 18, 2011, 23:21:29 pm
το βαλα δυναμικα απλα εβαλα οριο 10 (counter)  :'( :'( :'(
κοπος 2 ημερων  :'( :'(

Γιατί δεν τον δηλώνεις μέσα στην κλάση σου σε στυλ:

int friends[10];

και να ξεμπερδεύεις;
+1


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Andre on November 19, 2011, 13:13:22 pm
Ορίζω έναν pointer σε αντικείμενο.
Δεσμεύω δυναμικά μνήμη, μέσω της malloc, ίση με το μέγεθος ενός αντικειμένου (το αντικείμενο δεν έχει φυσικά δημιουργηθεί ακόμα).
Για την εγγραφή δεύτερου μέλους χρειάζεται να χρησιμοποιήσω την realloc για να δεσμεύσω μνήμη για ένα ακόμη αντικείμενο; Ή μπορώ να ξαναχρησιμοποιήσω την malloc δεσμεύοντας μεγαλύτερη μνήμη από πριν (με τη χρήση ενός counter);
Σε τί διαφέρουν οι δύο υλοποιήσεις (εάν βέβαια μπορούν να γίνουν);


Title: Re: [C++] Εργασία Α (2011-12)
Post by: christineL on November 19, 2011, 13:27:33 pm
Και εγω ετσι το εκανα και χρησιμοποιησα realloc καθε φορα που εγγραφοταν νεο μελος. Λένε όμως κάποιοι πως δεν γίνεται να λειτουργησει αυτο δεδομένου ότι χρησιμοποιουμε κλάσεις και πρεπει ν δουλεψουμε με new και delete. Τώρα τι ισχυει δεν ξερω γτ ο Κορτεσης απλα ανεφερε οτι υπαρχουν(και δεν τις προτιμα  :D ) ..αλλα δεν θα κατσω και να σκασω. Ας ειναι λαθος.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Andre on November 19, 2011, 14:01:58 pm
Και εγω ετσι το εκανα και χρησιμοποιησα realloc καθε φορα που εγγραφοταν νεο μελος. Λένε όμως κάποιοι πως δεν γίνεται να λειτουργησει αυτο δεδομένου ότι χρησιμοποιουμε κλάσεις και πρεπει ν δουλεψουμε με new και delete. Τώρα τι ισχυει δεν ξερω γτ ο Κορτεσης απλα ανεφερε οτι υπαρχουν(και δεν τις προτιμα  :D ) ..αλλα δεν θα κατσω και να σκασω. Ας ειναι λαθος.

Δηλαδή μπορούμε να χρησιμοποιήσουμε τις new και delete; Γιατί έχω την εντύπωση (από πέρυσι νομίζω), ότι αρχικά ζητά να χρησιμοποιήσουμε τις συναρτήσεις της C.

Αλλάζω το ερώτημά μου ως εξής;
Έστω ότι χρησιμοποιώ malloc για τη δέσμευση χώρου ίσος με ένα αντικείμενο:
p=(melos*)malloc(sizeof(melos));
όπου p ο pointer σε αντικείμενο και melos το όνομα της κλάσης (που ορίζει ένα νέο τύπο δεδομένων).
Μπορώ έπειτα να γράψω το εξής:
p=(melos*)malloc(2*sizeof(melos)); ?

Έτσι όπως το βλέπω, ουσιαστικά ξαναδεσμεύω τον ίδιο χώρο στη μνήμη (γίνεται?) και έναν επιπλέον ίσο με τον πρώτο.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Ναταλία on November 19, 2011, 14:36:14 pm
Ορίζω έναν pointer σε αντικείμενο.
Δεσμεύω δυναμικά μνήμη, μέσω της malloc, ίση με το μέγεθος ενός αντικειμένου (το αντικείμενο δεν έχει φυσικά δημιουργηθεί ακόμα).

χμ, πως οριζεις pointer σε αντικειμενο χωρις να εχεις δημιουργησει το αντικειμενο??  :???:


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Andre on November 19, 2011, 14:46:13 pm
Βλέπω για παράδειγμα σε αυτό το λινκ: http://dmst.aueb.gr/dds/c/ptr/malloc.htm (http://dmst.aueb.gr/dds/c/ptr/malloc.htm), η reallloc() να επιστρέφει τον ίδιο pointer με αυτόν που δείχνει το πρώτο byte της περιοχής που δέσμευσε η malloc():

iptr = (int *)realloc(iptr, 20 * sizeof(int));

Εάν χρησιμοποιούσα στη θέση της την malloc(), τί διαφορά θα είχα; Π.χ. το "iptr[0] to iptr[9] retain old values" δε θα ίσχυε πάλι;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: nikitas350 on November 19, 2011, 14:56:07 pm
Και εγω ετσι το εκανα και χρησιμοποιησα realloc καθε φορα που εγγραφοταν νεο μελος. Λένε όμως κάποιοι πως δεν γίνεται να λειτουργησει αυτο δεδομένου ότι χρησιμοποιουμε κλάσεις και πρεπει ν δουλεψουμε με new και delete. Τώρα τι ισχυει δεν ξερω γτ ο Κορτεσης απλα ανεφερε οτι υπαρχουν(και δεν τις προτιμα  :D ) ..αλλα δεν θα κατσω και να σκασω. Ας ειναι λαθος.

Δηλαδή μπορούμε να χρησιμοποιήσουμε τις new και delete; Γιατί έχω την εντύπωση (από πέρυσι νομίζω), ότι αρχικά ζητά να χρησιμοποιήσουμε τις συναρτήσεις της C.

Αλλάζω το ερώτημά μου ως εξής;
Έστω ότι χρησιμοποιώ malloc για τη δέσμευση χώρου ίσος με ένα αντικείμενο:
p=(melos*)malloc(sizeof(melos));
όπου p ο pointer σε αντικείμενο και melos το όνομα της κλάσης (που ορίζει ένα νέο τύπο δεδομένων).
Μπορώ έπειτα να γράψω το εξής:
p=(melos*)malloc(2*sizeof(melos)); ?

Έτσι όπως το βλέπω, ουσιαστικά ξαναδεσμεύω τον ίδιο χώρο στη μνήμη (γίνεται?) και έναν επιπλέον ίσο με τον πρώτο.

Η malloc σου δεσμεύει απλά μνήμη και σου επιστρέφει έναν void pointer που δείχνει στην μνήμη που μόλις δέσμευσες. Τελος πάντων, αν γράψεις:

p=(melos*)malloc(sizeof(melos));
p=(melos*)malloc(2*sizeof(melos));

Τότε έχει δεσμεύτει ένα κομμάτι μνήμης ίσο με sizeof(melos) και ένα κομμάτι μνήμης ίσο με 2*sizeof(melos), και ο pointer σου δείχνει στο 2ο. Βέβαια πρίν τρέξεις την δεύτερη εντολή θα έπρεπε να έκανες free(p); γιατί τώρα έχεις δεσμεύσει ένα κομμάτι μνήμης και έχεις χάσει τον pointer που δείχνει σε αυτό (δηλαδή δεν μπορείς πλέον να το βρεις).

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

p=(melos*)malloc(sizeof(int));

Βέβαια όταν θα πήγαινες να προσπελάσεις το υποτιθέμενο αντικείμενο που δείχνει η p θα είχες πρόβλημα, γιατί το μέγεθος της μνήμης που δέσμευσες είναι μικρότερο από το μέγεθος του αντικειμένου. Γενικά η malloc δεν πρέπει να χρησιμοποιείται στην C++.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: zisis00 on November 19, 2011, 15:19:04 pm
Και εγω ετσι το εκανα και χρησιμοποιησα realloc καθε φορα που εγγραφοταν νεο μελος. Λένε όμως κάποιοι πως δεν γίνεται να λειτουργησει αυτο δεδομένου ότι χρησιμοποιουμε κλάσεις και πρεπει ν δουλεψουμε με new και delete. Τώρα τι ισχυει δεν ξερω γτ ο Κορτεσης απλα ανεφερε οτι υπαρχουν(και δεν τις προτιμα  :D ) ..αλλα δεν θα κατσω και να σκασω. Ας ειναι λαθος.

Τελικά γίνεται και με malloc/realloc (έτσι το έκανα :p). Η(βασική) διαφορά τους απο την new είναι ότι η new καλέι και το constructor (πιο βαθια ανάλυση στο site του κατασκευαστή http://www2.research.att.com/~bs/bs_faq2.html#malloc :P). Πάντως αν χρησιμοποιείσει κάποιος malloc να προτιμίσει να δηλώσει τα username, password, login name, ως char * και όχι ως string όπως εγώ γιατί θα έχει μλν θεματάκι.

Βλέπω για παράδειγμα σε αυτό το λινκ: http://dmst.aueb.gr/dds/c/ptr/malloc.htm (http://dmst.aueb.gr/dds/c/ptr/malloc.htm), η reallloc() να επιστρέφει τον ίδιο pointer με αυτόν που δείχνει το πρώτο byte της περιοχής που δέσμευσε η malloc():

iptr = (int *)realloc(iptr, 20 * sizeof(int));

Εάν χρησιμοποιούσα στη θέση της την malloc(), τί διαφορά θα είχα; Π.χ. το "iptr[0] to iptr[9] retain old values" δε θα ίσχυε πάλι;

Θεωρητικά τουλάχιστον όχι. Η δουλεία της malloc είναι να σου δεσμεύει memory όπου βρει στο heap, χωρίς να την ενδιαφέρουν τα δεδομένα σου. ( Με πρόλαβε ο Νικήτας σχετικά με αυτό)

Επίσης η malloc στην C++ μάλλον χρησιμοποιείται για πολύ low-level δουλείες. Τώρα αν όντως ο Κορτέσης είπε ότι "προτιμα την malloc στην C++", μάλλον έρχεται σε αντιπαράθεση με τον δημιουργό της που αναφέρει
"Don’t use malloc(). The new operator (§6.2.6) does the same job better, and instead of malloc.  Instead of realloc try a vector."




Title: Re: [C++] Εργασία Α (2011-12)
Post by: raf on November 19, 2011, 18:29:43 pm
ρε παιδια να ρωτησω...login name kai password του διαχειρηστη απο που το ζηταμε???


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 19, 2011, 18:30:09 pm
ρε παιδια να ρωτησω...login name kai password του διαχειρηστη απο που το ζηταμε???

το εκανα με #define
δε ξερω αν στεκει παντως


Title: Re: [C++] Εργασία Α (2011-12)
Post by: τιρκουαζ στοκος on November 19, 2011, 18:50:38 pm
ρε παιδια να ρωτησω...login name kai password του διαχειρηστη απο που το ζηταμε???
Μπορεις και μεσα στο while στην main κατευθειαν.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: raf on November 19, 2011, 19:37:00 pm
ayto me tous filous  pws to kaneis;
για παραδειγμα ας υποθεσουμε οτι εγω γραφω babis πως θα δω αυτος υπαρχει?
θα το κανω απο την main...? ^cool^


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Andre on November 19, 2011, 19:42:36 pm
...Πάντως αν χρησιμοποιείσει κάποιος malloc να προτιμίσει να δηλώσει τα username, password, login name, ως char * και όχι ως string όπως εγώ γιατί θα έχει μλν θεματάκι.

Είναι τα λεγόμενα "κυριολεκτικά αλφαριθμητικά" που λέει στο βιβλίο του Schildt, σελ.147; Στις σημειώσεις πού υπάρχει αυτή η δήλωση;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: τιρκουαζ στοκος on November 19, 2011, 19:49:37 pm
ayto me tous filous  pws to kaneis;
για παραδειγμα ας υποθεσουμε οτι εγω γραφω babis πως θα δω αυτος υπαρχει?
θα το κανω απο την main...? ^cool^
Εφ'οσον ο μπαμπης ειναι εγγεγραμμενο μελος, οταν θα κανεις σαρωση στα ονοματα και οντως θα υπαρχει θα εκτυπωνεις εσυ χειροκινητα οτι υπαρχει το μελος,δηλαδη sto if που θα ρωτας αν υπαρχει ο μπαμπης η οποιοδηποτε αλλο ονομα θελεις στα μελη και οντως υπαρχει θα κανεις ενα cout<<"Tο μελος που ζητησατε υπαρχει";


Title: Re: [C++] Εργασία Α (2011-12)
Post by: zisis00 on November 19, 2011, 20:07:41 pm
...Πάντως αν χρησιμοποιείσει κάποιος malloc να προτιμίσει να δηλώσει τα username, password, login name, ως char * και όχι ως string όπως εγώ γιατί θα έχει μλν θεματάκι.

Είναι τα λεγόμενα "κυριολεκτικά αλφαριθμητικά" που λέει στο βιβλίο του Schildt, σελ.147; Στις σημειώσεις πού υπάρχει αυτή η δήλωση;

ποιές σημειώσεις ? δεν ανέφερα κάτι τέτοιο ..


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Andre on November 19, 2011, 20:20:08 pm
...Πάντως αν χρησιμοποιείσει κάποιος malloc να προτιμίσει να δηλώσει τα username, password, login name, ως char * και όχι ως string όπως εγώ γιατί θα έχει μλν θεματάκι.

Είναι τα λεγόμενα "κυριολεκτικά αλφαριθμητικά" που λέει στο βιβλίο του Schildt, σελ.147; Στις σημειώσεις πού υπάρχει αυτή η δήλωση;

ποιές σημειώσεις ? δεν ανέφερα κάτι τέτοιο ..


Άκυρο, κατάλαβα.
Λες δηλαδή να δηλωθούν τα login name κτλ. όχι ως πίνακες τύπου char (πχ. char login_name[30]), αλλά γράφοντας πχ char *login_name.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: raf on November 19, 2011, 20:21:02 pm
στην κλαση εχω:
 
Code:
 bool user_data() {
                  char login_name[40];
                  cout<<"Login name:";
                  cin>>login_name;
                  char password[40];
                  cout<<"Password";
                  cin>>password;
                  if (login_name==user_logname) {
                        if ((password==user_password)) {
                                 }
                                 return true;
                                 }
                                 return false;
                                 }
στην Main εχω¨:
    while (true) {
          
       if (member->user_data()) {
          cout<<"Welcome!\nPress:\nF,if you want to find friends.\nA,if you want to add friends.\nD,if you want to delete friends.\nS,if you want to see your friends.\n";
                                 char choice;
                                 cin>>choice;
                                 switch (choice) {
                                        case 'F':{
                                             cout<<"Enter the name of your friend:";
                                             char fr[40];
                                             cin>>fr;
                                             if (member->name()==fr) {  
                                                 cout<<"Friend found!The name of your friend is:"<<fr;
                                                 }
                                             else {
                                                  cout<<"friend didn't found!Please try again.";
                                                  }
                                                  }
                                                  }    
                                                  }
                                                  }  

Quote
error: [ if (member->name()==fr) {    ]  void value not ignored as ti ought to be.

gt?
κλαση εχω συναρτηση οπου ζηταω το ονομα ως τυπο void  
ti kanw la8os??? :'(


Title: Re: [C++] Εργασία Α (2011-12)
Post by: zisis00 on November 19, 2011, 20:32:52 pm
...Πάντως αν χρησιμοποιείσει κάποιος malloc να προτιμίσει να δηλώσει τα username, password, login name, ως char * και όχι ως string όπως εγώ γιατί θα έχει μλν θεματάκι.

Είναι τα λεγόμενα "κυριολεκτικά αλφαριθμητικά" που λέει στο βιβλίο του Schildt, σελ.147; Στις σημειώσεις πού υπάρχει αυτή η δήλωση;

ποιές σημειώσεις ? δεν ανέφερα κάτι τέτοιο ..


Άκυρο, κατάλαβα.
Λες δηλαδή να δηλωθούν τα login name κτλ. όχι ως πίνακες τύπου char (πχ. char login_name[30]), αλλά γράφοντας πχ char *login_name.

Όχι. Λεω να ΜΗΝ δηλωθούν ως strings μέσα στην κλάση (string username string login_name κλπ, στην C++ υπάρχει και αυτό, νομίζω το είχε αναφέρει ο σημεωνίδης στο τελευταίο μθμ ισως και όχι), γιατί αν δοκιμάσεις να κάνεις malloc το object (που έχει μεσα τα strings) παίζει πρόβλημα. Τώρα αν θα το δηλώσεις char * ή char [30], είναι θέμα δικό σου.
Προσωπικά έκανα το 2ο.

Αν δεν κατάλαβες πάλι τι λεω πες μου να στο εξηγήσω με λίγο κώδικα ώστε να γίνω 100% σαφής.


Title: Re: [C++] Εργασία Α (2011-12)
Post by: zisis00 on November 19, 2011, 21:25:32 pm
στην κλαση εχω:
  bool user_data() {
                  char login_name[40];
                  cout<<"Login name:";
                  cin>>login_name;
                  char password[40];
                  cout<<"Password";
                  cin>>password;
                  if (login_name==user_logname) {
                        if ((password==user_password)) {
                                 }
                                 return true;
                                 }
                                 return false;
                                 }
στην Main εχω¨:
    while (true) {
         
       if (member->user_data()) {
          cout<<"Welcome!\nPress:\nF,if you want to find friends.\nA,if you want to add friends.\nD,if you want to delete friends.\nS,if you want to see your friends.\n";
                                 char choice;
                                 cin>>choice;
                                 switch (choice) {
                                        case 'F':{
                                             cout<<"Enter the name of your friend:";
                                             char fr[40];
                                             cin>>fr;
                                             if (member->name()==fr) { 
                                                 cout<<"Friend found!The name of your friend is:"<<fr;
                                                 }
                                             else {
                                                  cout<<"friend didn't found!Please try again.";
                                                  }
                                                  }
                                                  }   
                                                  }
                                                  }   
 error: [ if (member->name()==fr) {    ]  void value not ignored as ti ought to be. gt?
κλαση εχω συναρτηση οπου ζηταω το ονομα ως τυπο void 
ti kanw la8os??? :'(

Για να συγκρίνεις 2 αλφραριθμιτικά δεν το κάνεις με το σύμβολο της ισότητας ( == ). Δοκίμασε την συνάρτηση strcmp.
EDIT: Δες επίσης στο γουγλη πως συντάσεται και η switch.. Το έχεις γαμήσει λίγο με τις αγκύλες..
EDIT2: [τώρα είναι το error κάτω κάτω] Βασικά τι ακριβώς πας να κάνεις στο if(member->name == fr) ? Κάνεις return απο τη συνάρτηση true/false και το συγκρίνεις με ενα char *? :P


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Panosh on November 19, 2011, 23:05:06 pm
Ξέρει κανείς στην εγγραφή νέων μελών γιατί δε δουλεύει η realloc?
Έχω κάνει την κλάση, κάνω p=(user*)malloc(sizeof(user)) αλλά
αφότου γίνει το p=(user*)realloc(p,n*sizeof(user)), κάνω print το size του p (με cout << sizeof(*p); ) αλλά δεν αλλάζει μετά από τα loops...


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 19, 2011, 23:07:39 pm
Ξέρει κανείς στην εγγραφή νέων μελών γιατί δε δουλεύει η realloc?
Έχω κάνει την κλάση, κάνω p=(user*)malloc(sizeof(user)) αλλά
αφότου γίνει το p=(user*)realloc(p,n*sizeof(user)), κάνω print το size του p (με cout << sizeof(*p);) αλλά δεν αλλάζει μετά από τα loops...

μηπως πηγε αλλου ο ποιντερ ; το p ; πρεπει να δειχνει εκει που σταματησε η προηγουμενη malloc/realloc nomizw
επισης το sizeof δε μου κολλαει..γιατι νομιζω εχει καθορισμενο ..απλα μπορεις να δεις τ η διευθυνση αν αλλαξε(&p)..(νομιζω λεω ξανα)


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Panosh on November 19, 2011, 23:16:48 pm
O pointer δείχνει στην ίδια διεύθυνση.. αλλά νομίζω ότι κάνει deallocate και πάει αλλού μόνο όταν δεν υπάρχει χώρος για να επεκταθεί.. το sizeof και το n*sizeof τα κάνω print και πηγαίνουν σωστα... :-\


Title: Re: [C++] Εργασία Α (2011-12)
Post by: ForestBlack on November 19, 2011, 23:32:40 pm
Quote
Πάντως αν χρησιμοποιείσει κάποιος malloc να προτιμίσει να δηλώσει τα username, password, login name, ως char * και όχι ως string όπως εγώ γιατί θα έχει μλν θεματάκι.

Τι είδους θεματάκι? Γι'αυτό κρασάρει εμένα ο compiler με το που δίνω το πρώτο όνομα (τα έχω δηλώσει όλα string..)?


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Panosh on November 20, 2011, 03:01:50 am
Δικιά μου βλακεία.. Πρέπει να δουλεύει τελικά..  ;)


Title: Re: [C++] Εργασία Α (2011-12)
Post by: alexis2044 on November 20, 2011, 16:35:14 pm
Το ID το γράφει τελικά ο διαχειριστής, ή το δίνει το πρόγραμμα αυτομάτως;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: zisis00 on November 20, 2011, 17:19:18 pm
Quote
Πάντως αν χρησιμοποιείσει κάποιος malloc να προτιμίσει να δηλώσει τα username, password, login name, ως char * και όχι ως string όπως εγώ γιατί θα έχει μλν θεματάκι.

Τι είδους θεματάκι? Γι'αυτό κρασάρει εμένα ο compiler με το που δίνω το πρώτο όνομα (τα έχω δηλώσει όλα string..)?

Σκάει μάλλον επειδή το string είναι variable length. Γενικά σύμφωνα με τον Stroustrup "You can't malloc a class with non-trivial constructor in C++". Άμα τα αλλάξεις όλα τα strings σε char *, ή char [50] πχ θα δουλέυει πένα. Αλλιώς η malloc δεν κάνει δουλειά και θέλεις τον new operator.

Ξέρει κανείς στην εγγραφή νέων μελών γιατί δε δουλεύει η realloc?
Έχω κάνει την κλάση, κάνω p=(user*)malloc(sizeof(user)) αλλά
αφότου γίνει το p=(user*)realloc(p,n*sizeof(user)), κάνω print το size του p (με cout << sizeof(*p); ) αλλά δεν αλλάζει μετά από τα loops...

Το sizeof(*p) τι ακριβώς σου δείχνει ? :/  Check: malloc_usable_size() function in malloc.h


Title: Re: [C++] Εργασία Α (2011-12)
Post by: erica@hmmy on November 20, 2011, 17:32:48 pm
Εχω το εξής πρόβλημα,
έχω γράψει το παρακάτω για την εισαγωγή των μελών
Code:
	for(int i=0;;i++)
{
cout<<"Give Username, Password and Name"<<'\n';
cin>>unm>>pswd>>nm;

if(!strcmp(unm,AdminName) && !strcmp(pswd,AdminPassword)) break;

if(i==0)
{
a =(user *)malloc(sizeof(user));
if(!a)
{
cout<<"Not enough space.\n";
exit(1);
}
}
else
{
a =(user *)realloc(a, (i+1)*sizeof(user));
if(!a)
{
cout<<"Not enough space.\n";
exit(1);
}
}
a[i].fill(unm,pswd,nm,i+1);
//a[i].print();
counter++;
}
   
Όταν του ζητάω να μου κάνει πρίντ μέσα στο for βγάζει κανονικά τα δεδομένα που του εισάγω
όταν όμως ζητάω έξω από το for να μου κάνει πριντ βγάζει το AdminName και Password όσες φορές έχω εισάγει δεδομένα..δηλαδή
έστω ότι εισήγαγα 3 διαφορετικούς χρήστες και μετά τα στοιχεία του admin για να βγει από τη λούπα, και μου εκτυπώνει τα εξής:

Name: AdminName
Password:AdminPassword
id:1
Name: AdminName
Password:AdminPassword
id:2
Name: AdminName
Password:AdminPassword
id:3

Τι λάθος κάνω?


Title: Re: [C++] Εργασία Α (2011-12)
Post by: ValmadiaN on November 20, 2011, 20:40:57 pm
@ erica@hmmy

Δεν μπορώ να βρω κάποιο λάθος στον κώδικα που έχεις γράψει.
Θέλεις να ανεβάσεις τον κώδικα της fill και της print μπας
και γίνεται εκεί το μπέρδεμα;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: adianohtos on November 21, 2011, 00:27:07 am
Ξερει κανεις αν ειναι δεκτες μετα τις 12 οι εργασιες;;  :P :D


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Αιμιλία η φτερωτή χελώνα on November 21, 2011, 00:28:42 am
ναι ειναι
το πρωι το κλεινει

υγ: ανεβασα στα downloads τις εργασιες '09-'10 λυμμενες. https://www.thmmy.gr/smf/index.php?action=tpmod;dl=item1771 have fun


Title: Re: [C++] Εργασία Α (2011-12)
Post by: nasia!! on November 21, 2011, 00:29:46 am
Γενικά ο Δον Κορτέσης μπαίνει νομίζω στις 7 κάπου το πρωί για να πάρει τις εργασίες και κλείνει την υποβολή, επομένως οποιαδήποτε εργασία μέχρι τις 3-4 το πρωί, γίνεται δεκτή.

[ τουλάχιστον αυτό ίσχυε σε μας ]


Title: Re: [C++] Εργασία Α (2011-12)
Post by: Angel C. on November 23, 2011, 21:34:46 pm
Την λύση της εργασίας δεν θα την ανεβάσει;


Title: Re: [C++] Εργασία Α (2011-12)
Post by: ForestBlack on November 24, 2011, 18:52:46 pm
Quote
Την λύση της εργασίας δεν θα την ανεβάσει;

Μα ναι γιατί δεν ανεβάζει την λύση στο ΕΤΗΜΜΥ ?????


Title: Re: [C++] Εργασία Α (2011-12)
Post by: pentium4 on November 24, 2011, 19:00:28 pm
Quote
Την λύση της εργασίας δεν θα την ανεβάσει;

Μα ναι γιατί δεν ανεβάζει την λύση στο ΕΤΗΜΜΥ ?????

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


Title: Re: [C++] Εργασία Α (2011-12)
Post by: tiger on November 25, 2011, 03:25:54 am
ενταξει η λυση της εργασιας οπως καταλαβαινεται δεν ειναι μοναδικη ετσι κ αλλιως


Title: Re: [C++] Εργασία Α (2011-12)
Post by: ForestBlack on November 25, 2011, 17:31:05 pm
για λόγους τεχνικής το είπα εγώ
όχι για να δώ την αλγοριθμική της υλοποιήση