Προς το περιεχόμενο

Τι δεν κάνω σωστά ? ( C++)


likoyrgos

Προτεινόμενες αναρτήσεις

Καλημέρα!

Στον γίο ενός φίλου μου , του βάλανε στο Ιδ ΙΕΚ που φοιτά την παρακάτω άσκηση σε C++:

Δημιουργείστε μια κλάση με το όνομα Car.

Τα χαρακτηριστικά της κλάσης Car θα είναι private και είναι τα εξής:

  • marka (αλφαριθμητικό)
  • model (αλφαριθμητικό)
  • year (ακέραιος)

Στη συνέχεια, μέσα στη main(), δημιουργείστε δύο αντικείμενα της κλάσης Car:

  • το αντικείμενο carObj1, με χαρακτηριστικά mark=”Renault”, model=”Clio”, year=2004
  • το αντικείμενο carObj2, με χαρακτηριστικά mark=”BMW”, model=”X5”, year=1999

Τέλος, εκτυπώστε τα χαρακτηριστικά των δύο αντικειμένων στην οθόνη

Με τα λίγα που γνωρίζω σε C++ έδωσα την παρακάτω λύση :

#include <iostream>

using namespace std;

class Car {
    
    private:
        string marka;
        string model;
        int year;  
};

int main()
{
  
    Car carObj1;
    carObj1.marka="Renault";
    carObj1.model="Clio";
    carObj1.year=2004;
    
    Car carObj2;
    carObj2.marka="BMW";
    carObj2.model="X5";
    carObj2.year=1999;
    
    cout<<carObj1.marka<<"\n";
    cout<<carObj1.model<<"\n";
    cout<<carObj1.year<<"\n";
    
    cout<<carObj2.marka<<"\n";
    cout<<carObj2.model<<"\n";
    cout<<carObj2.year<<"\n";
    return 0;
}

Η οποία δουλεύει αν τα χαρακτηριστικά είναι public. Διαβάζοντας στο internet είδα οτι αν τα χαρακτηριστικά είναι private είναι δυνατόν να χρησιμοποιηθούν μόνο μέσα απο την ίδια την κλάση  (αν το εκφράζω σωστά). Δοκίμασα να βάλω τη δημιουργία αντεικειμένων και τις εκτυπώσεις μέσα στην κλάση αλλά έβγαζε μήνυμα λάθους. Υπάρχει καμία ιδέα για τη λύση του προβλήματος?

Ευχαριστώ ! (sorry για το μακροσκελές κείμενο)

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστώ πολύ για την βοήθεια! Βελτίωσα τον κώδικα σύμφωνα με αυτά που έλεγε η σελίδα ώς εξής:

#include <iostream>

using namespace std;

class Car {
    
    private:
    
    
        string marka;
        string model;
        int year;
        
    public:
    // 1
    void setmarka(string ma){
        marka=ma;
    }
    
    void setmodel(string mo){
        model=mo;
    }
    void setyear(int y){
        year=y;
    }
    // 2
    string getmarka(){
        return marka;
    }
    string getmodel(){
        return model;
    }
    int getyear(){
        return year;
    }
    
};

int main()
{
   Car carObj1;
    carObj1.setmarka=("Renault");
    carObj1.setmodel=("Clio");
    carObj1.setyear=(2004);
    
    Car carObj2;
    carObj2.setmarka=("BMW");
    carObj2.setmodel=("X5");
    carObj2.setyear=(1999);
    
    cout<<carObj1.getmarka();
    cout<<carObj1.getmodel();
    cout<<carObj1.getyear();
    
    cout<<carObj2.getmarka();
    cout<<carObj2.getmodel();
    cout<<carObj2.getyear();
      
         
    return 0;
}

 

Βγάζει στο try it your self το εξής: (από κάποια βλακεία μου προφανώς !)

image.png.8b050d3107fcbbf42d1b14241f14ae01.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

18 λεπτά πριν, likoyrgos είπε

Ευχαριστώ πολύ για την βοήθεια! Βελτίωσα τον κώδικα σύμφωνα με αυτά που έλεγε η σελίδα ώς εξής:

#include <iostream>

using namespace std;

class Car {
    
    private:
    
    
        string marka;
        string model;
        int year;
        
    public:
    // 1
    void setmarka(string ma){
        marka=ma;
    }
    
    void setmodel(string mo){
        model=mo;
    }
    void setyear(int y){
        year=y;
    }
    // 2
    string getmarka(){
        return marka;
    }
    string getmodel(){
        return model;
    }
    int getyear(){
        return year;
    }
    
};

int main()
{
   Car carObj1;
    carObj1.setmarka=("Renault");
    carObj1.setmodel=("Clio");
    carObj1.setyear=(2004);
    
    Car carObj2;
    carObj2.setmarka=("BMW");
    carObj2.setmodel=("X5");
    carObj2.setyear=(1999);
    
    cout<<carObj1.getmarka();
    cout<<carObj1.getmodel();
    cout<<carObj1.getyear();
    
    cout<<carObj2.getmarka();
    cout<<carObj2.getmodel();
    cout<<carObj2.getyear();
      
         
    return 0;
}

 

Βγάζει στο try it your self το εξής: (από κάποια βλακεία μου προφανώς !)

image.png.8b050d3107fcbbf42d1b14241f14ae01.png

Βγάλε το ίσον πριν από τον setter

Δλδ αντί για

 carObj1.setmarka=("Renault");

Κάντο

carObj1.setmarka("Renault");

Επίσης πες στον φίλο σου ότι ο υιός πρέπει να τα μάθει μόνος του αλλιώς τσάμπα πληρώνει το ΙΕΚ

  • Like 3
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1 ώρα πριν, tsofras είπε

Επίσης πες στον φίλο σου ότι ο υιός πρέπει να τα μάθει μόνος του αλλιώς τσάμπα πληρώνει το ΙΕΚ

Όλα τα παιδιά το ίδιο κάνουν... Δυστυχώς.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

20 ώρες πριν, tsofras είπε

Επίσης πες στον φίλο σου ότι ο υιός πρέπει να τα μάθει μόνος του αλλιώς τσάμπα πληρώνει το ΙΕΚ

Εκτός αν είναι δημόσιο που εκεί είναι πανηγύρι. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Να σας ευχαριστήσω όλους και ιδιαίτερα τον Lanike71 και τον tsofras .

Τελικά την κατάφερα με την βοήθειά σας αν και δεν εχω ασχοληθεί με C++ παρά ελάχιστα (τα πολύ βασικά). Ασχολούμαι όμως ερασιτεχνικά με Python οπότε έχω μια εμπειρία γενική για κλάσεις.

Όσον αφορά τα άλλα ερωτήματα που θέσατε, απ' οτι μου είπε ο πατέρας, το επίπεδο είναι πολύ χαμηλό με σχεδόν καθόλου διάβασμα. Αυτό φαντάζομαι ισχύει παντού σε Ιδ και Δημ ΙΕΚ. Βασικά πιστεύω είναι να σου αρέσει αυτό που κάνεις. Αμα δεν τότε άστα...

Η συγκεκριμένη μάλλον είναι τμήμα εργασίας πριν απο τις τελικές εξετάσεις που μετράει στον τελικό βαθμό. (ευτυχώς δεν με αγγάρεψαν και για τα υπόλοιπα !).

 

  • Like 1
  • Thanks 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...