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

Ejercicio Productorio C++

Estas en el tema de Ejercicio Productorio C++ en el foro de C/C++ en Foros del Web. Hola otra vez, una nueva duda con un ejercicio... Programa debe leer un entero positivo n>0 i es un entero en el rango −15 ≤ ...
  #1 (permalink)  
Antiguo 30/05/2015, 13:06
 
Fecha de Ingreso: mayo-2015
Ubicación: San Antonio de Huarochirí - Perú
Mensajes: 20
Antigüedad: 8 años, 10 meses
Puntos: 0
Sonrisa Ejercicio Productorio C++

Hola otra vez, una nueva duda con un ejercicio...

Programa debe leer un entero positivo n>0

i es un entero en el rango −15 ≤ i ≤ n, i ≠ -1

Calcular productorio:



Resolución...

void main()
{
double i,n;
cout<<"Ingrese el valor de n: ";
cin>>n;
double a;
a=0;
for (i=-15;i<=n;i++) {
if (i==-1) continue;
a=a*(i/((i+1)*(i+1)*(i+1)));
}
cout<<"Resultado de la suma es: "<<a;
getch();
}

Hice mis cálculos en excel:
-15/((-15+1)^3) = 0.005466472303207000000000000000
-14/((-14+1)^3) = 0.000034834143033635800000000000
-13/((-13+1)^3) = 0.000000262062418655825000000000
-12/((-12+1)^3) = 0.000000002362696486754250000000
etc...
-2/((-2+1)^3) = 0.000000000000000000001973670069
salto el -1
-0/((-0+1)^3) = 0
1/((1+1)^3) =0
2/((2+1)^3) =0

Qué opinan? estoy calculando mal o es un error del ejercicio?
  #2 (permalink)  
Antiguo 30/05/2015, 13:13
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: Ejercicio Productorio C++

Si inicializas la variable a a 0 cualquier cosa que multipliques por ella seguirá valiendo 0, cambia dicho valor al inicializar por un 1 y si tu resolución es correcta te saldrán los valores esperados.

Intenta utilizar la etiqueta highlight de c++ para facilitarnos a los demás leer tu código. Un saludo.
  #3 (permalink)  
Antiguo 30/05/2015, 13:26
 
Fecha de Ingreso: mayo-2015
Ubicación: San Antonio de Huarochirí - Perú
Mensajes: 20
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Ejercicio Productorio C++

Gracias xKuZz, tienes razón mi acumulador debe estar en 1 pero igual creo que el problema es cuando la operación pasa por el rango i=0.

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include<iostream>
using namespace std;

void main()
{
double i,n;
cout<<"Ingrese el valor de n: ";
cin>>n;
double a;
a=1;
for (i=-15;i<=n;i++) {
if (i==-1) continue;
a=a*(i/((i+1)*(i+1)*(i+1)));
}
cout<<"Resultado de la suma es: "<<a;
getch();
}
  #4 (permalink)  
Antiguo 30/05/2015, 15:47
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: Ejercicio Productorio C++

Claro, pero tal y como está aquí escrito el ejercicio en el momento el que pongas un final de rango igual o superior a 0 te va a salir 0 porque cuando i vale 0 multiplica lo que había por (0/(1*1*1)) que viene siendo lo mismo que 0 y vas a tener el mismo problema. Mira a ver si en el enunciado te dice que la i aparte de no poder ser -1 tampoco puede ser 0.

Saludos.
  #5 (permalink)  
Antiguo 31/05/2015, 13:08
 
Fecha de Ingreso: mayo-2015
Ubicación: San Antonio de Huarochirí - Perú
Mensajes: 20
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Ejercicio Productorio C++

Gracias xKuZz, realmente el ejercicio no dice nada más y aún si dijera no considerar el 0... el resultado seria fail porque te daría 0.000000000000000000000018274723 y creo que no hay forma de mostrar ese resultado o sí?
  #6 (permalink)  
Antiguo 31/05/2015, 13:26
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: Ejercicio Productorio C++

Sí que hay forma. Si quieres mostrarlo así haces necesitas añadir la cabacera <iomanip>
y se haría de la siguiente manera
Código C++:
Ver original
  1. #include<iostream>
  2. #include <iomanip>
  3. using namespace std;
  4.  
  5. void main(){
  6. cout << std::setprecision(5) << variable_numero;
  7. }

(donde está el 5 pones el valor que te hiciese falta de precisión)

También y lo más usual es utilizar notación científica para sacar esos datos de la siguiente manera
Código C++:
Ver original
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. void main(){
  5. cout << scientific << variable_numero;
  6. }
  #7 (permalink)  
Antiguo 31/05/2015, 20:28
 
Fecha de Ingreso: mayo-2015
Ubicación: San Antonio de Huarochirí - Perú
Mensajes: 20
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Ejercicio Productorio C++

Gracias xKuZz, estudiaré el iomanip y el scientific.

Editado:

Salió todo OK! saltando i= -1 e i= 0 y utilizando iomanip. Gracias otra vez !

Código C++:
Ver original
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <conio.h>  
  4. #include <math.h>
  5. #include <iomanip>
  6. #include<iostream>
  7. using namespace std;
  8.  
  9. double prod (double n){
  10.     int i;
  11.     double a =1.0;
  12.     for (i=-15;i<=n;i++) {
  13.     if (i==-1) continue;
  14.     if (i==0) continue;
  15. a=a*(i/((i+1.0)*(i+1.0)*(i+1.0)));
  16. }
  17.     return a;
  18. }
  19.  
  20. int main() {
  21. double n;
  22. cout<<"Ingrese el valor de n: ";
  23. cin>>n;
  24. std::cout <<"Resultado de la suma es: "<< std::fixed << std::setprecision(30) << prod (n);
  25. getch();
  26. }

Última edición por Ludemarii; 01/06/2015 a las 16:20

Etiquetas: ejercicio, 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 01:14.