Foros del Web » Programación para mayores de 30 ;) » C/C++ »

duda con una funcion

Estas en el tema de duda con una funcion en el foro de C/C++ en Foros del Web. hola tengo mi duda es que no logro encontrar por que no se ejecuta el programa correctamente. lo que yo suponía que hace es. en ...
  #1 (permalink)  
Antiguo 21/10/2012, 12:34
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
duda con una funcion

hola tengo mi duda es que no logro encontrar por que no se ejecuta el programa correctamente. lo que yo suponía que hace es.
en el main ingresa los datos (a,g) por decir algo (4,2) que ingresan a la función area(a,ng) es decir area(4,2)
se evalúa la operación apg=a/ng o sea apg=4/2
re retorna el valor de apg a la funcion area es decir area(a,ng) toma el valor de 2.
En el main se pide imprimir area(a,g) que luego de la operacion seria 2.

me imprime 0, debido a mi análisis anterior no he podido encontrar el error, necesito una segunda opinión.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. float area(int a,int ng){
  5.  
  6. float apg;
  7. apg=a/ng;
  8. return apg;
  9. }
  10. int main() {
  11.     int a,g;
  12.     cout<<"digite el area en m^2\t";
  13.     cin>>a;
  14.     cout<<"digite el numero de gallinas";
  15.     cin>>g;
  16.     cout<<"el area que le corresponde a cada gallina es\t"<<area(a,g);
  17.     system("pause");
  18.     return 0;
  19. }
  #2 (permalink)  
Antiguo 22/10/2012, 00:52
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: duda con una funcion

En tu funcion area, los parámetros a y ng son de tipo int. Cuando haces la división a/ng, te hace la división entera, es decir, te deja solamente el cociente y descarta el resto. Así, por ejemplo, 10/3 dará 2, y el resto (=1) se pierde. Tienes dos posibles soluciones:

1. Declarar y utilizar las variables como float (a y g en main, a y ng en la función).

2. Hacer un cast a float en la función:

Código C++:
Ver original
  1. float area(int a,int ng)
  2. {
  3.     float apg;
  4.     apg = (float)a / (float)ng;
  5.     return apg;
  6. }

Saludos,
  #3 (permalink)  
Antiguo 23/10/2012, 13:44
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años
Puntos: 28
Respuesta: duda con una funcion

Hola, he probado el caso que dices 4 y 2 y me funciona me da ( 2 ), prueba castear las divisiones a (float) ya que cuando usas / para dividir es division de parte entera.

saludos
cronos

Código:
#include <iostream>
#include <cstdlib>
using namespace std;
float area(int a,int ng){ 
 float apg;
   apg = (float)a/ (float)ng;
return (float)apg;
}
int main() {
    int a,g;
    cout<<"digite el area en m^2\t";
    cin>>a;
    cout<<"digite el numero de gallinas";
    cin>>g;
    cout<<"el area que le corresponde a cada gallina es\t"<<area(a,g);

    system("pause");

}

Etiquetas: funcion, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:50.