Η σελίδα μας αναβαθμίστηκε, γι' αυτό τον λόγο τα μέλη μας θα πρέπει να ζητήσουν νέο κωδικό πρόσβασης από την υπηρεσία "Αποστολή κωδικού πρόσβασης".
Εάν το email με τον νέο κωδικό δεν έρθει στο inbox κοιτάξτε και στο spam folder. Ο server είναι φρέσκος και δεν έχει το reputation που του αξίζει.

Κλασεισ και πινακεσ αντικειμενων!!!!!

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
NTINAaa
Δημοσιεύσεις: 21
Εγγραφή: 16 Μαρ 2009 00:25

Κλασεισ και πινακεσ αντικειμενων!!!!!

Δημοσίευση από NTINAaa » 25 Απρ 2010 22:00

Καλησπέρα παιδία ....!!!!!Εχω κολλήσει εδώ και ώρα με μια άσκησ στη c++ και δεν μπορω να προχωρησω !!!! :cry: Αν μπορέι κάποιος ας βοηθήσει!!!!
η εκφώνηση είναι:

Να υλοποιηθεί μια κλάση Appointment η οποία θα αναπαριστά ραντεβού σε ένα
ιατρείο. Η κλάση αυτή αρκεί να περιέχει 3 μεταβλητές:
 Το όνομα του ασθενούς
 Την ημερομηνία και,
 Την ώρα του ραντεβού
Να υλοποιήσετε:
 Τον constructor του Appointment
 Τον copy constructor του Appointment
(σημειώστε ότι οι μεταβλητές της
κλάσης πρέπει να είναι private).
Επίσης να υλοποιήσετε την κλάση Schedule η οποία αναπαριστά το συνολικό
πρόγραμμα του Ιατρού. Η κλάση αυτή θα πρέπει να περιέχει το ονοματεπώνυμο του
Ιατρού και να αποτελείται από ένα πίνακα 10 θέσεων, ο οποίος θα περιέχει
αντικείμενα της κλάσης Appointment.
Να υλοποιήσετε:
 Τον default constructor Schedule( )
 Τον constructor Schedule(char* doctor_name)
 Τον copy constructor της Schedule (που θα αντιγράφει και τον πίνακα των
ραντεβού)
 Τις συναρτήσεις που μας επιτρέπουν να δημιουργήσουμε νέα ραντεβού,
καθώς και για να τα εμφανίσουμε όλα στην οθόνη
 όποια άλλη συνάρτηση τυχόν χρειαστεί
Να υλοποιήσετε τέλος μια εξωτερική friend συνάρτηση DisplaySchedule(Schedule a)
που θα εκτυπώνει τις λεπτομέρειες του προγράμματος των ραντεβού του Ιατρού.
Να φτιαχτεί μια συνάρτηση main η οποία να επιδεικνύει την λειτουργία όλων των
παραπάνω. Βάλτε διαγνωστικά μηνύματα (με cout) σε κάθε συνάρτηση και
καταγράψτε ποιοι constructors καλούνται κάθε φορά.
Απαντήστε και στις παρακάτω ερωτήσεις:
 Πότε καλείται ο copy constructor? Πως θα μπορέσουμε να αποφύγουμε την
κλήση του?
 Είναι απαραίτητος ο default constructor της Appointment και γιατί?
Δοκιμάστε να τον αφαιρέσετε από τον ορισμό της κλάσης.


Εχώ κολλήσει στο πως θα αποθηκεύω τα appointments στηνον πίνακα book..

Ο κωδικας που έχω γραψει μεχρι στιγμής είναι¨:




Κώδικας: Επιλογή όλων

#include <cstdlib>
#include <iostream>
#include <string.h>
#define SIZE 10
using namespace std;
class Appointment
&#123;
      private&#58;
         char *name;
         char* date;
         int hour;
      public&#58;
             
             Appointment&#40; &#41;
         &#123;
             cout<<"constructor"<<endl;
             name=new char&#91;1&#93;;
             strcpy&#40;name,"/0"&#41;;
             date=new char&#91;1&#93;;
             strcpy&#40;name,"/0"&#41;;
             hour=0;
         &#125;                  

         Appointment&#40;char *a,char* b,int c&#41;
         &#123;
             cout<<"constructor"<<endl;
             name=new char&#91;strlen&#40;a&#41;+1&#93;;
             strcpy&#40;name,a&#41;;
             date=new char&#91;strlen&#40;b&#41;+1&#93;;
             strcpy&#40;date,b&#41;;
             hour=c;
         &#125;                  

          ~Appointment&#40;&#41;
            &#123;
              cout <<"destructor"<<endl;            
              delete&#91;&#93; name;
              delete&#91;&#93;date;
             &#125;
            
          Appointment&#40;const Appointment &appointment_copy&#41;
           &#123;
             cout <<"Copying Appointment"<<appointment_copy.name <<endl;
             name=new char&#91;strlen&#40;appointment_copy.name&#41;+1&#93;;
             strcpy&#40;name,appointment_copy.name&#41;;
             date=new char&#91;strlen&#40;appointment_copy.date&#41;+1&#93;;
             strcpy&#40;date,appointment_copy.date&#41;;
             hour=appointment_copy.hour;
             &#125;              
  void Display&#40;&#41;
    &#123;
           cout <<"the details of the appointment are&#58;"<<endl;
           cout <<"The date is "<<date<<"The name is "<<name<<"The hour is "<<hour<<endl;
    &#125;
        
      char*  getDate&#40;&#41;
        &#123;
          return date;
          &#125;
         char* getName&#40;&#41;
        &#123;
          return name;
          &#125;
          int gethour&#40;&#41;
        &#123;
          return hour;
          &#125;
&#125;     ;


class Schedule
&#123;
Appointment book&#91;SIZE&#93;; //Edw trexei o default constructor tis Appointment
char* doctorName;
public&#58;
       Schedule&#40;&#41;
       &#123;
          cout <<"default constructor for Schedule"<<endl;
          doctorName=new char&#91;1&#93;;
          strcpy&#40;doctorName,"/0"&#41;;
          &#125;
      Schedule&#40;char* doctor_name&#41;
       &#123;
          cout <<"default constructor for Schedule"<<endl;
          doctorName=new char&#91;strlen&#40;doctor_name&#41;+1&#93;;
          strcpy&#40;doctorName,doctor_name&#41;;
          &#125;  
      Schedule&#40;const Schedule &Schedule_copy&#41;&#123;
                     cout<<"copy constructor for schedule"<<endl;
                     doctorName=new char&#91;strlen&#40;Schedule_copy.doctorName&#41;+1&#93;;
                     strcpy&#40;doctorName,Schedule_copy.doctorName&#41;;
                     for &#40;int i=1;i<sizeof&#40;book&#41;;i++&#41;
                       Appointment&#40; book&#91;i&#93;&#41;;
                       &#125; 
                     
     void  Display&#40;&#41;
     &#123;
           cout<<"the Schedule is "<<endl;
           cout <<endl;
           cout <<"doctors name&#58;"<<doctorName<<endl;
           //for&#40;int i=1;i<SIZE;i++&#41;
            //cout <<"The date is "<< book.getDate<< "The name is "<< book.getName<< "The hour is "<< book.getHour<<endl;
            
            &#125; 
            
                  
&#125;;
int main&#40; &#41;
&#123;
Schedule a;
Appointment a1&#40;"jim", "12/2/2010",18&#41;;
a1.Display&#40;&#41;;
Appointment a2&#40;"harry", "23/6/2010",21&#41;;
a2.Display&#40;&#41;;
Appointment a3&#40;"theo" , "30/12/2010",2010&#41;;
a3.Display&#40;&#41;;
//cout << "Before delete&#58; " << endl;
//cout << "After delete&#58; " << endl;
Schedule b;
a=b;
//cout << "And now the friend function&#58; " << endl;

system&#40;"pause"&#41;;
return 0;
&#125;
Όποιος μπορεί ας βοηθήσει!!!Σασ ευχαριστώ!!!

Erevis
Δημοσιεύσεις: 56
Εγγραφή: 12 Ιουν 2008 16:31
Τοποθεσία: Χαλάνδρι

Κλασεισ και πινακεσ αντικειμενων!!!!!

Δημοσίευση από Erevis » 26 Απρ 2010 02:17

Θα μπορούσες στο Schedule αντί για πίνακα από objects τύπου Appointment να έχεις έναν πίνακα από pointers se objects.

π.χ

Κώδικας: Επιλογή όλων

class Schedule
&#123;

private&#58;
    Appointment *appointments&#91;SIZE&#93;;
    char *doctorName;
    int currentIndex;
   
public&#58;
   Schedule&#40;const char *doctorName&#41;
   &#123;
        this->doctorName = new char&#91;strlen&#40;doctorName&#41; + 1&#93;;
        strncpy&#40;this->doctorName, doctorName, strlen&#40;doctorName&#41;&#41;;
        
        for&#40;int i = 0; i < SIZE; ++i&#41;
        &#123;
             appointments&#91;i&#93; = NULL;
        &#125;

        currentIndex = 0;
   &#125;

   ~Schedule&#40;&#41;
   &#123;
       if&#40;doctorName != NULL&#41;
       &#123;
             delete &#91;&#93;doctorName;
       &#125; 

        for&#40;int i = 0; i < SIZE; ++i&#41;
        &#123;
             if&#40;appointments&#91;i&#93; != NULL&#41;
             &#123;
                  delete appointments&#91;i&#93;;
             &#125;
        &#125;
   &#125;

   void addAppointment&#40;const char *name,const char *date, int hour&#41;
   &#123;
       if&#40;currentIndex >= SIZE&#41;
       &#123;
            std&#58;&#58;cout << "Doctor's " << doctorName << " schedule is full!\n";
       &#125;
       else
       &#123;
           appointments&#91;currentIndex&#93; = new Appointment&#40;name,date,hour&#41;;
           ++currentIndex;
       &#125;
   &#125;
&#125;
Αυτό είναι μια πρόταση, μπορείς να το κάνεις πολύ πιο εύκολα με STL αλλά δε ξέρω κατά πόσο το επιτρέπει ο καθηγητής σου. Πχ. το να κάνεις remove ένα συγκεκριμένο index στο
από πάνω παράδειγμα θέλει λίγη δουλειά. Όχι ότι είναι δύσκολο αλλά δε θέλω να σου στερήσω τη χαρά του να γράψεις εσύ τον κώδικα :P

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες