Non è così , mi sono basato su quello che spiega sul ciclo while e dal suo esempio
ho riscritto il codice , questa volta con le stringhe in italiano magari faccio meno confusione così, e non capisco perchè se gli dico di controllare che non vengano inseriti i valori negati e gli 0 perchè non mi stampa i messaggi che gli ho inserito nelle istruzioni qando metto sia lo 0 che un valore negativo?
perchè quando inserisco -1 mi chiede ancora di inserire i km e poi si interrompe il programma?
perchè mi calcola e stampa sempre e comunque l'ultimo if?
* es:3.17 pag 83
Programma in C che stabilisci quanto un auto chilometri riesce a fare con un litro di benzina,
nel caso ci siano più valori esegue la media */
#include <stdio.h>
/*inizio programma */
int main(void){
float lt,km,totlt,totkm,ris,md;/*dichiaro le variabili in float */
printf("Inserisci i litri(-1 per terminare): ");/*richiedo all'utente di inserire il dato richiesto */
scanf("%f",<);/*memorizzo il dato nella variabile lt */
printf("Inserisci i chilometri: ");/*richiedo all'utente di inserire il dato richiesto */
scanf("%f",&km);/*memorizzo il dato nella variabile km*/
ris=km/lt;/*assegno alla variabile ris il risultato della divisione */
printf("La tua auto percorre %.2f Km con 1 litro di benzina\n\n",ris);/*stampo il risultato */
if(lt==0){
/*controllo che non venga inserito lo 0 comne valore nella variabile lt */
printf("Il dato inserito per i litri non puo' essere 0\n");
printf("Inserisci i litri(-1 per terminare): ");/*richiedo all'utente di reinserire il dato richiesto */
scanf("%f",<);/*memorizzo il dato nella variabile lt */
}
else if(km==0){
/*controllo che non vemga inserito lo 0 nella variabile km*/
printf("Il dato inserito per i Km non puo' essere 0\n");
printf("Inserisci i chilometri: ");/*richiedo all'utente di reinserire il dato richiesto */
scanf("%f",&km);/*memorizzo il dato nella variabile km*/
}
else if(lt==-lt){
/*controllo che non venga inserito un valore negativo comne valore nella variabile lt */
printf("Il dato inserito per i litri non puo' essere negativo\n");
printf("Inserisci i litri(-1 per terminare): ");/*richiedo all'utente di reinserire il dato richiesto */
scanf("%f",<);/*memorizzo il dato nella variabile lt */
}
else if(km==-km){
/*controllo che non vemga inserito un valore negativo nella variabile km*/
printf("Il dato inserito per i Km non puo' essere negativo\n");
printf("Inserisci i chilometri: ");/*richiedo all'utente di reinserire il dato richiesto */
scanf("%f",&km);/*memorizzo il dato nella variabile km*/
}
lt=0;/*inizializzo la variabile lt a 0 per il ciclo while*/
/*inizio ciclo while*/
while(lt!=-1){/*fintanto che non verrà inserito il valore sentinella -1 continua a richiedere i dati */
printf("Inserisci i litri(-1 per terminare): ");
scanf("%f",<);
printf("Inserisci i chilometri: ");
scanf("%f",&km);
ris=km/lt;
printf("La tua auto percorre %.2f Km con 1 litro di benzina\n",ris);
totlt +=lt;/*assegno alla variabile totlt la somma dei litri inseriti */
totkm +=km;/*assegno alla variabile totkm la somma dei km inseriti */
}
if(lt==-1){
/*se l'utente ha inserito il valore sentinella */
md=totkm/totlt;/*assegno alla variabile md la somma dei lt inseriti e la somma dei km per trovare la media */
printf("In base al totale dei pieni eseguiti ed il totale dei km percorsi,");
printf("mediamente la tua auto percorre %.2f km con 1 litro di benzina",md);/*stampo la media */
}
return 0;/*programma eseguito correttamente*/
}
/*fine programma */