Autor Tema: Tabla de códigos para C (lenguajec) modificadores para printf y scanf CU00511F  (Leído 4529 veces)

Daniloboy

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Hola a todos, antes que nada gracias por esta página pues me esta ayudando mucho a desarrollar mis conocimientos de programación. Hay algo que me lleva comiendo la cabeza como 30 minutos mas o menos y es lo siguiente:
En esta entrega piden realizar un ejercicio para realizar un acercamiento a la asignación de variables, bien, aquí esta mi código:


Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main() {
double precio;
precio=100;
double impuesto;
impuesto=0.04;
double precioreal;
precioreal=precio*impuesto;
printf("El producto final costara %d euros\n", precioreal);
return 0;
}

En las pautas pone que asigne decimales dobles (double) para las primeras variables y que la tercera (precioreal) sea la multiplicación de estas anteriores y muestre el mensaje el pantalla. La cosa es que en la interfaz, no me detecta ningún error de sintaxis aparentemente y en la consola cuando compilo me muestra "El producto final costara 0 euros"

¿Por qué no realiza la multiplicación? Seguro que es una tontería pero no lo veo...
« Última modificación: 24 de Abril 2016, 13:43 por Alex Rodríguez »

Daniloboy

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:Ejercicio entrega nº11 (Lenguaje C) ¿Que sucede?
« Respuesta #1 en: 24 de Abril 2016, 13:08 »
Lo he descubierto, era una buena tontería, había puesto %d y eso es para números enteros, tuve que poner %f, siento las molestias ^^

Aquí dejo una tabla que me ayudó a descubrirlo:


%   Prints a literal '%' character (this type doesn't accept any flags, width, precision, length fields).
d, i   int as a signed decimal number. '%d' and '%i' are synonymous for output, but are different when used with scanf() for input (where using %i will interpret a number as hexadecimal if it's preceded by 0x, and octal if it's preceded by 0.)
u   Print decimal unsigned int.
f, F   double in normal (fixed-point) notation. 'f' and 'F' only differs in how the strings for an infinite number or NaN are printed ('inf', 'infinity' and 'nan' for 'f', 'INF', 'INFINITY' and 'NAN' for 'F').
e, E   double value in standard form ([-]d.ddd e[+/-]ddd). An E conversion uses the letter E (rather than e) to introduce the exponent. The exponent always contains at least two digits; if the value is zero, the exponent is 00. In Windows, the exponent contains three digits by default, e.g. 1.5e002, but this can be altered by Microsoft-specific _set_output_format function.
g, G   double in either normal or exponential notation, whichever is more appropriate for its magnitude. 'g' uses lower-case letters, 'G' uses upper-case letters. This type differs slightly from fixed-point notation in that insignificant zeroes to the right of the decimal point are not included. Also, the decimal point is not included on whole numbers.
x, X   unsigned int as a hexadecimal number. 'x' uses lower-case letters and 'X' uses upper-case.
o   unsigned int in octal.
s   null-terminated string.
c   char (character).
p   void * (pointer to void) in an implementation-defined format.
a, A   double in hexadecimal notation, starting with "0x" or "0X". 'a' uses lower-case letters, 'A' uses upper-case letters.[11][12] (C++11 iostreams have a hexfloat that works the same).
n   Print nothing, but writes the number of characters successfully written so far into an integer pointer parameter.
Note: This can be utilized in Uncontrolled format string exploits.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejercicio entrega nº11 (Lenguaje C) ¿Que sucede?
« Respuesta #2 en: 24 de Abril 2016, 13:38 »
Hola Danilo

Veo que tú mismo has detectado dónde estaba el problema

Aprovecho para comentarte:

Para pegar código en el foro y poner título a los temas hazlo como se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0, esto facilita que sepamos a qué ejercicio te refieres. Por ejemplo en este ejercicio es adecuado incluir en el título del tema del foro: CU00511F declarar variables y mostrar mensajes en C, para poder localizarlo rápidamente.

Para pegar código hazlo como se indica en ese mismo hilo usando [ code ] ... [ / code], así el código queda bien formateado en el foro y se puede copiar y pegar para comprobarlo con mayor rapidez

Saludos

Daniloboy

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Disculpa, me concentré demasiado en obtener la respuesta y ni me pase a leer las reglas del foro, pido disculpas por mi impulsividad digital.
Ahora si se ve bien el código en el post con la etiqueta "code", gracias por el consejo Alex. Antes de postear una duda intentaré averiguarla por mi mismo aunque me lleve algunos días.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Danilo, no hay ningún problema por postear, de hecho recomendamos ir posteando los ejercicios de los cursos para así poder obtener orientación, consejos, etc.

Tampoco hay problema con postear dudas, lo único que pedimos es seguir las pautas indicadas para mantener los foros ordenados

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".