Overflow e multi-character [c++]

di il
1 risposte

Overflow e multi-character [c++]

Premetto che sono ancora un principiante, devo realizzare un convertitore per compito per casa.
quando vado a compilare il programma mi compaiono diversi errori. vi posto il codice parziale che ho fatto fino adesso. (so già che gli ultimi mi compaiono perché non ho ancora completato il programma)


#include <iostream>
#include <cstdlib>
#include <string.h>
#include <windows.h>
#include <stdlib.h>

using namespace std;

main () {

float risultato;
int scelta;

cout<< "Benvenuto nel programma di conversione, scegli il tipo di conversione che vuoi eseguire /n/n";
cout<< "1 - Valuta"<<endl;
cout<< "2 - Massa "<<endl;
cout<< "3 - Lunghezza"<<endl;
cout<< "4 - Superficie"<<endl;
cout<< "5 - Volume"<<endl;
cout<< "6 - Tempo"<<endl;
cout<< "7 - Temperatura"<<endl;
cin>> scelta;

switch (scelta) {
case 1:
cout<< "Unità di misura: € £ $"<<endl;
goto convertval;
break;
case 2:
cout<< "Unità di misura: kg hg dag g dg cg mg"<<endl;
goto convertmassa;
break;
case 3:
cout<< "Unità di misura: km hm dam m dm cm mm"<<endl;
goto convertlung;
break;
case 4:
cout<< "Unità di misura: km^2 hm^2 dam^2 m^2 dm^2 cm^2 mm^2"<<endl;
goto convertsup;
break;
case 5:
cout<< "Unità di misura: km^3 hm^3 dam^3 m^3 dm^3 cm^3 mm^3"<<endl;
goto convertvol;
break;
case 6:
cout<< "Unità di misura: a m g h min s"<<endl;
goto converttempo;
break;
case 7:
cout<< "Unità di misura: C K F"<<endl;
goto converttemp;
break;
}


convertmassa: {
cout<< "Inserire unità di misura iniziale"<<endl;
char misura1;
cin>> misura1;
cout<< "inserire cifra: ";
float n1;
cin >> n1;
cout<< "inserire unità di misura finale"<<endl;
string misura2;
cin>> misura2;


switch (misura1){

case 'kg':

if (misura2 == "kg"){
cout <<"Risultato: "<<n1<<endl;
break;}

if (misura2 == "hg"){
cout <<"Risultato: "<<n1*10<<endl;
break;}

if (misura2 == "dag"){
cout <<"Risultato; "<<n1*100<<endl;
break;}

if (misura2 == "g"){
cout <<"Risultato: "<<n1*1000<<endl;
break;}

if (misura2 == "dg"){
cout <<"Risultato: "<<n1*10000<<endl;
break;}

if (misura2 == "cg"){
cout <<"Risultato: "<<n1*100000<<endl;
break;}

if (misura2 == "mg"){
cout <<"Risultato: "<<n1*1000000<<endl;
break;}

break;

case 'hg':

if (misura2 == "kg"){
cout <<"Risultato: "<<n1/10<<endl;
break;}

if (misura2 == "hg"){
cout <<"Risultato: "<<n1<<endl;
break;}

if (misura2=="dag"){
cout <<"Risultato; "<<n1*10<<endl;
break;}

if (misura2=="g"){
cout <<"Risultato: "<<n1*100<<endl;
break;}

if (misura2=="dg"){
cout <<"Risultato: "<<n1*1000<<endl;
break;}

if (misura2=="cg"){
cout <<"Risultato: "<<n1*10000<<endl;
break;}

if (misura2=="mg"){
cout <<"Risultato: "<<n1*100000<<endl;
break;}

break;

case 'dag':

if (misura2 == "kg"){
cout <<"Risultato: "<<n1/100<<endl;
break;}

if (misura2 == "hg"){
cout <<"Risultato: "<<n1/10<<endl;
break;}

if (misura2=="dag"){
cout <<"Risultato; "<<n1<<endl;
break;}

if (misura2=="g"){
cout <<"Risultato: "<<n1*10<<endl;
break;}

if (misura2=="dg"){
cout <<"Risultato: "<<n1*100<<endl;
break;}

if (misura2=="cg"){
cout <<"Risultato: "<<n1*1000<<endl;
break;}

if (misura2=="mg"){
cout <<"Risultato: "<<n1*10000<<endl;
break;}

break;

case 'g':

if (misura2=="kg"){
cout <<"Risultato: "<<n1/1000<<endl;
break;}

if (misura2=="hg"){
cout <<"Risultato: "<<n1/100<<endl;
break;}

if (misura2=="dag"){
cout <<"Risultato; "<<n1/10<<endl;
break;}

if (misura2== "g"){
cout <<"Risultato: "<<n1<<endl;
break;}

if (misura2=="dg"){
cout <<"Risultato: "<<n1*10<<endl;
break;}

if (misura2=="cg"){
cout <<"Risultato: "<<n1*100<<endl;
break;}

if (misura2=="mg"){
cout <<"Risultato: "<<n1*1000<<endl;
break;}

break;

case 'dg':

if (misura2=="kg"){
cout <<"Risultato: "<<n1/10000<<endl;
break;}

if (misura2=="hg"){
cout <<"Risultato: "<<n1/1000<<endl;
break;}

if (misura2=="dag"){
cout <<"Risultato; "<<n1/100<<endl;
break;}

if (misura2=="g"){
cout <<"Risultato: "<<n1/10<<endl;
break;}

if (misura2=="dg"){
cout <<"Risultato: "<<n1<<endl;
break;}

if (misura2=="cg"){
cout <<"Risultato: "<<n1*10<<endl;
break;}

if (misura2=="mg"){
cout <<"Risultato: "<<n1*100<<endl;
break;}

break;

case 'cg':

if (misura2=="kg"){
cout <<"Risultato: "<<n1/100000<<endl;
break;}

if (misura2=="hg"){
cout <<"Risultato: "<<n1/10000<<endl;
break;}

if (misura2=="dag"){
cout <<"Risultato; "<<n1/1000<<endl;
break;}

if (misura2=="g"){
cout <<"Risultato: "<<n1/100<<endl;
break;}

if (misura2=="dg"){
cout <<"Risultato: "<<n1/10<<endl;
break;}

if (misura2=="cg"){
cout <<"Risultato: "<<n1<<endl;
break;}

if (misura2=="mg"){
cout <<"Risultato: "<<n1*10<<endl;
break;}

break;

case 'mg':

if (misura2=="kg"){
cout <<"Risultato: "<<n1/1000000<<endl;
break;
}

if (misura2=="hg"){
cout <<"Risultato: "<<n1/100000<<endl;
break;
}

if (misura2=="dag"){
cout <<"Risultato; "<<n1/10000<<endl;
break;
}

if (misura2=="g"){
cout <<"Risultato: "<<n1/1000<<endl;
break;
}

if (misura2=="dg"){
cout <<"Risultato: "<<n1/100<<endl;
break;
}

if (misura2=="cg"){
cout <<"Risultato: "<<n1/10<<endl;
break;
}

if (misura2=="mg"){
cout <<"Risultato: "<<n1<<endl;
break;
}

break;
}
}


system("pause");
}



18 C:\Users\Federico\Desktop\Convertitore.cpp:72 [Warning] multi-character character constant
C:\Users\Federico\Desktop\Convertitore.cpp In function `int main()':
72 C:\Users\Federico\Desktop\Convertitore.cpp [Warning] overflow in implicit constant conversion
18 C:\Users\Federico\Desktop\Convertitore.cpp:104 [Warning] multi-character character constant
104 C:\Users\Federico\Desktop\Convertitore.cpp [Warning] overflow in implicit constant conversion
104 C:\Users\Federico\Desktop\Convertitore.cpp duplicate case value
72 C:\Users\Federico\Desktop\Convertitore.cpp previously used here
18 C:\Users\Federico\Desktop\Convertitore.cpp:136 [Warning] multi-character character constant
136 C:\Users\Federico\Desktop\Convertitore.cpp [Warning] overflow in implicit constant conversion
136 C:\Users\Federico\Desktop\Convertitore.cpp duplicate case value
104 C:\Users\Federico\Desktop\Convertitore.cpp previously used here
168 C:\Users\Federico\Desktop\Convertitore.cpp duplicate case value
136 C:\Users\Federico\Desktop\Convertitore.cpp previously used here
18 C:\Users\Federico\Desktop\Convertitore.cpp:200 [Warning] multi-character character constant
200 C:\Users\Federico\Desktop\Convertitore.cpp [Warning] overflow in implicit constant conversion
200 C:\Users\Federico\Desktop\Convertitore.cpp duplicate case value
168 C:\Users\Federico\Desktop\Convertitore.cpp previously used here
18 C:\Users\Federico\Desktop\Convertitore.cpp:232 [Warning] multi-character character constant
232 C:\Users\Federico\Desktop\Convertitore.cpp [Warning] overflow in implicit constant conversion
232 C:\Users\Federico\Desktop\Convertitore.cpp duplicate case value
200 C:\Users\Federico\Desktop\Convertitore.cpp previously used here
18 C:\Users\Federico\Desktop\Convertitore.cpp:264 [Warning] multi-character character constant
264 C:\Users\Federico\Desktop\Convertitore.cpp [Warning] overflow in implicit constant conversion
264 C:\Users\Federico\Desktop\Convertitore.cpp duplicate case value
232 C:\Users\Federico\Desktop\Convertitore.cpp previously used here
53 C:\Users\Federico\Desktop\Convertitore.cpp label `converttemp' used but not defined
49 C:\Users\Federico\Desktop\Convertitore.cpp label `converttempo' used but not defined
45 C:\Users\Federico\Desktop\Convertitore.cpp label `convertvol' used but not defined
41 C:\Users\Federico\Desktop\Convertitore.cpp label `convertsup' used but not defined
37 C:\Users\Federico\Desktop\Convertitore.cpp label `convertlung' used but not defined
29 C:\Users\Federico\Desktop\Convertitore.cpp label `convertval' used but not defined

1 Risposte

  • Re: Overflow e multi-character [c++]

    
    #include <iostream>
    #include <cstdlib>
    #include <string.h>
    #include <windows.h>
    #include <stdlib.h>
    
    togli windows.h non stai usando niente dei header di windows. Togli stdlib.h basta cstdlib. cambia <string.h> in <string>.

    Siccome hai iniziato ad usare gli int per fare i case del switch perche poi hai cambiato usando non so cosa? Lo switch accetta solo valori fissi e 'kg' non è un valore fisso. Non esiste il carattere 'kg' cosi come non puoi usare le stringhe (quindi "kg" notare il doppio apice) per fare le comparazioni nei switch.

    Quindi la soluzione è quella di usare un altro intero e presentare un menu del tipo:
    
    1. kg
    2. hg
    ecc
    
    Mai usare il goto: siccome il salto fa eseguire parti distinte del programma crea una funzione e chiama questa funzione al posto del goto.
Devi accedere o registrarti per scrivere nel forum
1 risposte