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

Problema valor variable

Estas en el tema de Problema valor variable en el foro de C/C++ en Foros del Web. Buenas.. En primer Lugar feliz Año a Todos... Estoy adaptando un codigo de c# a c++ y me a surgido un problema con el valor ...
  #1 (permalink)  
Antiguo 02/01/2018, 03:33
 
Fecha de Ingreso: marzo-2007
Mensajes: 23
Antigüedad: 11 años, 8 meses
Puntos: 0
Problema valor variable

Buenas..

En primer Lugar feliz Año a Todos...

Estoy adaptando un codigo de c# a c++ y me a surgido un problema con el valor de una variable al ejecutar una funcion recursiva..

la funcion es la siguiente

Código:

Código:
main
{
.....
 recursiva(2513169434916L, 0, 1, 14, 2513169509823);
}


void recursiva(long long Z, byte P, byte H, byte X, long long K)
{

 long long int num = 7L << (int)(3 * P);

 for (byte b = P; b < X; b += 1)
  {
   for (short num2 = 1; num2 >= 0; num2 -= 1)
    {
    long long  num3 = (Z & ~num) | 1L << (int)((short)(b * 3) + num2);
    if (P < H)
      {
         recursiva(num3, b + 1, H + 1, X, K);
      }
    }
   num <<= 3;
  }
}

La variable que me da problemas es num3

sus valorese deberian ser sucesivamente

2513169509823
2513169434914
2513169434898
2513169434770
2513169433746
2513169425554
2513169360018
2513168835730
2513164641426
2513131086994
2512862651538
hasta aqui bien pero el siguiente en vez de
2510715167890

da -1840700270

En el codigo en c# original el tipo de variable num3 es long (64bites) yo lo he adaptado a long long e incluso a long long int pero sigue igual

Alguna Idea Gracias...
  #2 (permalink)  
Antiguo 02/01/2018, 05:04
 
Fecha de Ingreso: marzo-2007
Mensajes: 23
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema valor variable

Buenas..

He reducido el ambito del problema acotando el procedimiento recursivo..

Código:
for(int x=0;x<12;x++)
  {
     long long int num = 7L << (int)(3 * x);
  }
el Valor de la variable num deberia ser

7
56
448
3584
28672
229376
1835008
14680064
117440512
939524096
hasta aqui bien
pero en vez de 7516192768 da

-1073741824

Mejor asi? Gracias

Última edición por Neg1414; 02/01/2018 a las 07:05
  #3 (permalink)  
Antiguo 05/01/2018, 03:02
 
Fecha de Ingreso: septiembre-2010
Mensajes: 489
Antigüedad: 8 años, 2 meses
Puntos: 10
Respuesta: Problema valor variable

Hola:

He reproducido tu código y me da los resultados correctos:

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.     for(int x=0; x<12; x++)
  7.     {
  8.         long long int num = 7L << (int)(3 * x);
  9.         cout<<"Num: "<<num<<endl;
  10.     }
  11.     return 0;
  12. }

Num: 7
Num: 56
Num: 448
Num: 3584
Num: 28672
Num: 229376
Num: 1835008
Num: 14680064
Num: 117440512
Num: 939524096
Num: 7516192768
Num: 60129542144


Se me ocurre que el problema sea del SO o compilador, que sean de 32 bits (he hecho la prueba en CodeBlocks bajo Linux Mint ambos de 64 bits) , y eso limite el tamaño máximo de la variable, pero ya me pierdo ahí.
__________________
Mi calculadora en Qt

Etiquetas: valor, variable
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 21:01.