elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con errorC2296 en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problema con errorC2296 en C++  (Leído 4,136 veces)
Feynmann

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Problema con errorC2296 en C++
« en: 21 Marzo 2014, 12:54 pm »

Buenos dias,

Tengo el siguiente programa:


#include <iostream>
#include <fstream>
#include <string>
#include <cmath>

using namespace std;

int main ()
{
   double pi=1.0;
   int n,i,r ;
   cin >> n;
   for(i=1; i==n; i++){
      pi=pi + (-1)^i/(2*i+1) ;
   }
   cout << pi;
   system("PAUSE");
   return 0;
}


error C2296: '^' : no es válido; el operando izquierdo es de tipo 'double'   


¿como puedo resolver este error, y por que se da?


Muchas Gracias de antemano.


En línea

Novato curioso, me gustaria aprender a programar bien en C/C++ por eso estoy aqui. Pero puedo echar una mano a cualquiera que me lo pida en temas de electronica!
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Problema con errorC2296 en C++
« Respuesta #1 en: 21 Marzo 2014, 13:18 pm »

No existe el operador ^ en C.

Para las potencias hay que usar la función pow (base,exponente)

Aunque en este caso no la necesitas, va a dar 1 si i es par y -1 si es impar.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: Problema con errorC2296 en C++
« Respuesta #2 en: 21 Marzo 2014, 15:11 pm »

De acuerdo con amchacón, es más fácil:
Código
  1. for(i=1; i<=n; i++){
  2.    if ( i % 2 )       /* i impar */
  3.        pi = pi - 1/(2*i+1);
  4.    else               /* i par */
  5.        pi = pi + 1/(2*i+1);
  6.   }
  7.  
donde por cierto debe ser "i <= n", no "i == n". Esta solución es preferible por cuanto se debe procurar el código que implique menos esfuerzo de cálculo: con esa sentencia evitas invocar la operación de potenciación. Además hay que tener cuidado con la exponenciación de números de base negativa, recuerda que si los parámetros no son adecuados pudiera resultar en un número con una parte imaginaria.

En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
Feynmann

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Re: Problema con errorC2296 en C++
« Respuesta #3 en: 21 Marzo 2014, 15:28 pm »

Ostras,
Estoy acostumbrado a usar programas de lenguaje simbolico como mathematica y de ahi el ^.
Por otro lado tiene bastante logica todo lo que comentas yoel. Muchas gracias a los dos.
 
Ultima pregunta: Para aprender me estoy haciendo los ejercicios de problemas resueltos de C++, y ojeandome poco a poco mis dudas por internet. No voy a la universidad y no puedo pagarme clases y no sé si es el mejor metodo para aprender, me aconsejais alguna otra cosa?


Un saludo.
En línea

Novato curioso, me gustaria aprender a programar bien en C/C++ por eso estoy aqui. Pero puedo echar una mano a cualquiera que me lo pida en temas de electronica!
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Problema con errorC2296 en C++
« Respuesta #4 en: 21 Marzo 2014, 15:37 pm »

No entendi muy lo que quieres hacer pero aquí va algo:

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7.  
  8. int main ()
  9. {
  10.   double pi=1.0;
  11.   int n,i,r ;
  12.   cout << "Digite n:"; cin >> n;
  13.   for(i=0; i<n; i++){ // lo mejor es inicializar el indice en cero
  14.      //pi=pi + (-1)^i/(2*i+1) ;
  15.  
  16.      pi += pi +( pow(-1, i+1)/(2*i+1));
  17.   }
  18.   cout << pi;
  19.   getchar();
  20.   return 0;
  21. }
  22.  
  23.  
En línea


Feynmann

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Re: Problema con errorC2296 en C++
« Respuesta #5 en: 21 Marzo 2014, 15:49 pm »

Dato000, es un pequeño programa para calcular por aproximación el número pi.

Veo que al final del programa has usado
Código:
getchar();

He buscado , pero no acabo de entender para que sirve, por que lo pones?
"La función getchar retorna el carácter siguiente desde el stream de entrada apuntado por stream. Si el stream está en el final de fichero, el indicador del final de fichero para el stream es activado y getchar retorna EOF. Si ocurre un error de lectura, el indicador de error para el stream es activado y getchar retorna EOF."
En línea

Novato curioso, me gustaria aprender a programar bien en C/C++ por eso estoy aqui. Pero puedo echar una mano a cualquiera que me lo pida en temas de electronica!
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Problema con errorC2296 en C++
« Respuesta #6 en: 21 Marzo 2014, 16:26 pm »

No claro claro, entiendo lo del uso del pi, lo que no se es que tipo de operación necesitas ejecutar para el cálculo. Es obtener PI pero no se como es la ecuación.

getchar es como un System("PAUSE") sin el System("PAUSE"), ejecuta una sentencia en la que espera que el usuario digite una tecla para avanzar con el programa. El problema de usar un llamado al sistema es bueno, por costumbre o tradición no deberia hacerse eso, es como una mala practica, las razones y demás, pues te dirán que es por memoria o saturación y eso, pero para este tipo de ejercicios, es simplemente adquirir buenas bases, y usar sentencias que llaman al sistema directamente es bueno, algo incorrecto.
En línea


Feynmann

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Re: Problema con errorC2296 en C++
« Respuesta #7 en: 21 Marzo 2014, 16:32 pm »

Me ha quedado clarísimo lo del getchar();, Genial.

Respecto a tu pregunta, la expresion que te da el numero Pi por aproximación es la siguiente:

Pi/4= 1-(1/3)+(1/5)-(1/7)+(1/9)- ... = Sumatorio (de 0 a n)[(-1)^n/(2n+1)]

Gracias dato000 ;)

En línea

Novato curioso, me gustaria aprender a programar bien en C/C++ por eso estoy aqui. Pero puedo echar una mano a cualquiera que me lo pida en temas de electronica!
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Problema con errorC2296 en C++
« Respuesta #8 en: 21 Marzo 2014, 16:54 pm »

En ese caso seria algo así, no se si son correctos los valores, pero viendo la función mátematica sería algo así:

Código
  1. for(i=0; i<=n; i++)  // lo mejor es inicializar el indice en cero
  2. {
  3.      //pi=pi + (-1)^i/(2*i+1) ;
  4.  
  5.      pi = pi + ( pow(-1, i) / ( 2*(i+1) ) );
  6.      //tambien funciona con pi += ( pow(-1, i) / ( 2*(i+1) ) );
  7. }
En línea


Feynmann

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Re: Problema con errorC2296 en C++
« Respuesta #9 en: 22 Marzo 2014, 18:12 pm »

Perfecto, todo entendido.
Muchas gracias!  :D
En línea

Novato curioso, me gustaria aprender a programar bien en C/C++ por eso estoy aqui. Pero puedo echar una mano a cualquiera que me lo pida en temas de electronica!
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema BlueZScanner y problema de conexión
Hacking Mobile
Kasswed 3 6,356 Último mensaje 6 Mayo 2006, 22:04 pm
por Gospel
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines