[C++] Esercizio numero pari
Ciao a tutti!
Devo svolgere il seguente esercizio ma non mi è chiara una cosa.
Testo:
Definire una classe che gestisca un attributo (privato) intero utilizzando:
1) Un metodo privato che produce 1 se l'attributo è pari e 0 altrimenti
2) Un metodo pubblico che, sfruttando il precedente metodo, visualizza l'attributo se pari.
Non ho capito come fare per risolvere il punto 2. Come è possibile creare un metodo pubblico che sfrutta uno privato per visualizzare l'attributo?
Io ho scritto il codice utilizzando la classe privata:
Però non capisco come implementare la classe pubblica!
Grazie mile
Ciaoo
Devo svolgere il seguente esercizio ma non mi è chiara una cosa.
Testo:
Definire una classe che gestisca un attributo (privato) intero utilizzando:
1) Un metodo privato che produce 1 se l'attributo è pari e 0 altrimenti
2) Un metodo pubblico che, sfruttando il precedente metodo, visualizza l'attributo se pari.
Non ho capito come fare per risolvere il punto 2. Come è possibile creare un metodo pubblico che sfrutta uno privato per visualizzare l'attributo?
Io ho scritto il codice utilizzando la classe privata:
#include <iostream> using namespace std; class Numero { public: Numero(); int num; int pari(int intero); }; int Numero::pari(int intero) { if (intero%2==0) return 1; else return 0; } Numero::Numero() { num=0; } int main () { Numero prova; int num; int n; cout << "Inserisci un numero: "; cin >> num; n=prova.pari (num); cout << n << endl; return 0; }
Però non capisco come implementare la classe pubblica!
Grazie mile
Ciaoo

Risposte
Immagino che tu debba usare la funzione privata per verificare se l'attributo è pari. In ogni caso, in questo momento tutta la classe è pubblica. Andrebbe riscritta in modo da esserci una parte privata e dovrebbe anche esserci un modo per settare l'attributo num (che deve essere privato in base al test dell'esercizio).
Ciao!
Grazie per la risposta, ho riscritto il codice in questo modo e ci sono riuscito!
Grazie
Ciaoo!
Grazie per la risposta, ho riscritto il codice in questo modo e ci sono riuscito!
#include <iostream> using namespace std; class Numero { private: int num; private: int prendi_num () { return num; } private: int funz_priv () { if (prendi_num()%2==0) return 1; else return 0; } public: void assegna_num (int x) { num = x; } public: int funz_publ () { if (funz_priv()) return 1; else return 0; } }; int main () { Numero intero; int valore; int ris; cout << "Inserisci un numero: "; cin >> valore; intero.assegna_num(valore); ris=intero.funz_publ (); cout << ris << endl; return 0; }
Grazie
Ciaoo!
La funzione pubblica non deve restituire 0 o 1, ma visualizzare l'attributo se questo è pari. Qualcosa tipo:
if (funz_priv()) { cout << prendi_num() << endl; }