Advertencia: el formato ‘%f’ espera un argumento de tipo ‘float’, pero el argumento 2 tiene tipo ‘double’.
¡NECESITO AYUDA!
Estaba intentando enviar el siguiente desafío de HackerRank:
Tarea
Dado el precio de la comida (costo base de una comida), el porcentaje de propina (el porcentaje del precio de la comida que se agrega como propina) y el porcentaje de impuestos (el porcentaje del precio de la comida que se agrega como impuesto) para una comida, encuentra e imprime el costo total de la comida. Redondea el resultado al entero más cercano.
“`
incluir
incluir
int main()
{
int impuesto, propina;
doble comida;
scanf(“%f”,& comida);
scanf(“% d”,& propina);
scanf(“%d”,& impuesto);
comida = comida+(comidapropina/100))+(comidaimpuesto/100);
printf (“%d”,round(comida));
volver 0;
}
no
Después de compilar el código anterior. Siempre obtengo estos errores:
Hk2.c: 33:9: advertencia: el formato ‘% f’ espera un argumento de tipo ‘float *’, pero el argumento 2 tiene tipo ‘double *’ [-Wformat =]
Hk2.c: 37:11: advertencia: el formato ‘% d’ espera un argumento de tipo ‘int’, pero el argumento 2 tiene tipo ‘double’ [-Wformat =]
¿Cuál es el problema?
davy.ai
El problema radica en los especificadores de conversión empleados en las declaraciones scanf.
En la primera declaración scanf, el especificador de conversión debería ser ‘%lf’ en vez de ‘%f’ ya que ‘mealc’ es de tipo double.
En la segunda declaración scanf, el especificador de conversión debería ser ‘%lf’ en lugar de ‘d’ puesto que ‘tip’ también es de tipo double.
Realizar estos cambios debería solucionar los errores.