/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Ejemplos de PYTHON frente a C/C++

 
      Índice del Foro elrincondelc.com -> Otros lenguajes
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
leosan



Registrado: 19 Abr 2012
Mensajes: 730
Ubicación: GRAN CANARIA

MensajePublicado: 18/02/2013 3:16 pm
Título: Ejemplos de PYTHON frente a C/C++

Nada mejor que un mismo código par testear las posibilidades, en este caso de cálculo, de ambos sistemas. Y la verdad es que no ha habido color, C va como un tiro.

Como ejemplo pongo la obtención del triángulo de Pascal , elegir 20 en Python para que la comparación sea más precisa, tanto en C como en Python.

Código en C: advierto que la ventana de C hay que elegir en el icono superior izquierdo propiedades, en diseño tamaño del búffer de pantalla y fijar ancho a 120 para ver el triangulo bien formado:
Código:
#include <stdio.h>
long comb(int n,int k);
int main()
{
    int i,j,k;
    const int m = 20;
    for (i = 0; i < m; i++)
        {
            for ( j = 1; j < m-i; j++)
            printf ("   ")  ;
            for (k = 0; k <= i; k++)
                printf ("%6d",comb(i,k));
            printf ("\n");
        }
}
long comb(int n,int k)
{
    int i;
    if (n < 0 || k < 0 || k > n) return 0;
    long c = 1;
    for ( i=1; i<=k; i++,n--)
    c = c*n/i;
    return c;
}


Código en Python v.3x el código sería:
Código:
def comb(n,k):
    if n < 0 | k < 0 | k > n:
        return 0
    c=1
    i=1
    for i in range ( 1, k+1):
        c = c*n/i
        n=n-1
    return c

numstr = input("Ingrese un número maximo 20: ")
num = int(numstr)
print (num)
for i in range(num):
    for j in range (  1, num-i):
            print ("", end='   ') 
    for j in range(i+1):
        d=int (comb(i,j))
        print ("%5d" % d, end=' ')
    print()


Observareis la diferencia de tiempo de uno a otro a favor de C.
Con esto no estoy poniendo a C por delante de Python, sólo estoy considerando el aspecto de potencia de cálculo que parece demostrar en este simple ejemplo.

Para propositos generales me estoy decantando por Python, más sabiendo que se puede "incrustar" código en C (si teneis información al respecto agradecería me la paseis).

Eso sí, Python permite obtener una cantidad ingente de cifras, cosa que C sin librerías adecuadas se queda corto. observar la cantidad de dígitos que obtengo para potencias de 2 sin librerías externas:

Código:
def poncoma( n ):
    "Regresa n como cadena con comas."
    s = str(n)
    pos = len(s)
    while pos > 3:
        pos = pos - 3
        s = s[:pos] +  ',' + s[pos:]
    return s

for n in range(200):
    print ('%3d %80s' % ( n, poncoma( 2**n ) ))

60 cifras sin despeinarse y lo dicho, con lo puesto, sin librerías adicionales.

Espero os animéis a colgar cosas sobre Python, a ver si se "anima" este foro, aunque sea de "otros lenguajes",

Saluditos!.
Volver arriba
      Índice del Foro elrincondelc.com -> Otros lenguajes
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com