Estoy intentando crear un programa que toma la entrada de los galones usados ​​de un usuario y las millas conducidas por tres tanques para una asignación. El problema que he tenido es que el bucle for no divide correctamente los dos valores abordados en la entrada en un tercer valor (millas promedio por galón) o el programa no está abordando las entradas correctamente. Pero todavía soy nuevo en esto, por lo que no estoy seguro de dónde se encuentra el problema.


    for(i = 1; i <= 3; ++i)
    {
        /* Define calculations */
        /* ------------------- */

        ave_miles = miles / gallons;
        total_miles = total_miles + miles;
        total_gallons = total_gallons + gallons;
        total_ave_miles = total_miles / total_gallons;

        /* Propmpt user for miles and gallons used and calculate miles per gallon. */
        /* ----------------------------------------------------------------------- */

        printf("Enter the number of gallons used for Tank #%i: ", i);
        scanf("%f", &gallons);
        while ( (c = getchar() != '\n') && c != EOF);

        printf("Enter the number of miles driven: ");
        scanf("%f", &miles);
        while ( (c = getchar() != '\n') && c != EOF);

        printf("*** The miles per gallons for this tank is %.1f\n\n", ave_miles);
    } /* end for loop */

    /* Display and calculate the total miles per gallon for the three tanks. */

    printf("Your overall average of miles per gallon for three tanks is %.1f\n\n", total_ave_miles);
    printf("Thank You for using the program. Goodbye.\n");

} /* end main */
-2
ubutom 30 sep. 2019 a las 19:55

1 respuesta

La mejor respuesta

C y C ++ no tienen evaluación diferida. Entonces, si haces esto:

ave_miles = miles / gallons;
scanf("%f", &miles);
scanf("%f", &gallons);
printf("%f\", ave_miles);

No le dará el promedio de miles / gallons.

En cambio, la primera línea asignará la división de miles / gallons con el valor que tienen estas variables en ese momento en particular (es decir, 0.0 / 0.0, lo que producirá un no un número o NaN).

Quieres hacer esto:

scanf("%f", &miles);
scanf("%f", &gallons);
ave_miles = miles / gallons;
printf("%f\", ave_miles);

Ahora la división miles / gallons le dará el valor promedio de lo que sea que contengan esas variables.

2
giusti 30 sep. 2019 a las 17:00