Problema di inserimento CASE in switch

di Anonimizzato31800 il
25 risposte

25 Risposte - Pagina 2

  • 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.
  • 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")
  • 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
  • No non lo hai provato
  • 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
  • Ma hai lasciato

    char mese;

    Leggi bene quello che ti ho 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.
  • Se usi C++ allora usa solo la string
  • 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]-
  • 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.
  • 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