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

#1
Hola!

Necesito generar todas las combinaciones posibles de un numero de N digitos usando solo los digitos 4 y 7.

Ejemplo:

Generar todas las combinaciones de un numero de 3 digitos usando solo 4's y 7's.

444
447
474
477
744
747
774
777

Y repetir esto hasta numeros de 30 digitos.

Alguien tiene alguna idea de como se podria hacer esto de manera eficiente? He estado pensando pero no se me ocurre nada de nada! Tengo un limite de tiempo de 8 segundos para generar todas las combinaciones.

Agradezco sugerencias e ideas!

Gracias!
#2
Cita de: satu en 25 Febrero 2012, 21:43 PM
Hola

Cuando entra al for la primera vez los valores de las variables son:
a - 120
b - 1
c - 2

y lo primero que hace es imprimir sus valores (valores iniciales). Después tienes un if que comprueba si a % c == 0, que si supieras lo que significa % sabrías que sí se cumple, entonces entra en el if y al asignar 0 a la variable 'b' deja de cumplirse la condición del for, por lo que sale del for y se imprimen los valores finales.

Léete un buen libro de C/C++.

Para saber para qué sirve el operador % puedes leer este post.

Sería bueno que hicieras una traza con papel y boli de tu programa para que veas la ejecución del programa y dónde entra y tal.

Saludos

Hola!

Gracias por tu respuesta! Sabia lo que hacia el programa, lo unico que pasaba era que tenia un mal concepto de como funcionaba el operador &&.

Despues leyendo me entere que al asignar a b el valor de 0, cuando vuelve al for la condicion es falsa y por ende sale de este.

Gracias por la explicacion ^^
#3
Hola, tengo una pregunta:

#include <stdio.h>

int prueba (long);

int main ()

{
    prueba(120);
    return 0;
   
}

int prueba(long a)
{
   // retorna prueba

   int b = 1, c; // alguito, pruebate

   for (c = 2; b && c <= a / 2; c++)
   {
       printf("Valores: A---> %i, B ---> %i, C----> %i\n", a, b, c);
      if (a % c == 0)
      {
           
            b = 0;
}
}

  printf("\n\nValores finales, B ---> %i, A ---> %i, C ----> %i", b, a, c);
   return b;
}


Porque el programa solo devuelve los Valores iniciales y los finales una vez?

Porque el ciclo for no se sigue ejecutando?

No se supone que cuando C valga 3, la condicion sera que si 0 && 3 <= 60 ... Entonces ..

No deberia seguir ejecutandose el codigo?

Gracias!