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

#31
Cita de: kutcher en 16 Agosto 2014, 02:23 AM
Encuentra los primeros cuatro números enteros consecutivos para tener cuatro factores primos distintos. ¿Cuál es el primero de estos números?

Tal vez no sea la solución mas rápida pero ira mejorando:

Código (cpp) [Seleccionar]
#include <stdio.h>

int factor_primo(int n)
{
    int cant = 0, i;
    for( i = 2; n != 1; i++)
        if(n % i == 0)
        {
            cant++;
            do
                n = n / i;
            while(n % i == 0);
        }
    return cant;
}

int main(void)
{
    int n = 0;
    int i, c = 0;

    for(i = 100000 ;; i++)
    {
       (factor_primo(i) == 4) ? c++ : (c = 0);

        if (c == 4)
        {
            n = i - 3;
            break;
        }
    }
    for(i = 0; i < 4; i++)
       printf("%d\n", n + i);

    return 0;
}



Seria interesante que publiquen los códigos con los cuales resuelven el problema
#32
Hola kutcher me parece excelente la iniciativa este tipo de actividades es lo que hacia falta a este subforo, en cuanto al primer reto lo veo difícil pero de igual manera estoy en ello  ;D

Saludos
#33
Cita de: NOB2014 en 12 Agosto 2014, 19:54 PM
  Uno de los ingresos incorrectos:
  Ingreso...: -4 (incorrecto)
  Ingreso...: aa (incorrecto)
  Ingreso...: 11 (incorrecto)
  Ingreso...: -4 (correcto)

En las funciones tanto VerificaCol() y VerificaFil() la variable i la debes inicializar a cero dentro del for:

Código (cpp) [Seleccionar]
for(i = 0; charCol[i]; i++)
  if (!isdigit(charCol[i]))
    ok++;


Saludos
#34
Otra forma de reducir exponencialmente el número de iteraciónes es la siguiente:

Código (cpp) [Seleccionar]
for (i = 3; i * i <= valor; i += 2)

Saludos   
#35
Nueva versión la deje de la siguiente manera:

Código (cpp) [Seleccionar]
char s1[] = " 1234 78   12345 321  9876 5678 ";
int pos = 0;

for (i = 0; s1[ i ] != '\0'; i += pos + 1)
  if ((pos = strcspn(s1 + i, " ")) == 4 && strchr(" \0", s1[i+pos]))
     memset( s1 + i, '*', 4 ), cont ++;

printf("\n Cadena reemplazada.: %s\n", s1);
printf("\n Se han sustituido un total de %d palabras.\n\n", cont);


No me gustaba lo de restarle uno  ;)

EDITO:

Creo es mejor conservar la versión anterior, ya que encontré que esta es
propensa a hacer comparaciones fuera del buffer al pasarle una cadena como esta
"2510 2"

REEDITÓ:

Ahora va perfecto

Saludos
#36
Cita de: leosansan en  7 Agosto 2014, 22:46 PM
Sólo que el else-if está exclusivamente para el la posible primera palabra y podría ser más propio:

Es cierto leosansan no me había fijado, gracias por la observación  ;)

Saludos
#37
Cita de: rir3760 en  7 Agosto 2014, 19:01 PM
Otra alternativa consiste en utilizar la función strcspn para encontrar el siguiente carácter igual a ' ' o '\0' y la función memset para imprimir los cuatro espacios (los prototipos de ambas en <string.h>).

Me gusto la idea de rir3760 la implemente de esta manera:

Código (cpp) [Seleccionar]
char s1[] = " 1234 78   12345 321  9876 5678 ";
int pos = 0;

for (i = 0; s1[ i ] != '\0'; i += pos + 1)
  if (((pos = strcspn( s1 + i, " " )) == 4 &&
      s1[ i - 1 ] == ' ') || (s1[4] == ' ' && i == 0))
    memset( s1 + i, '*', 4 ), cont++;

printf("\n Cadena reemplazada.: %s\n", s1);
printf("\n Se han sustituido un total de %d palabras.\n\n", cont);


Saludos
#38
Cita de: leosansan en  7 Agosto 2014, 16:34 PM
Y con una línea más a cambio de no usar función alguna:

Va bien pero no tiene en cuenta si la ultima palabra es de cuatro caracteres y no tiene un espacio entre el ultimo carácter y el carácter nulo

Saludos
#39
Cita de: leosansan en  7 Agosto 2014, 00:59 AM
Está muy bien pero a mí me falla, y ya lo digo con miedo a equivocarme, porque si el primer espacio es un espace  y la primera cadena es de cuatro no la cambia por asteriscos:

Inconveniente solventado ahora va de maravilla edite el código de arriba 

Saludos
#40
Me gusta la idea, pero no estoy de acuerdo en lo de usar solo c++

Saludos