Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: TheMaker en 3 Noviembre 2010, 00:30 AM

Título: C++ o Python, cual de los dos se equivoca!?
Publicado por: TheMaker en 3 Noviembre 2010, 00:30 AM
Tengo dos códigos, q hacen lo mismo (o es creo)

el de c++

Código (c++) [Seleccionar]
#include<iostream>
using namespace std;

int re(int nu){
   if(nu==0)
           return 0;
   if(nu==1)
           return 1;
   return 3*re(nu-1)+4*re(nu-2);
   }
int main(){
   cout<<re(1);
   }


y el de python

Código (python) [Seleccionar]
def r(n):
if n==0:
return 0
if n==1:
return 1
return 3*r(n-1)+4*r(n-2)


hasta r(16) dan los mismos resultados, pero a partir de ahí cada uno dice una cosa distinta, además c++ peta en cuanto se sube de r(20) mientras que python... llega a valores superiores a r(900) :O (copón bendito)

pues bien, usando el máxima (una copia libre del mathematica) he comprobado que python es el que lleva razón, alguien sabe porque c++, un leguaje que se supone supereficiente en comparación con un leguaje como python, se equivoca(para valores altos) en cálculos matemáticos que python resuelve sin despeinarse???
Título: Re: C++ o Python, cual de los dos se equivoca!?
Publicado por: do-while en 3 Noviembre 2010, 01:13 AM
¡Buenas!

Eso que describes me suena al rango de valores que puede tomar una variable de tipo int. Imprimitete por pantalla sizeof(int), lo multiplicas por 8 y eleva 2 al resultado que de en la calculadora. Luego dividelo por 2 y ese sera el entero mas grande que puedas utilizar en c++.

Por ejemplo, si sizeof(int) = 4 -> 8 * 4 = 32 -> 2^32 = 4.294,967.296 (Este sera el unsigned int mas alto que podras utilizar (realmente le tienes que restar uno)) y 4.294,967.296 / 2 - 1 = 2.147,483.647 Es el int mas alto que puedes utilizar.

Por lo que dices, la forma en la que python maneja enteros es distinta. Puede utilizar enteros arbitrariamente grandes.

En C++ esto lo puedes simular tu con una clase que maneje enteros todo lo grandes que quieras, por ejemplo, utilizando vectores de enteros. Luego, evidenemente, tendra que formatear la entrada y la salida, sobrecargar operadores...

¡Saludos!

PD: en limits.h, te salen los limites de los tipos enteros.
Título: Re: C++ o Python, cual de los dos se equivoca!?
Publicado por: flony en 3 Noviembre 2010, 02:08 AM
 ;) por eso estudio los dos... ;D ;D y no me voy de todo del scripting
Título: Re: C++ o Python, cual de los dos se equivoca!?
Publicado por: EvilGoblin en 7 Noviembre 2010, 16:25 PM
los 2 (c++ y python) son muy eficientes mientras los sepas usar =).


Python es una fuente de programacion rapida para tareas sencillas y a medida que la complicas se hace poco menos legible y mas desordenado.

Encambio C++ no cambia su dificultad desde el "Hola Mundo" hasta hookeos y mutex xD..

tenes que usar double int

Título: Re: C++ o Python, cual de los dos se equivoca!?
Publicado por: Littlehorse en 7 Noviembre 2010, 16:49 PM
Cita de: EvilGoblin en  7 Noviembre 2010, 16:25 PM
tenes que usar double int

double int? :xD

CitarC tiene los siguientes tipos fundamentales:

    * Caracteres: char (también es un entero), wchar_t
    * Enteros: short int, int, long int, long long int
    * Números en coma flotante: float, double, long double
    * Vacío: void
Título: Re: C++ o Python, cual de los dos se equivoca!?
Publicado por: EvilGoblin en 8 Noviembre 2010, 18:11 PM
xD cierto long int :P
lo siento xD