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:
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
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?????
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++ (http://foro.elhacker.net/programacion_cc-b49.0/).
Un saludo
Ooooohhhh
Muchas gracias por tu ayuda amigo ;-) ;-) ;-)