SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Apokalyptica79 en Martes 3 de Julio de 2007, 14:50

Título: Ejercicio En De If En C - Ayuda
Publicado por: Apokalyptica79 en Martes 3 de Julio de 2007, 14:50
Hola haciendo un ejercicio en C con la siguiente consigna:
Citar
Al recibir como dato el precio de un producto importado incremente 11% el mismo si es inferior a $ 1500 y que además escriba el nuevo precio del producto.
Mi codificación es la siguiente:
Citar
#include <stdio.h>
main()
{
 float PRE, NPRE;
 printf( "Ingrese el precio del producto \n" );
 scanf( "%f", &PRE );
 if (PRE < 1500)
   NPRE = PRE * 11 / 100;
 printf( "El nuevo precio es %.2f \n", NPRE );
}
Cuando ejecuto el programa me da como resultado lo siguiente:
Citar
Ingrese el precio del producto
1450
El nuevo precio es 159.50
Y ese no es el resultado que tendría que darme como nuevo precio.
El libro tiene la siguiente codificación:
Citar
#include <stdio.h>
main()
{
 float PRE, NPR;
 printf( "Ingrese el precio del producto \n" );
 scanf( "%f", &PRE );
 if (PRE > 1500)
 {
   NPR = PRE * 1.11;
   printf( "Nuevo precio: %7.2f \n", NPR );
 }
}
Mis dudas son las siguientes:
1) Porque a mi me da como resultado de nuevo precio 159.50? Qué está mal?
2) Porque el libro hace NPR = PRE * 1.11, de donde sale 1.11?
3) Cuando pregunta if (PRE > 1500), ahí no está mal el signo? No tendría que ser menor?
Muchas gracias y perdón si mis preguntas son muy tontas.
Título: Re: Ejercicio En De If En C - Ayuda
Publicado por: Mollense en Martes 3 de Julio de 2007, 15:04
Citar
1) Porque a mi me da como resultado de nuevo precio 159.50? Qué está mal?
Porque ese valor corresponde al 11% de 1450. Te faltaría incrementar ese valor al monto que vos ingresaste:
Código: Text
  1. NPRE = PRE + PRE * 11 / 100;
  2.  
Citar
2) Porque el libro hace NPR = PRE * 1.11, de donde sale 1.11?
Es una simplificación de la fórmula anterior:
Código: Text
  1. NPRE = PRE + PRE * 11 / 100
  2. NPRE = PRE * ( 1 +  11 / 100)
  3. NPRE = PRE * ( 1 +  0.11)
  4. NPRE = PRE * ( 1.11)
  5. NPRE = PRE * 1.11
  6.  
Citar
3) Cuando pregunta if (PRE > 1500), ahí no está mal el signo? No tendría que ser menor?
Según el enunciado que nos mostrás, si :P

Un saludo  :comp:
Título: Re: Ejercicio En De If En C - Ayuda
Publicado por: Apokalyptica79 en Martes 3 de Julio de 2007, 15:09
Hola Angel_K_ido, en la primer pregunta cuando yo revisaba mi codificación y me daba ese resultado, ya me parecía que tenía que sumarle el precio ingresado otra vez, pero no lo hice nada más y estuve mal en no modificarlo y ponerlo a ver si funcionaba.  :blink:
En la segunda pregunta 11/100 me da como resultado 0,11, pero no entiendo porque suma 1. Perdón si es muy tonta esta pregunta.  :unsure:
Y en la tercera, así es como está en el libro, asi que dejé mi codificación como está.
Muchas gracias.  :D
Voy a seguir  :comp:
Título: Re: Ejercicio En De If En C - Ayuda
Publicado por: AnioN en Martes 3 de Julio de 2007, 15:47
acostumbrate siempre a inicializar las variables que vas a usar.
por ej un mejorado de tu codigo seria:

Código: Text
  1. #include &#60;stdio.h&#62;
  2. main()
  3. {
  4. float PRE = 0.0, NPRE = 0.0;
  5. printf( &#34;Ingrese el precio del producto:&#34; );
  6. scanf( &#34;%f&#34;, &PRE );
  7. if (PRE &#60; 1500)
  8.   NPRE = PRE * 1.11;
  9. printf( &#34;El nuevo precio es %.2f &#092;n&#34;, NPRE );
  10. }
  11.  
Título: Re: Ejercicio En De If En C - Ayuda
Publicado por: Apokalyptica79 en Martes 3 de Julio de 2007, 15:50
Hola AnioN, muchas gracias por tu aporte, ya lo pongo en práctica.
 :D
Título: Re: Ejercicio En De If En C - Ayuda
Publicado por: Mollense en Martes 3 de Julio de 2007, 16:02
Cita de: "Apokalyptica79"
En la segunda pregunta 11/100 me da como resultado 0,11, pero no entiendo porque suma 1. Perdón si es muy tonta esta pregunta.  :unsure:
Como te dije antes, es una mera simplificación matemática, te puse el desarrollo de como llegar desde
Código: Text
  1. NPRE = PRE + PRE * 11 / 100
  2.  
hasta
Código: Text
  1. NPRE = PRE * 1.11
  2.  
Las dos formulas te van a dar el mismo resultado pero la segunda es mas eficiente.
Título: Re: Ejercicio En De If En C - Ayuda
Publicado por: Apokalyptica79 en Martes 3 de Julio de 2007, 16:39
Hola Angel_K_ido y si entendí tu explicación, porque yo llegué hasta ahí pero lo que yo no entiendo es porque PRE vale 1. Entendés ahora mi duda?
Perdón si soy cabeza dura.  :blink:  :huh:
Gracias por su ayuda.
Título: Re: Ejercicio En De If En C - Ayuda
Publicado por: Mollense en Martes 3 de Julio de 2007, 18:21
Ahora el cabeza dura soy yo. No no entiendo. ¿Por qué decís que PRE vale 1? El valor de PRE lo ingresa el usuario.
¿Vos te referís al uno que se le suma al porcentaje, no? :think:
Mirá...

Supongamos que el usuario ingresa el valor 1000 (PRE=1000), tenemos que...

El 11% de 1000 es 110...

Eso puede obtenerse de la siguiente manera...
Código: Text
  1. nuevoValor=1000*(100/11)=110
  2.  
o lo que es lo mismo...
Código: Text
  1. nuevoValor=1000*0.11=110
  2.  
Muy bien, pero lo que se necesita en este no es el porcentaje sino la suma del valor mas el porcentaje, ¿cierto?, entonces solamente restaría sumarle al porcentaje que acabamos de calcular el valor original...
Código: Text
  1. nuevoValor=1000+1000*0.11=1110
  2.  
sacando el valor 1000 como factor común nos queda
Código: Text
  1. nuevoValor=1000*(1+0.11)=1110
  2.  
que es igual a:
Código: Text
  1. nuevoValor=1000*(1.11)=1110
  2.  

Ese es el mismo desarrollo que te hice antes y es ahí donde aparece esa unidad (1) que no sabés de donde sale.

Si no es eso entonces no te entiendo.

Un saludo
Título: Re: Ejercicio En De If En C - Ayuda
Publicado por: Apokalyptica79 en Martes 3 de Julio de 2007, 18:26
Hola Angel_K_ido, me sirvió de mucho tu explicación, y algunas cosas de las que me decís las agrego como comentarios en la codificación asi cuando los veo entiendo el porque de cada uno.
Perdón si te estoy matando o aburriendo con mis preguntas.  :unsure:
 :hola:
Título: Re: Ejercicio En De If En C - Ayuda
Publicado por: Mollense en Martes 3 de Julio de 2007, 18:29
No hay problema. Además me gusta la matemática  :D

Un saludo