edutecnica

Esercizio 10       

Creare una classe Televisore sapendo che lo stato di un televisore è caratterizzato dal fatto di essere acceso o spento, dal volume (che è compreso tra zero e 10), dal canale (che è compreso tra 0 e 99) e dal fatto che sia in modalità silenzioso o meno.
Creare un opportuno costruttore e i seguenti metodi:
● PulsanteAccensione():ad ogni attivazione, setta ed unsetta il valore del pulsante di accensione
● ImpostaCanale(): se la tv è accesa, setta un numero di canale prestabilito passato in input
● CanaleSuccessivo():se la tv è accesa, passa al canale successivo, se possibile
● CanalePrecedente():se la tv è accesa, passa al canale precedente, se possibile
● AumentaVolume():se la tv è accesa, aumenta di 1 il volume, se possibile
● AbbassaVolume():se la tv è accesa, diminuisce di 1 il volume, se possibile
● PulsanteSilenzioso():se la tv è accesa, setta ed unsetta il valore del pulsante Mute
● PrintTv():se la tv è accesa, visualizza lo stato della tv (il valore di tutte le sue proprietà in quell'istante)

Testare la classe con un opportuno main che preveda un menù di scelta utente (vedi schema) attraverso il quale, attivando tutti i suoi metodi, si simuli un telecomando.
** 1 TV ON/OFF
** 2 Imposta canale
** 3 Canale SU
** 4 Canale GIU'
** 5 Volume SU
** 6 Volume GIU'
** 7 Mute ON/OFF
** 8 Stampa TV
** 0 ----> EXIT
Scelta:


#include <stdio.h>
class Televisore{
private:
bool stato;
int volume;
int canale;
bool mod;


public:
Televisore(){//costruttore vuoto, si riconosce perchè si chiama uguale alla classe
stato=false;
volume=0;
canale=1;
}
Televisore(int c,int v){//Costruttore con due parametri in ingresso (chiesto dal testo)
stato=true;
if(c>0 && c<=99) canale=c;
else printf("Non puoi creare una televisione con un canale sconosciuto");
if(volume>=0 && volume<=10) volume=v;
else {
  printf("Non puoi creare una televisione con un volume non possibile");
  volume=0;
}
mod=false;
}
int getCanale(){return canale;}
int getVolume(){return volume;}
bool getMod(){return mod;}
void ImpostaCanale(int c){
if (stato)
if (c<99) canale=c;
else printf("Il canale non esiste");
else printf("La TV è spenta");
}
//Accende o spegne la TV
void PulsanteAccesione(){
if(stato) {
  stato=false;
  printf("Ora la TV è spenta");
}else{
  stato=true;
  printf("Ora la TV è accesa");
}
}
//se la tv è accesa passa al canale successivo se possibile
void CanaleSuccessivo(){
if(stato && canale<9) canale++;
}
//se la tv è accesa passa al canale successivo se possibile
void CanalePrecedente(){
if(stato && canale>0) canale--;
}
//se il volume è < di 99 aumenta volume
void AumentaVolume(){
if(stato && volume<99) volume++;
else printf("Il volume è al massimo o la tv è spenta");
}
void DiminuisciVolume(){
if(stato && volume>0) volume--;
else printf("Il volume è al minimo o la tv è spenta");
}
//Muta o smuta la TV
void PulsanteSilenzioso(){
if(mod) mod=false;
else mod=true;
}
//se la TV è accesa visualizza lo stato della tv e le sue proprietà
void StampaTv(){
if(stato) {
  printf("La TV è accesa, quindi posso stampare informazioni");
  //Se lo stato della TV è acceso
  if(mod)printf("Stato: acceso\nCanale: %d\nVolume: %d\nSilenzioso: acceso\n",canale,volume);
  else printf("Stato: acceso\nCanale: %d\nVolume: %d\nSilenzioso: spento\n",canale,volume);
}
}
};
//ADESSO CHE HO LA CLASSE LA POSSO USARE
main(){
int scelta,ca;
Televisore miaTV;
//Creo già l'oggetto televisione
miaTV=Televisore();

//Inizializzo il pannello come in figura
printf("************Telecomando TV****************\n");
printf("** 1 TV On/Off\n");
printf("** 2 Imposta Canale\n");
printf("** 3 Canale SU\n");
printf("** 4 Canale GIU''\n");
printf("** 5 Volume SU\n");
printf("** 4 Volume GIU''\n");
printf("** 7 Mute On/Off\n");
printf("** 8 Stampa Info TV\n");
printf("** 0 ----> EXIT\n");
printf("******************************************\n");
printf("** Scelta: ");
scanf("%d",&scelta);

while(scelta<0 || scelta>8){
  printf("Scelta non valida. Riprova!");
  printf("** Scelta: ");
  scanf("%d",&scelta);
}

while (scelta>=0 && scelta<=8){
if (scelta !=0){
switch (scelta) {
  case 1: miaTV.PulsanteAccesione(); break;
  case 2: printf("Che canale vuoi?(da 1 a 99)\n"); scanf("%d",&ca);miaTV.ImpostaCanale(ca);break;
  case 3: miaTV.CanaleSuccessivo(); break;
  case 4: miaTV.CanalePrecedente(); break;
  case 5: miaTV.AumentaVolume(); break;
  case 6: miaTV.DiminuisciVolume(); break;
  case 7: miaTV.PulsanteSilenzioso(); break;
  case 8: printf("Sono entrato qui!");
  miaTV.StampaTv(); break;
  default: printf("Scelta non valida. Riprova!");
printf("** Scelta: ");
scanf("%d",&scelta);
break;
}
printf("** Scelta: ");
scanf("%d",&scelta);
}else{
printf("BYE BYE");
scelta=-1;
}
}
}