SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: ahi en Sábado 6 de Octubre de 2007, 22:56

Título: Problema Con Programa Sencillo En C
Publicado por: ahi en Sábado 6 de Octubre de 2007, 22:56
Hola, tengo un pequeño problema con un programa sencillo en C que creé hace algún tiempo, el fuente es el siguiente:

/* Created by Anjuta version 1.2.4a */
/*   Under GPL v2 License  */

#include <stdio.h>
#include <math.h>
#define pow

main()

{
        float c;
        float r;
        float t;
        float i;
        float f;
        float p;
        float n;   
   
   printf("Introduzca el número de importe inicial: ");
   
   scanf("%f", &c);
   printf("Introduzca el rédito: ");
   scanf("%f", &r);
   printf("introduzca el tiempo en años: ");
   scanf("%f", &t);
   
   /*cálculo de i y f*/
   
   i = r/100;
   f = p * pow((1 + i), n);
   
   /*escribir la salida*/
   
   printf("\nEl valor final es : %2.f\n", f);
   
   sleep(3600000);
}

el programa compila bien, pero tengo un pequeño problema, el programa se supone que que averigua el interés (i) a partir del importe inicial ©, del rédito ® y del tiempo en años (t) a partir de la siguiente escuación c * r * t / 100  pero al ejecutarlo siempre me dá como resultado -0.00, ¿alguien me hecha una mano?

NOTA: lo compilé con GCC bajo Linux
Título: Re: Problema Con Programa Sencillo En C
Publicado por: Eternal Idol en Sábado 6 de Octubre de 2007, 23:44
No tengo tiempo para verlo ahora pero seguramente si lo depuras te daras cuenta del problema.
Título: Re: Problema Con Programa Sencillo En C
Publicado por: Lisa&Llana en Domingo 7 de Octubre de 2007, 01:47
,mira apenas revise tu codigo...y resulta que si le sacas el #define pow te compila pero siempre te arroja una constante laaaarga.(me gustaria revirsar mas y mas tu codigo pero tengo mucho que hacer por ahora..).. asi que sigue viendo. ;)
Título: Re: Problema Con Programa Sencillo En C
Publicado por: Vallu en Domingo 14 de Octubre de 2007, 16:01
Ya se qual es el problema. La funcion Pow retorna INT, mientras que todas las otras variables son de tipo FLOAT, x eso la f siempre te da o un numero muy largo o 0.

kuando puede t busco lo de convertir y t lo arreglo.

Por cierto t dejo el programa aki con algunes toques xa que keda mas presentable  ;)

Código: Text
  1. /* Created by Anjuta version 1.2.4a
  2. Under GPL v2 License */
  3.  
  4. #include &#60;stdio.h&#62;
  5. #include &#60;math.h&#62;
  6.  
  7.  
  8. void main(){
  9.      
  10. float c=0,r=0,t=0,i=0,f=0,p=0,n=2, x=0;
  11.  
  12.     printf(&#34;Introduzca el numero de importe inicial: &#34;);    
  13.     scanf(&#34;%f&#34;,&c);
  14.     printf(&#34;Introduzca el credito: &#34;);
  15.     scanf(&#34;%f&#34;,&r);
  16.     printf(&#34;introduzca el tiempo en años: &#34;);
  17.     scanf(&#34;%f&#34;,&t);
  18.    
  19.     //cálculo de i y f
  20.    
  21.     i = r/100;
  22.     f = p*(pow((1+i),n));
  23.    
  24.    //escribir la salida
  25.    
  26.     printf(&#34;&#092;nEl valor final es : %f&#092;n&#34;, f);
  27.    
  28.     getch();
  29. }
  30.  
Título: Re: Problema Con Programa Sencillo En C
Publicado por: ahi en Domingo 14 de Octubre de 2007, 17:17
el código que me das nisiquiera me lo compila, me da error el compilador, te pego la salida de terminal :

ahi@Debian-ahib0t:~$ gcc /home/ahi/Desktop/mnaa-i.c -o /home/ahi/Desktop/mnaa-i
/home/ahi/Desktop/mnaa-i.c: In function ‘main’:
/home/ahi/Desktop/mnaa-i.c:8: warning: return type of ‘main’ is not ‘int’
/tmp/cctfubil.o: In function `main':
mnaa-i.c:(.text+0xd6): undefined reference to `pow'
mnaa-i.c:(.text+0xf4): undefined reference to `getch'
collect2: ld returned 1 exit status
ahi@Debian-ahib0t:~$

Esos son los fallos que me da al compilar.

Pero gracias por ayudarme con el programita ese.....  :D
Título: Re: Problema Con Programa Sencillo En C
Publicado por: Vallu en Domingo 14 de Octubre de 2007, 17:43
pues entonces pon el tuyo que ya estaba bien, x cierto, a la n asignale un numero, ya k si no t dara error.  Has podido conseguir lo de passar de INT a FLOAT?
Título: Re: Problema Con Programa Sencillo En C
Publicado por: octopus22 en Viernes 19 de Octubre de 2007, 13:17
Cita de: "Eternal Idol"
No tengo tiempo para verlo ahora pero seguramente si lo depuras te daras cuenta del problema.
pero es que el depurador no le arroja error sino que le da como salida -0.00
Título: Re: Problema Con Programa Sencillo En C
Publicado por: Eternal Idol en Viernes 19 de Octubre de 2007, 13:19
Cita de: "octopus22"
pero es que el compilador no le arroja error sino que le da como salida -0.00
¿Y que tiene que ver? Si el compilador diera algun error no podria depurarlo ...
Título: Re: Problema Con Programa Sencillo En C
Publicado por: octopus22 en Viernes 19 de Octubre de 2007, 14:23
Cita de: "Eternal Idol"
Cita de: "octopus22"
pero es que el compilador no le arroja error sino que le da como salida -0.00
¿Y que tiene que ver? Si el compilador diera algun error no podria depurarlo ...
Es cierto! fue error mio... corregido  :P
Título: Re: Problema Con Programa Sencillo En C
Publicado por: anthony25 en Viernes 19 de Octubre de 2007, 17:00
Cita de: "octopus22"
Cita de: "Eternal Idol"
Cita de: "octopus22"
pero es que el compilador no le arroja error sino que le da como salida -0.00
¿Y que tiene que ver? Si el compilador diera algun error no podria depurarlo ...
Es cierto! fue error mio... corregido  :P
en la parte para calcular tienes que modificarla para que te de un resultado correcto.

y si te sirve esta formula A=p(1+r)n

y imprime tu resultado asi >>> %.2f



pueden contactarme a este email: kcsk18@hotmail.com
Título: Re: Problema Con Programa Sencillo En C
Publicado por: octopus22 en Viernes 19 de Octubre de 2007, 17:08
Cita de: "anthony25"
Cita de: "octopus22"
Cita de: "Eternal Idol"
Cita de: "octopus22"
pero es que el compilador no le arroja error sino que le da como salida -0.00
¿Y que tiene que ver? Si el compilador diera algun error no podria depurarlo ...
Es cierto! fue error mio... corregido  :P
en la parte para calcular tienes que modificarla para que te de un resultado correcto.

y si te sirve esta formula A=p(1+r)n

y imprime tu resultado asi >>> %.2f



pueden contactarme a este email: kcsk18@hotmail.com
pero yo no arme el thread  :P
Título: Re: Problema Con Programa Sencillo En C
Publicado por: ahi en Viernes 19 de Octubre de 2007, 18:17
La formula que me dijiste que usase, la: A=p(1+r)n

Esa no sirve, no se a que haces referencia con "A" ni como encajarla en el código.

Perdonad mi falta de conocimiento, estoy aprendiendo programación con un libro y me lio un poco (sobre todo porque todavia no me lo he acabado.
Título: Re: Problema Con Programa Sencillo En C
Publicado por: Eternal Idol en Viernes 19 de Octubre de 2007, 18:25
ahi: revisa el codigo, no tiene gran sentido. Estas usando variables sin inicializar:

¿Que es n? ¿El tiempo (osea t)? Cuando la usas tiene un valor indefinido.
¿Que es p? ¿El valor inicial (osea c)? Cuando la usas tiene un valor indefinido.

Declara las variables con nombres mas utiles y que tengan relacion con lo que van a contener y despues plantea el calculo que queres hacer.

Y sino segun lo que dijiste ahi lo tenes facil:
printf("\nEl valor final es : %2.f\n", c * r * t / 100 );
Título: Re: Problema Con Programa Sencillo En C
Publicado por: ahi en Viernes 26 de Octubre de 2007, 15:53
Muchas gracias, me habeis ayudado muchísimo, acabo de usar la fórmula que me citó Eternal Idol:

printf("\nEl valor final es : %2.f\n", c * r * t / 100 );

he eliminado las variables inservibles y me ha funcionado el programa :kicking: , muchísimas gracias, aparte me habeis ayudado a seguir, a continuar estudiando C por mi parte...

Saludos