[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; }