if(scelta_scelta_3 == 1)
{
printf("Inserisci la misura indicandone l'unit%c: \n \n", 133);
printf("1. Metri cubi (m%c) \n", 252);
printf("2. Decimetri cubi (dm%c) \n", 252);
printf("3. Centimetri cubi (cm%c) \n \n", 252);
printf("Digita la parte numerica della misura: ");
scanf("%f",&parte_numerica);
fflush(stdin);
printf("\n");
do
{
printf("Seguendo la tabella di prima, digita il numero corrispondente all'unit%c di misura: ", 133);
scanf("%i",&unita_misura_da_convertire);
fflush(stdin);
printf("\n");
if(unita_misura_da_convertire < 1 || unita_misura_da_convertire > 3)
{
printf("Inserimento fallito. \n");
printf("Puoi inserire soltanto numeri da 1 a 3. \n");
printf("Riprova. \n \n");
}
}
while(unita_misura_da_convertire < 1 || unita_misura_da_convertire > 3);
do
{
printf("Vuoi rimanere nei metri cubi o passare ai litri? \n");
printf("Premi 'm' per restare nei metri cubi, 'L' per passare ai litri. ");
fflush(stdin);
scanf("%c",&scelta_m_cubi_o_litri);
printf("\n");
if(scelta_m_cubi_o_litri != 'm' && scelta_m_cubi_o_litri != 'M' && scelta_m_cubi_o_litri != 'l' && scelta_m_cubi_o_litri != 'L')
{
printf("Inserimento fallito. \n");
printf("Puoi inserire soltanto l, L, m ed M. \n");
printf("Riprova. \n \n");
}
}
while(scelta_m_cubi_o_litri != 'm' && scelta_m_cubi_o_litri != 'M' && scelta_m_cubi_o_litri != 'l' && scelta_m_cubi_o_litri != 'L');
if(scelta_m_cubi_o_litri == 'm' || scelta_m_cubi_o_litri == 'M');
{
do
{
printf("Seguendo la tabella di prima, digita il numero corrispondente all'unit%c di misura che vuoi ottenere: ", 133);
scanf("%i",&risultato_unita_misura);
fflush(stdin);
printf("\n");
if(unita_misura_da_convertire == risultato_unita_misura)
{
printf("Inserimento fallito. \n");
printf("Le due unit%c di misura sono uguali.", 133);
printf("Riprova. \n \n");
}
}
while(unita_misura_da_convertire == risultato_unita_misura);
/* Calcolo volume - metri cubi a metri cubi */
if(unita_misura_da_convertire < risultato_unita_misura)
{
unita_misura_variabile = risultato_unita_misura - unita_misura_da_convertire;
}
else
if(unita_misura_da_convertire > risultato_unita_misura)
{
unita_misura_variabile = unita_misura_da_convertire - risultato_unita_misura;
}
if(unita_misura_da_convertire > risultato_unita_misura)
{
risultato_parte_num = parte_numerica / pow(1000, unita_misura_variabile);
}
else
if(unita_misura_da_convertire < risultato_unita_misura)
{
risultato_parte_num = parte_numerica * pow(1000, unita_misura_variabile);
}
printf("La parte numerica risulta %.3f \n \n", risultato_parte_num);
} /* fine per calcolare metri cubi a metri cubi */
if(scelta_m_cubi_o_litri == 'l' || scelta_m_cubi_o_litri == 'L')
{
printf("Inserisci quale unit%c di misura vuoi ottenere: \n \n", 133);
printf("4. Kilolitri (KL) \n");
printf("5. Ettolitri (HL) \n");
printf("6. Decalitri (daL) \n");
printf("7. Litri (L) \n");
printf("8. Decilitri (dL) \n");
printf("9. Centilitri (cL) \n");
printf("10. Millilitri (mL) \n \n");
do
{
printf("Digita il numero di seguito: ");
scanf("%i",&risultato_unita_misura);
fflush(stdin);
printf("\n");
if(risultato_unita_misura < 4 || risultato_unita_misura > 10)
{
printf("Inserimento fallito. \n");
printf("Puoi inserire soltanto numeri da 4 a 10. \n");
printf("Riprova. \n \n");
}
}
while(risultato_unita_misura < 4 || risultato_unita_misura > 10);
if((unita_misura_da_convertire == 1 && risultato_unita_misura == 4) || (unita_misura_da_convertire == 2 && risultato_unita_misura == 7) || (unita_misura_da_convertire == 3 && risultato_unita_misura == 10))
{
risultato_parte_num = parte_numerica;
}
if(unita_misura_da_convertire == 1)
{
unita_misura_variabile = risultato_unita_misura - 4;
risultato_parte_num = parte_numerica * pow(10, unita_misura_variabile);
}
else
if(unita_misura_da_convertire == 2)
{
unita_misura_variabile = risultato_unita_misura - 7;
risultato_parte_num = parte_numerica * pow(10, unita_misura_variabile);
}
else
if(unita_misura_da_convertire == 3)
{
unita_misura_variabile = risultato_unita_misura - 10;
risultato_parte_num = parte_numerica * pow(10, unita_misura_variabile);
}
printf("La parte numerica risulta %.3f. \n \n");
} /* termine if metri cubi a litri */
} /* fine scelta dei metri cubi */
praticamente, quando me lo chiede, io inserisco che voglio convertire un valore che gli ho dato da metri cubi a litri.
il problema è che quando arrivo alla variabile "m_cubi_o_litri" e digito "l", lui lo percepisce come una "m", infatti mi fa restare nei metri cubi.
soltanto che dopo aver eseguito il calcolo coi metri cubi, mi dà ora come se avessi inserito una "l", mostrandomi la tabella dei multipli e sottomultipli del litro.
perciò, sperando di essermi espresso in italiano decente, cosa dovrei fare per risolvere?
il compilatore non mi dà nessun tipo di errore, perciò non manca nulla (in teoria) nel codice.
in caso vogliate provare voi stessi il programma, vi allego il codice su pastebin:
http://pastebin.com/1siH0b6
(per vedere l'errore, al primo scanf digitate 3, poi 1, poi un numero qualsiasi, un numero da 1 a 3, poi l).