Problema di inserimento CASE in switch

di il
25 risposte

25 Risposte - Pagina 2

  • Re: Problema di inserimento CASE in switch

    Alexv ha scritto:


    Posta il codice, anche per solo un mese.
    #include<iostream>
     using namespace std;
     int main(){
        float somma=0.0;
    	 float media=0.0;
     	char  mese;
     	float temp[31];
    
    	cout<<"Di quale mese vuoi inserire le temperature? ";
    	cin>>mese;
    	
    	 switch(mese){
           case 1:
             for (int i=0;i<31;i++){
    	       cout<<" inserisci temperatura: "<<i+1<<endl;
    	         cin>>temp[i];
                    somma=somma+temp[i];
        	           media=somma/31;	}	
    				      cout<<"La media e': "<<media<<endl;
           break;
    Questo è il codice base senza if o altre prove. Ma funzionante.


    #include<iostream>
     using namespace std;
     int main(){
        float somma=0.0;
    	 float media=0.0;
     	char  mese;
     	float temp[31];
    
    	cout<<"Di quale mese vuoi inserire le temperature? ";
    	cin>>mese;
    	if ((mese==Gennaio)||(mese==gennaio)){
    	mese=1;
    	}
    	 switch(mese){
           case 1:
             for (int i=0;i<31;i++){
    	       cout<<" inserisci temperatura: "<<i+1<<endl;
    	         cin>>temp[i];
                    somma=somma+temp[i];
        	           media=somma/31;	}	
    				      cout<<"La media e': "<<media<<endl;
           break;
    Questa è la prova con if.
    Ho anche provato ad inserire gli apici quando scrivo gennaio ma nulla, ho cambiato la funzione a mese ma nulla.
  • Re: Problema di inserimento CASE in switch

    Te lo avevo già detto in una risposta che non devi usare un char ma una string dato che "Gennaio" non è un solo carattere

    Quindi

    #include <string>

    string mese;

    if(mese == "Gennaio")
  • Re: Problema di inserimento CASE in switch

    oregon ha scritto:


    Te lo avevo già detto in una risposta che non devi usare un char ma una string dato che "Gennaio" non è un solo carattere

    Quindi

    #include <string>

    string mese;

    if(mese == "Gennaio")
    sisi ho già provato anche questo ma nada
  • Re: Problema di inserimento CASE in switch

    No non lo hai provato
  • Re: Problema di inserimento CASE in switch

    oregon ha scritto:


    Ma che vuol dire "non va"

    Se mese è una stringa, cosa non va in

    if(mese == "Gennaio")
    [Warning] character constant too long for its type
    ecco cosa mi riporta, riguardo la stringa dove è inserito l'if
  • Re: Problema di inserimento CASE in switch

    Ma hai lasciato

    char mese;

    Leggi bene quello che ti ho scritto
  • Re: Problema di inserimento CASE in switch

    Se dichiari la stringa come char, devi anche dargli una lunghezza massima, tipo
    char mese[20]
    oltre a dover usare la funzione strcmp per il confronto fra stringhe. Per evitare rogne di questo tipo, dichiara la variabile di tipo string come ha detto oregon.
  • Re: Problema di inserimento CASE in switch

    Se usi C++ allora usa solo la string
  • Re: Problema di inserimento CASE in switch

    Alexv ha scritto:


    Se dichiari la stringa come char, devi anche dargli una lunghezza massima, tipo
    char mese[20]
    oltre a dover usare la funzione strcmp per il confronto fra stringhe. Per evitare rogne di questo tipo, dichiara la variabile di tipo string come ha detto oregon.
    Non ho ancora studiato strcmp...Comunque dopo aver messo string ho comunque un errore
    #include<iostream>
     using namespace std;
     int main(){
        float somma=0.0;
    	 float media=0.0;
     	string  mese;
     	float temp[31];
    
    	cout<<"Di quale mese vuoi inserire le temperature? ";
    	cin>>mese;
    	if(mese=="Gennaio")
    	 switch('mese'){
           case 1:
             for (int i=0;i<31;i++){
    	       cout<<" inserisci temperatura: "<<i+1<<endl;
    	         cin>>temp[i];
                    somma=somma+temp[i];
        	           media=somma/31;	}	
    				      cout<<"La media e': "<<media<<endl;
           break;
    [Warning] multi-character character constant [-Wmultichar]-
  • Re: Problema di inserimento CASE in switch

    Non puoi fare switch su una stringa.
    Dichiara una variabile intera per il numero dei giorni. Nell'if, a seconda del mese, assegni a quella variabile 30, 31, 28, o 29.
  • Re: Problema di inserimento CASE in switch

    Certo che sei un po' duro...

    NON si usa la switch case con le stringhe! Ti è stato detto più volte. Si usa SOLO la if !
Devi accedere o registrarti per scrivere nel forum
25 risposte