Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    153

    vettore di oggetti[c++]

    ciao a tutti,
    avevo un problema con questo esercizio:

    codice:
    bisogna simulare il funzionamento di 6 condizionatori.essi sn regolabili su 8 livelli. 
    a ogni aumento di livello aumenta la quantità di energia spesa
    l'energia a livello 8  deve essere 100.
    le altre le decidi tu basta ke l'aumento sia graduale:
    es
    1-10
    2-50
    3-70
    ecc...nn indietro insomma
    
    devi poter vedere lo stato di tutti i condizionatori quindi a che livello sono.
    inoltre devi poter portare tutti i condizionatori simultaneamente a livello 2
    */
    
    
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    	class condizionatori{
    		  int livello[7];
    		  public:
     		        condizionatori(){
    		  		    
                        livello[0]=0;  
    		  		    livello[1]=10;
    		  		    livello[2]=20;
    		  		    livello[3]=35;
    		  		    livello[4]=45;
    		  		    livello[5]=55;
    		  		    livello[6]=65; 
    		  		    livello[7]=70;
    		  		    
    				           }
                               	  
    		  		 int livelloa()
                       {
    				 	 int risp;
    				 	 cout<<"che potenza vuoi dare? [0-7]  ";
    				 	 cin>>risp;
    				 	 return(risp);
                        }
    					 
    	            void dimmilivello(int j)
                    {
    					 cout<<"Il condizionatore e' a livello "<<livello[j]<<"\n";
    			    }
    				
                    void aumentalivello(int a,int j)
                    {
    					 	livello[j]=a;
    				}
    				
                    void diminuiscilivello(int a,int j)
                    {
    					    livello[j]=a;
    				}
    				
                    int poscond1(int j)
                    {
    					return(livello[j]);
    				}
                    		
    	            };			 
    int main()
    {
     	condizionatori c1;
     	
         int risp,livello,risp1,i;
     	risp=7;
     	
     	while (risp>0)
     	{	  
     	cout<<"\ncosa vuoi fare?";
     	cout<<endl;
     	cout<<"1 per aumentare"<<endl;
     	cout<<"2 per diminuire"<<endl;
     	cout<<"3 per vedere la posizione degli ascensori"<<endl; 
     	cout<<"0 per uscire\n";
     	cin>>risp;
     	
        
     	switch (risp)
     	{
    	 	   case 1:{
                    cout<<"Che livello vuoi andare?\n";
     	            cin>>i;
                    if (i<8)
                    {  
                    risp1=c1.poscond1( i); 	
    		   		livello=c1.livelloa();
    		   		if (risp1<livello && livello<7)
    		   		c1.aumentalivello(livello,i);
    		   		else
    		   		cout<<"Mi dispiace ma allora deve diminuire il livello\n";
                    }
                    else
                    cout<<"non esiste il condizionatore numero";
                    break;
    				}
    		   
               case 2:{
                     cout<<"Che ascensore vuoi muovere?\n";
     	             cin>>i; 
                      if (i<8)
                      {	
     	             risp1=c1.poscond1( i);
    		   		 livello=c1.livelloa();
    		   		 if(risp1>livello)
    		   		 c1.diminuiscilivello(livello,i);
    		   		 else
    		   		 cout<<"Mi dispiace ma allora deve aumentare\n";
                     }
                     else
                     cout<<"ERRORE";
    		   		 break;
    				 }
    		   case 3:{
                    
                    c1.dimmilivello(i);
                    break;
                    }	 
    		   case 0:{	 
    		   		system("PAUSE");
    				}
        }
        }
        return EXIT_SUCCESS;
    }
    Penso che io ho sbagliato proprio la logica del mio esercizio. qualcuno mi potrebbe aiutare a risolverlo?? non saprei poi come fare per alzare tutti i condizionatori a livello 2. grazie.

  2. #2
    allora.... non sono un gran programmatore...ma così a occhio mi sembra un po' lunghetto il codice per quello che deve fare... =)

    un errore che hai commesso è quello di iniziare la numerazione dell' array livello da 1, hai dichiarato la array livello[7] quando inizializzi i vari elementi devi partire da 0 e arrivare a 6, cioè

    livello[0] = 10;
    ...
    livello[6]=100;

    ricordati che se dichiari un vettore es[5], gli elementi sono es[0], es[1], es[2], es[3], es[4] =)


    in ogni caso io farei una cosa tipo

    #include<iostream>
    #include<stdio>

    using namespace std

    int livello[7] = {10,25,40,55,70,85,100};

    class cond
    {
    private:
    int stato;
    pubilc:
    void SetLevel(int);
    int GetLevel();
    } condiz[6]

    void cond::SetLevel(int)
    {
    stato = int;
    }

    int cond::GetLevel()
    {
    return stato;
    }

    void SettAllTo2()
    {
    for (int i = 0; i < 6; i++)
    {
    condiz[i].SetLevel(2);
    }
    }

    void CambiaLivello()
    {
    cout << "Di che condizionatore vuoi cambiare livello? "
    int cond;
    cin << cond;
    cout << "A che livello lo vuoi settare? "
    int lvl;
    cin << lvl;

    condiz[i].SetLevel(lvl);
    }


    void VisualizzaStato()
    {
    for (int i = 0; i < 6 ; i++)
    {
    cout << condiz[i].GetLevel() << " " << livello[condiz[i].GetLevel()] << endl;
    }
    }

    int main()
    {
    while(1)
    {
    cout << "1 per cambiare il livello di un condizionatore" << endl;
    cout << "2 per vedere lo stato dei condizionatori" << endl;
    cout << "3 per settare tutti i condizionatori a 2" << endl;
    cout << "4 per uscire" << endl;
    int risp;
    cin << risp;

    if (risp == 1) CambiaLivello();
    if (risp == 2) VisualizzaStato();
    if (risp == 3) SettAllTo2();
    if (risp == 4) return 0;
    }
    }


    questo dovrebbe funzionare ma non l'ho provato.... =)

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.