Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: C++ Help classe

  1. #1

    C++ Help classe

    Salve sto preparando l'esame di fondamenti di informatica, mi serviva una mano con un esercizio:

    Devo implementare la seguente classe:

    class pemployee
    {public:
    pemployee();
    pemployee(string employee_name, double initial_salary);
    void set_salary(double new_salary);
    double get_salary()const;
    string get_name()const;

    private:

    person person_data;
    double salary;


    };

    dove il dato person è ben definito e la classe person funge alla grande:

    class person
    {public:
    person();
    person(string pname, int page);
    void get_name() const;

    void get_age()const;

    private:

    string name;
    int age;




    };



    La mia domanda è:
    nel costruttore, come devo inizializzare il dato person ??
    che significa che la classe pemployee riceve un dato person??

    la mia soluzione ovviamente sbagliata è questa:

    pemployee:employee(string employee_name, double initial_salary)
    {



    int età;

    person_data(employee_name,età); //??
    salary=initial_salary;

    }

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Se non hai necessità di cambiare il nome alla persona puoi semplicemente fare:
    codice:
    pemployee::pemployee(string employee_name, double initial_salary) {
    
    int età = 3000;
    person_data = person(employee_name,età); 
    salary=initial_salary;
    
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    cacchio grazie!!

  4. #4
    Mi serve un altro favore:


    Come faccio nel main ad automatizzare la costruzione n persone??
    cioè, io leggo n, n nomi, n età da standard input, poi come faccio per costruire n oggetti persona?


    si puo usare il costruttore o devo usare una funzione?


    grazie mille

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Devi usare il costruttore.
    codice:
    vector <person> persone.
    for ( ... ) {
        // acquisizione dati.
        persone.push_back(person(nome,eta));
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  6. #6
    è la stessa cosa con l'array??

    e tu con push_back() intendi una funzione della classe vector??


    non c'è una soluzione senza funzioni ausiliarie?

  7. #7
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Il principio è lo stesso. Il container usato è solo un dettaglio.
    non c'è una soluzione senza funzioni ausiliarie?
    Senza sapere a priori il numero di elementi da inserire, no.
    Lo stesso vale per un C array.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    @Johnny_Firpo: quando posti del codice, cerca di utilizzare i tag CODE, come indicato nel regolamento di quest'area al punto 6.

    PS: complimenti per il nick


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    chiedo scusa!!

    volevo dire che ho trovato una soluzione alla mia domanda.

    è possibile leggere automaticamente degli oggetti da standard input, vi posto l'esempio.
    non si sa mai, dovrebbe servire...

    codice:
    
    
    #include<iostream>
    #include<cstdlib>
    #include<string>
    
    using namespace std;
    
    int N;
    
    class nazione
    {
    public:
    
            nazione();
            nazione(string n,int sup, int pop, int dens);
            void most_sup(nazione cont[N]);
            void most_pop(nazione cont[N]);
            void most_dens(nazione cont[N]);
    private:
    
    string nome;
    int superficie;
    int popolazione;
    int densita;
    };
    
    nazione::nazione()
    {
    
    nome="";
    superficie=0;
    popolazione=0;
    densita=0;
    
    
    }
    
    nazione::nazione(string n,int sup, int pop, int dens)
    {
    nome=n;
    superficie=sup;
    popolazione=pop;
    densita=dens;
    
    }
    
    /*
    Una possibile soluzione, è passargli una sequenza di nazioni, e farle analizzare
    
    */
    void nazione::most_sup(nazione cont[])
    {
    int i;
    nazione big;
    big=cont[0];
    
    for(i=0;i<N;i++)
    {
    
    if(cont[i].superficie > big.superficie)
    big=cont[i];
    
    }
    
    cout<<"La nazione più estesa è :"<<big.nome;
    
    }
    
    
    void nazione::most_pop(nazione cont[])
    {
    
    int i;
    nazione big;
    big=cont[0];
    
    for(i=0;i<N;i++)
    {
    
    if(cont[i].popolazione > big.popolazione)
    big=cont[i];
    
    }
    
    cout<<"La nazione più popolosa è:"<<big.nome;
    
    }
    
    
    void nazione::most_dens(nazione cont[])  // N non va rimesso nella definizione della funzione
    {
    
    int i;
    nazione big;
    big=cont[0];
    
    for(i=0;i<N;i++)
    {
    
    if(cont[i].densita > big.densita)
    big=cont[i];
    
    }
    
    cout<<"La nazione più densamente abitata è :"<<big.nome;
    }
    
    
    
    
    int main()
    {
    cout<<"inserisci quante nazioni su cui fare il calcolo : "<<'\n';
    cin>>N;
    nazione c[N];
    string n;
    int s,p,d;
    
    for(int i=0; i<N; i++)
    {
    cout<<"inserisci nome : "<<'\n';
    cin>>n;
    cout<<"inserisci superficie, popolazione, densità di "<<n<<'\n';
    cin>>s;
    cin>>p;
    cin>>d;
    c[i]=nazione(n,s,p,d);
    
    }
    
    nazione i;
    i.most_sup(c);
    i.most_pop(c);
    i.most_dens(c);
    
    }
    dovrebbe essere la stessa cosa per l'esempio di sopra.

    grazie a tutti per la disponibilità,

    mi rifarò vivo, perchè la settimana prossima ho l'esame

  10. #10
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    in c e c++ non si possono dichiarare array di dimensioni non conosciute a quel modo.. usa la malloc o la new

    attento che ci sono altri errori nel codice

    questo compila:

    codice:
    #include<iostream>
    #include<cstdlib>
    #include<string>
    
    using namespace std;
    
    int N;
    
    class nazione
    {
    public:
    
            nazione();
            nazione(string n,int sup, int pop, int dens);
            void most_sup(nazione cont[]);
            void most_pop(nazione cont[]);
            void most_dens(nazione cont[]);
    private:
    
    string nome;
    int superficie;
    int popolazione;
    int densita;
    };
    
    nazione::nazione()
    {
    
    nome="";
    superficie=0;
    popolazione=0;
    densita=0;
    
    
    }
    
    nazione::nazione(string n,int sup, int pop, int dens)
    {
    nome=n;
    superficie=sup;
    popolazione=pop;
    densita=dens;
    
    }
    
    /*
    Una possibile soluzione, è passargli una sequenza di nazioni, e farle analizzare
    
    */
    void nazione::most_sup(nazione cont[])
    {
    int i;
    nazione big;
    big=cont[0];
    
    for(i=0;i<N;i++)
    {
    
    if(cont[i].superficie > big.superficie)
    big=cont[i];
    
    }
    
    cout<<"La nazione più estesa è :"<<big.nome;
    
    }
    
    
    void nazione::most_pop(nazione cont[])
    {
    
    int i;
    nazione big;
    big=cont[0];
    
    for(i=0;i<N;i++)
    {
    
    if(cont[i].popolazione > big.popolazione)
    big=cont[i];
    
    }
    
    cout<<"La nazione più popolosa è:"<<big.nome;
    
    }
    
    
    void nazione::most_dens(nazione cont[])  // N non va rimesso nella definizione della funzione
    {
    
    int i;
    nazione big;
    big=cont[0];
    
    for(i=0;i<N;i++)
    {
    
    if(cont[i].densita > big.densita)
    big=cont[i];
    
    }
    
    cout<<"La nazione più densamente abitata è :"<<big.nome;
    }
    
    
    
    
    int main()
    {
    cout<<"inserisci quante nazioni su cui fare il calcolo : "<<'\n';
    cin>>N;
    nazione* c = (nazione*)malloc(sizeof(nazione)*N);
    string n;
    int s,p,d;
    
    for(int i=0; i<N; i++)
    {
    cout<<"inserisci nome : "<<'\n';
    cin>>n;
    cout<<"inserisci superficie, popolazione, densità di "<<n<<'\n';
    cin>>s;
    cin>>p;
    cin>>d;
    c[i]=nazione(n,s,p,d);
    
    }
    
    nazione i;
    i.most_sup(c);
    i.most_pop(c);
    i.most_dens(c);
    
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.