freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

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


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [2 Μηνύματα]      Bookmarks Tags: πίνακες Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
NTINAaa


Μέλος από: 16 Μαρ 2009
Μηνύματα: 21

View users profile
ΜήνυμαΣτις: 25 Απρ 2010 21:00    Θέμα: Κλασεισ και πινακεσ αντικειμενων!!!!! Απάντηση με παράθεση  Mark this post and the followings unread

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

Να υλοποιηθεί μια κλάση 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
{
      private:
         char *name;
         char* date;
         int hour;
      public:
             
             Appointment( )
         {
             cout<<"constructor"<<endl;
             name=new char[1];
             strcpy(name,"/0");
             date=new char[1];
             strcpy(name,"/0");
             hour=0;
         }                 

         Appointment(char *a,char* b,int c)
         {
             cout<<"constructor"<<endl;
             name=new char[strlen(a)+1];
             strcpy(name,a);
             date=new char[strlen(b)+1];
             strcpy(date,b);
             hour=c;
         }                 

          ~Appointment()
            {
              cout <<"destructor"<<endl;           
              delete[] name;
              delete[]date;
             }
           
          Appointment(const Appointment &appointment_copy)
           {
             cout <<"Copying Appointment"<<appointment_copy.name <<endl;
             name=new char[strlen(appointment_copy.name)+1];
             strcpy(name,appointment_copy.name);
             date=new char[strlen(appointment_copy.date)+1];
             strcpy(date,appointment_copy.date);
             hour=appointment_copy.hour;
             }             
  void Display()
    {
           cout <<"the details of the appointment are:"<<endl;
           cout <<"The date is "<<date<<"The name is "<<name<<"The hour is "<<hour<<endl;
    }
       
      char*  getDate()
        {
          return date;
          }
         char* getName()
        {
          return name;
          }
          int gethour()
        {
          return hour;
          }
}     ;


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

system("pause");
return 0;
}


Όποιος μπορεί ας βοηθήσει!!!Σασ ευχαριστώ!!!
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 26 Απρ 2010 01:17    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

π.χ

κώδικας:

class Schedule
{

private:
    Appointment *appointments[SIZE];
    char *doctorName;
    int currentIndex;
   
public:
   Schedule(const char *doctorName)
   {
        this->doctorName = new char[strlen(doctorName) + 1];
        strncpy(this->doctorName, doctorName, strlen(doctorName));
       
        for(int i = 0; i < SIZE; ++i)
        {
             appointments[i] = NULL;
        }

        currentIndex = 0;
   }

   ~Schedule()
   {
       if(doctorName != NULL)
       {
             delete []doctorName;
       }

        for(int i = 0; i < SIZE; ++i)
        {
             if(appointments[i] != NULL)
             {
                  delete appointments[i];
             }
        }
   }

   void addAppointment(const char *name,const char *date, int hour)
   {
       if(currentIndex >= SIZE)
       {
            std::cout << "Doctor's " << doctorName << " schedule is full!\n";
       }
       else
       {
           appointments[currentIndex] = new Appointment(name,date,hour);
           ++currentIndex;
       }
   }
}


Αυτό είναι μια πρόταση, μπορείς να το κάνεις πολύ πιο εύκολα με STL αλλά δε ξέρω κατά πόσο το επιτρέπει ο καθηγητής σου. Πχ. το να κάνεις remove ένα συγκεκριμένο index στο
από πάνω παράδειγμα θέλει λίγη δουλειά. Όχι ότι είναι δύσκολο αλλά δε θέλω να σου στερήσω τη χαρά του να γράψεις εσύ τον κώδικα
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [2 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 04 Δεκ 2016 22:21 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos