Ayuda con Ternas Pitagóricas en C

Iniciado por RGT, 28 Marzo 2015, 22:18 PM

0 Miembros y 2 Visitantes están viendo este tema.

RGT

Hola, soy nuevo en el foro y quiero enviarles un saludo a todos ustedes.


//Declaración de variable
   int liN, liContador1, liContador2, liContador3, liContadora = 0;

   //Entrada de datos
   printf("Ingrese un valor: ");
   scanf("%d", &liN);

   //Procesamiento
   printf("\n");

   for (liContador1 = 1; liContador1 <= liN; liContador1++)
   {
       for (liContador2 = 1; liContador2 <= liN; liContador2++)
       {
           for (liContador3 = 1; liContador3 <= liN; liContador3++)
           {
               if (liContador1 * liContador1 + liContador2 * liContador2 == liContador3 * liContador3)
                   printf("(%d, %d, %d)\t", liContador1, liContador2, liContador3);
           }
       }
   }

   printf("\n");




Tengo este código hecho y me muestra muchos resultados, algunos que no aparecen, por ejemplo en wikipedia y algunos sitios web que enseñan este método.

Tengo algo mal o me falta hacer algo?.

Espero que me ayuden y saludos a todos!.

engel lex

como no especificas... supongo que lo dices por las ternas

(6,8,10), (8,6,10), etc

pero si 6,8,10 es una terna por que no aparece? simple... 6,8,10 es lo mismo que 3,4,5 y solo toman las formas simplificadas ya que por la teoria... lee la parte de ternas primitivas y no primitivas...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

RGT

Hola, y qué debo de hacer para que salgan las correctas?.

engel lex

las que tienes son correctas... supongo que lo que quieres dcir, es que tienes que hacer solo para que salgan solo las ternas primitivas... mira lo que dice la teoría sobre la primitiva y aplica lo que la hace primitiva...

por otro lado para quitar las ternas repetidas como (4,3,5) que claramente es (3,4,5) no permitas que "b" sea nunca menor que "a"
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

RGT

Hola, intento hacerlo y no me sale :(

engel lex

Que intentas hacer y no te sale?
Muestra el código a ver que error tienes
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

RGT

    for (liContador1 = 1; liContador1 <= liN; liContador1++)
    {
        for (liContador2 = liContador1 ; liContador2 <= liN; liContador2++)
        {
            for (liContador3 = 1; liContador3 <= liN; liContador3++)
            {
                TernasPitagoras(liContador1, liContador2, liContador3);
            }
        }
    }

Hize un cambio (marcado en negrita) y todavia me sale algunos repetidos.

engel lex

no veo repeticiones, con el cambio de codigo ya no te quedan inversiones

nada de (3,4,5) (4,3,5)

por cierto... liContador3 tambien debería ser inicialmente = liContador1, ya que nunca la suma de los cuadrados nunca será menor que ninguno de los valores

ahora solo te falta imprimir solo las primitivas y terminaste... y por lo que veo no estás intentando lo que ya te he dicho

Citarmira lo que dice la teoría sobre la primitiva y aplica lo que la hace primitiva...

la teoria está en wikipedia
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.