Entero por coma flotante

Iniciado por psycho248, 14 Mayo 2014, 23:55 PM

0 Miembros y 1 Visitante están viendo este tema.

psycho248

Alguien sabe por que me imprime 4.00000 en lugar de 4.50000???


#include<stdio.h>

int multiplicador(int p, float t);

int main()
{
int a=3;
float b,c;
b=1.5;
c=0;

c=multiplicador(a,b);

printf("El valor de b es %f\n",c);

return 0;

}

int multiplicador(int p, float t)
{
float prod=0;

prod = p*t;

return prod;

}




:huh: :huh: :huh:

engel lex

tu compilador no dio ninguna alerta?

en la declaracion de tu función
int multiplicador(int p, float t);

si es un int, no puede retornar un float
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

psycho248

OK, OK. Ese fue un mal ejemplo  :P
Mi verdadero problema es este:

int Recursivo(int v[],int i, float N, float p);

int main()
{
float n=6;
float m=0;
int v[6]={4,5,2,7,8,1};

m=Recursivo(v,0,n,m);
printf("El valor de m es: %f\n",m);

return 0;
}

int Recursivo(int v[], int i, float N, float p)
{
if(i<N)
  {
   p=p+v[i];

   p=Recursivo(v,i+1,N,p);
  }else{
   p=p/N;
   
   return p;
  }
}



Donde no puedo poner la función como float.
Será que no puedo retornar el número en flotante?????

rir3760

Para que la función retorne el resultado correcto debes cambiar su prototipo y definición indicando que su tipo de retorno es float:
float Recursivo(int v[],int i, float N, float p);

También debes cambiar el cuerpo de la función (ya que solo retorna un valor en una de las ramas de ejecución) a:
float Recursivo(int v[], int i, float N, float p)
{
   if (i<N){
      p=p+v[i];
      p=Recursivo(v,i+1,N,p);
   }else
      p=p/N;
   
   return p;
}


O bien:
float Recursivo(int v[], int i, float N, float p)
{
   return (i < N) ? Recursivo(v, i + 1, N, p + v[i]) : p / N;
}


Por ultimo si tienes alguna duda o problema con un programa en C/C++ utiliza el foro Programación C/C++.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

psycho248

Ooooohhhh
Muchas gracias por tu ayuda amigo  ;-) ;-) ;-)