Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - amchacon

#411
Cita de: leosansan en 27 Diciembre 2013, 22:59 PM
Supongo que también influye el hecho de que yo empiezo en 3 y voy de dos en dos, obviando de esa forma las operaciones con los pares, que no son primos ni son pocos. Lo que más me ha gustado es la concisión en el código ;)

¡¡¡¡ Saluditos! ..... !!!!

Ah pues no había pensado en eso. Quizás eso haya sido lo más decisivo xD
#412
Cita de: leosansan en 27 Diciembre 2013, 21:25 PM
Perdona que había quedado en contestar, pero esto de las Fiestas me ocupan familiarmente demasiado.

No quería dejar pasar mi versión de la criba de Eratóstenes, para que no se diga que no ayudamos:


Código (cpp) [Seleccionar]

#include <stdio.h>

int main ()
{
   int i, j, cont=1, n;
   //printf ("Introduzca numero: ");
   //scanf ("%d", &n);
   n=1000000;
   int *a;
   a =  malloc (sizeof(int)*n);
   for (i=3;i<=n;i+=2)
       a[i]=i;
   /*printf ("2  ");*/
   for (i=3; i*i<=n;i+=2)
       for (j=i;i*j<=n;j+=2)
           a[i*j]=0;
   for (i=3;i<n;i+=2)
       if (a[i]!=0){
           //printf ("%d  ",a[i]);
           cont++;/**/
       }
   printf("\n total = %d",cont);
   return 0;
}


Sí. ya sé que están desactivados el scanf y el printf, pero quería compararlo con el de amchacon  :laugh: :laugh: Y esto son los resultados, desactivando también los printf en el de amchacon y dejando en ambos casos activo solamente el contador final de primos resultantes:



No es por nada  :laugh: :laugh: pero parece que el mío va de un 25 a un 33 por ciento más rápido, y eso que solamente he podido usar 10^6, cuando en realidad quería meterle más caña,
Los tiempos son muy cortos para suponer eso, ahí puede influir muchos factores externos.

Pero aún así es más eficiente, entre otras cosas porque no tienes llamadas a función y esas cosas. El algoritmo es el mismo básicamente.

Cita de: leosansan en 27 Diciembre 2013, 21:25 PMpero ...... en el mío no tengo problema en tomar 10^8, pero el de amchacon se cuelga en mi ordenador desde 10^7. Supongo que es problema mío, y de tener declarada la matriz en el caso de amchacon como int[]. Es un fastidio porque, como ejemplo, no puedo usar en mi ordenata matrices de 1000x1000. ¡SNIFFF!. ¿Os pasa algo parecido a vosotros o podéis manejar rangos superiores a 10^8 o matrices de orden superior a 1000?.
El problema esque yo meto los datos en la pila y tú usas memoria dinámica (malloc).

Tienes la explicación detallada aquí (segundo mensaje):
http://foro.elhacker.net/programacion_cc/duda_memoria_dinamica_en_c-t391783.0.html

Cita de: ivancea96 en 27 Diciembre 2013, 21:47 PM
Man prueba con 10^12 :O
Te sales del rango de los enteros  :silbar:
#413
Cierto.

Quizás sería mejor hacer solo la triangulación y resolverla recursivamente. Si te encuentras con alguna paridad (0x = 4) entonces ya paras.
#414
Programación C/C++ / Re: Problemas con los ficheros
27 Diciembre 2013, 13:53 PM
Pues los fallos que veo esque no escribe nada en el fichero (a pesar que lo abre  :huh:) y este scanf:
scanf("%d", trabajador.horas_trabajadas);

Falta un & ahí.
#415
Cita de: SoyelRobert en 27 Diciembre 2013, 12:52 PMPara escalonar una matriz has de seguir el algoritmo de gauss, ahora bien si lo que quieres es obtener la matriz identidad entonces has de usar el algoritmo de gauss yordan sin embargo ten en cuenta que no te vale cualquier matriz, hay matrices que al utilizar gauss yordan no te van a dar la identidad, te dara una escalonada reducida si pero no la identidad
Cualquier matriz con determinante no-nulo se podrá convertir en identidad.

Si tiene un determinante nulo, significa que no es resoluble (o tiene infinitas soluciones).
#416
Programación C/C++ / Re: Problemas con los ficheros
27 Diciembre 2013, 12:52 PM
Pero dinos que fallo te da  :silbar:
#417
Cita de: DanielC# en 26 Diciembre 2013, 17:38 PM
Hola amchacon.
Esta es la diferencia.-
char *frase[] = {"abeja", "Abeja"};

char *p = "abeja";
char *q = "Abeja";

¿Y no es eso lo que preguntabas?
#418
Cita de: leosansan en 26 Diciembre 2013, 17:07 PMPerdona que te cite entero pero es que el código que expones está clarísimo. Repito, supongo que es la costumbre o hábito adquirido. Pero para mayor claridad reconozco que el uso de las llaves va mejor en general. ¿O.K?
Pues entonces será la costumbre, yo el python lo usé un par de veces y a correr. Sin las llaves no soy nada :xD

Además hay un problema que le veo (no en Python, sino en los lenguajes de libre indentación):
Cita de: amchacon en 26 Diciembre 2013, 16:54 PMY si me va una indentación ya la lío parda porque el compilador no me va a avisar de eso.
#419
Cita de: leosansan en 26 Diciembre 2013, 16:45 PM
Supongo que es la costumbre adquirida antaño del Python, donde haces la vista a la indexación.
Puede ser, yo cuando veo:

Código (cpp) [Seleccionar]

int valor = 0;
int matriz[100][100];

for (int i = 0; i < 100;i++)
    for (int j = 0; j < 100;j++)
        if (matriz[i][j] > 0)
           while (matriz[i][j] > 0)
                valor += matriz[i][j]*pow(matriz[i][j],valor+matriz[i][j]--);     
        else if (matriz[i][j]) < 0) matriz[i][j] = 0;
               else matriz[i][j] += valor;


Lo entiendo pero me resulta muy confuso. Y si me va una indentación ya la lío parda porque el compilador no me va a avisar de eso.
#420
Cita de: DanielC# en 26 Diciembre 2013, 16:16 PM
Hola rir3760.
Una pregunta más, tu ultimo código se puede aplicar de esta manera.-
char *frase[] = {"aveja", "Aveja"};
Si te parece tedioso para este post sólo decime si es posible y me las rebusco.-
Sí, de hecho lo hace justo en el código anterior.