Pequeña duda en prácticas C++ [FP][SOLUCIONADO]

Muy buenas. Tengo una dudilla para mis prácticas de Fundamentos de Programación y la verdad es que no encuentro el fallo. Estoy con Visual Studio C++, me deja compilar el programa pero se ve que tengo un fallo lógico, puesto que el resultado no es el que me tiene que dar. El ejercicio es este:

https://www.dropbox.com/gallery/1995764 ... B?h=85827a

Lo he hecho así, pero según la calculadora del enlace, no me da igual D=, estoy seguro que me he confundido al escribir la función, pero no le encuentro el fallo T_T...

/* Programa que lee coeficientes nu (esperanza o media) y sigma (desviación típica) y los coloca en una función gaussiana.
Luego aporta un valor a x y muestra en pantalla su imagen */
#include <iostream>
#include <cmath>
using namespace std;

int main(){
   const double PI = 3.1415926; // Declarar valores constantes y variables nu, sigma,
                               // x y la imagen de la función.
   double nu;
   double sigma;
   double x;
   double funcion;
   
   cout << "\nIntroduce el valor de nu de la función gaussiana: ";
   cin >> nu;
   cout << "\n\nIntroduce ahora el valor de sigma: ";
   cin >> sigma;
   cout << "\n\nPor último, introduce un valor de abcisa x para calcular su imagen: ";
   cin >> x;
   funcion = (1/(sigma*(sqrt(2*PI))))*(exp(((-1/2)*(pow(((x-nu)/sigma),2)))));
   cout << "\n\nLa imagen de la función gaussiana con los valores introducidos es de " << funcion<< "\n\n";
   system("pause");
}


La calculadora que me recomiendan en el guión

http://www.danielsoper.com/statcalc/calc54.aspx

Y bueno, estoy empezando, así que estoy seguro que mi código está muy chustero y eso, pero tampoco conocemos mucho más por ahora XD.

Muchas gracias ;).

Salu2!!!
¿Cuál es el resultado de 1/2? Pista: es un entero ;)

Solucionando eso el resultado es correcto.
Pues... 0.5 no? xD. No entiendo bien el problema, la verdad, supongo que poner ahí 0.5 sería igual, ¿no? ¿O es otra cosa y estoy tan espeso ya hoy (llevaba toda la tarde programando ejercicios xD) que no me doy cuenta de lo que me dices?

Muchas gracias.

EDIT: Ostias, lo he probado y sí que lo muestra correctamente. ¿Pero me puede decir alguien por qué pasa eso? xD, no veo la diferencia...

Salu2!!!
No, 1 / 2 = 0. Ambos son enteros y el resultado es un entero, así que lo trunca (no redondea) ya que 0.5 no es un entero. Lo que tienes que hacer es que en la operación el dividendo y/o el divisor sean reales para que el resultado sea un real. Hay varias formas, como hacer "casting" (type casting), no sé si lo habréis dado ya. Por ejemplo:

1 / 2 = 0
(double) 1 / 2 = 0.5 // se convierte el 1 a double
1 / (double) 2 = 0.5 // se convierte el 2 a double
double (1 / 2) = 0 // se convierte el resultado de 1/2 a double

Aunque es más rápido cambiar la expresión añadiendo .0 (o un punto):

1.0 / 2 = 0.5
1. / 2 = 0.5

Bueno, o puedes poner directamente 0.5, ya que el resultado de 1/2 va a ser siempre el mismo.
Ajam, vale, vale... Eso no se había visto en clase, la verdad es que no sé cómo lo estarán haciendo mis compañeros. Lo he puesto como 1.0/2, me resulta lo más intuitivo ;). Pero me apunto lo de type casting, seguro que me será útil =).

Muchísimas gracias, se da por resuelto ^^

Salu2!!!
4 respuestas