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 - Caster

#51
Foro Libre / Re: Pooooorra Champions
24 Mayo 2014, 23:38 PM
Que injusto es el mundo a veces, partido más que merecido para el Atletico, esos 5mins de descuento sobraban.
#52
Cita de: ivancea96 en 24 Mayo 2014, 15:37 PM
Código (cpp) [Seleccionar]
if((j%1) == 0 && (j%j) == 0)

Esta condición es absurda. Cualquier número mayor que 0 cumple que es divisible entre 1 y entre si mismo.

Ya, pero en el momento en el que la puse no me di cuenta  :xD

Aunque en verdad, esa condición debe de ser la única que cumplan los números primos y es lo que no se hacer, como aislar los numeros que solo cumplen esa condicion y ninguna mas.

Un saludo.
#53
Buenas, estoy intentando hacer un programa que halle los numeros primos entre 0 y n, ya se que ha salido mas de una vez en el foro y que habrá mucha información por ahí sobre este problema. Ya he estado leyendo algunos posts anteriores y basandome en ellos hice esto, que es la parte prinicpal del programa, el resto da igual ahora mismo:

for(j= 3; j <= num; j += 2){
        for(i = 3; i <= j; i++){
            if((j%1) == 0 && (j%j) == 0 && (j%i) == 0)
            printf("\n%d\t", j);
        }
    }


En este codigo, con el 15 por ejemplo, se realiza la comprobacion 13 veces (desde 3 a 15, ambos inclusive), 3 de ellas son verdaderas (i=3; i=5; i=15) y el resto son falsas. Digo esto porque con esta comprobacion el 15 sale 3 veces, y que tampoco me valdria poner:

if((j%1) == 0 && (j%j) == 0 && (j%i) != 0)

Porque saldría el resto de las veces, es decir, 10.

También probé a poner:

if((j%1) == 0 && (j%j) == 0)

El problema es que esta condicion la cumplen todos los numeros, no solo los primos, lo que pasa es que lo que caracteriza a los numeros primos es que solo cumplen esas dos condiciones, lo que quiero decir es que no logro aislar los numeros que solo cumplan esas dos condiciones, que son los que yo busco.

Un saudo
#54
Foro Libre / Re: x^x = k
22 Mayo 2014, 22:49 PM
x=log(k)/W(log(k))

Encontré esto en internet, lo que no se es que significa W.

Por si te vale de algo:

http://www.wolframalpha.com/input/?i=x^x%3Dk

Un saludo
#55
Cita de: engel lex en 21 Mayo 2014, 20:04 PM
es segun titor, ese es el factor porcentual maximo tolerable de cambio en un universo, para asegurarte de mantenerte en tu mismo universo

No me refiero eso sino a que nunca vi números con tantas comas, solo una.
#56
Min 4.43: 0,00,00,001

¿Y este número?
#57
No se te va a dar el código hecho. Existen varias formas de hacerlo, de todas maneras puedes buscar un poco por google o utilizando el buscador del foro que ya se ha dado este temas varias veces.

Un saludo.
#58
Cita de: Blaster en 18 Mayo 2014, 18:15 PM
La variable i la debes inicializar a cero, si le pasas al programa un cinco el programa revienta por que en ese ambito el valor i es deconocido, contiene basura y al utilizarlo como indice sobrescribis otras direcciones de memoria

Saludos

Tienes razón, problema solucionado. Ya edito el codigo en el post anterior.
Y ya aprovecho para preguntar una cosa, ¿es mejor inicializar siempre las variables para que no se llenen de basura y que den resultados inesperados?

Un saludo
#59
Bueno, después de romperme mucho la cabeza con este programa, creo que ya está listo, aquí el código para quien le interese:

#include <stdio.h>
#include <math.h>
#include <string.h>

void arabigos_a_romanos(int digitos[]);

int main()
{
int i, num;
int digitos[3];

puts("Introduzca el numero (maximo 3 digitos):");
scanf("%d", &num);

for (i = 2; i >= 0; i--)
{
digitos[i] = num / (pow(10, i));
num -= digitos[i] * (pow(10, i));
}

arabigos_a_romanos(digitos);
   return 0;
}

void arabigos_a_romanos(int digitos[]){
char x[20], temp;
char digito_romano[4] = "", romano[20] = "";
   char letras[4][3] = { 'I', 'V', 'X',
 'X', 'L', 'C',
 'C', 'D', 'M',
 'M'};
int j, i, cant_decimal = 0, z, y, a;
for(j = 0; j <= 2; j++)
{
switch(digitos[j])
{
           case 0:
               digito_romano[j] = "";
case 1:
case 2:
case 3:
for( i = 0; i < digitos[j]; i++ )
digito_romano[i] = letras[cant_decimal][0];
break;

case 4:
for( i = 0; i < 2; i++ )
digito_romano[i] = letras[cant_decimal][i];
break;

case 5:
                                i = 0;
digito_romano[0] = letras[cant_decimal][1];
i++;
               break;

case 6:
case 7:
case 8:
digito_romano[0] = letras[cant_decimal][1];
for( i = 1; i <= digitos[j] - 5; i++ )
digito_romano[i] = letras[cant_decimal][0];
break;

case 9:
digito_romano[0] = letras[cant_decimal][0];
digito_romano[1] = letras[cant_decimal][2];
i = 2;
               break;
}

digito_romano[i] = '\0';
cant_decimal++;
strrev(digito_romano);
   strcat(romano, digito_romano);
   }
puts("El numero en romano es:");
for(z=10; z >= 0; z--)
       printf("%c", romano[z]);
}


He añadido un case mas al switch porque cuando el numero terminaba en 0 daba un error, pero creo que ahora ya funciona perfectamente. He probado con numeros como 123(CXXIII), 400(CD), 434(CDXXXIV), 200(CC)... y el resultado ha sido siempre el esperado asi que supongo que dare por terminado el programa, muchas gracias a todos los que me habeis ayudado.

Un saludo
#60
Ya tengo el código y creo que funciona bien, solo me queda saber como hacer para que desaparezcan esos caracteres basura que aparecen en el array, lei sobre la funcion memsert y lo hice asi:

memset(digito_romano, 0, 4);

Pero no consigo hacer que desaparezcan esos caracteres basura.

Un saludo