Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Noviembre 21, 2008, 07:11:33
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Ternas pitagóricas 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Ternas pitagóricas  (Leído 261 veces)
placa4
Habitual
*****
Desconectado Desconectado

Mensajes: 174



Ver Perfil
« en: Mayo 07, 2008, 08:31:47 »

Buenas, pues aquí tengo un code bastante interesante, calcula todas las ternas pitagóricas, pero no lo hace mediante su fórmula correspondiente ( a^2-b^2 , 2ab, a^2+b^2) si no que lo he hecho creando todas las combinaciones posibles entre tres variables(lo que vendría a ser la terna), por eso a algún newbie que no quiera
calentarse la cabeza, pues este newbie ya se lo da hecho, el code está interesante tanto por lo que hace como por cómo lo hace, si necesitáis calcular todas las combinaciones posibles, pero sin tener en cuenta las reglas que le puse a mi programa para que el cateto menor no superase al mayor, ni el mayor a la hipotenusa, basta con quitar los decrementos de b--; Guarda los datos en un archivo txt usando la libreria fstream.h:

#include <iostream>
#include <fstream.h>

int main()
{
   int a = 3; int b = 4; int c = 5; int i = 0; int s;

    std::cout << "Escribe hasta donde quieres que llegue: "; //Se refiere hasta que numero llega el contador
   std::cin >> s; std::cout << "\n";

   ofstream Pit("Ternas pitagóricas.txt", ios::trunc);

   while(i < s)
   {
      while(b > 0)
      {
         while(a > 0)
         {
            a--;
            if(a * a + b * b == c * c)
            {
               Pit << "a = " << a << ", b = " << b << ", c = " << c << "\n";
            }

         }
         b--;
         a = b;
         a--;
      }
      c++;
      b = c;
      b--;
   }
   return 0;
}

Bueno, pues ahí está el code, digo lo mismo de siempre, si alguien sabe acortarlo, o se le ocurre otra forma de calcular las ternas...que no se corte Wink

Salu2

PD: El teorema de pitágoras dice que la suma de los cuadrados de los catetos es igual al cuadrado de la hipotenusa (a^2 + b^2 = c^2)

En línea

No se que firma poner... Espera, si esto ya es una firma, ¡una metafirma!
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 269


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #1 en: Mayo 07, 2008, 05:47:33 »

Seria bueno el que recordaras que existe la "precedencia de operadores", la recursividad y que "b--" es postdecremento por lo que va igual hacer:

Código:
a = --b;
--a;

o mejor aun y te ahorras toda la joda del decremente de a despues:

Código:
a = (--b - 1);

en el caso de C bastaria con:

b = c++;

dado el caso que b toma el valor de c y luego c es incrementado; por otra parte y perdona la pregunta peor para que coños sirven las variables "i" y "s" ya que no veo que en ninguna parte sean modificadas y tampoco intervienen en las operaciones.

Att: DarkIker
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> Colombia Underground Team

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> My Blog
Fashion
Colaborador
*****
Desconectado Desconectado

Mensajes: 932



Ver Perfil Email
« Respuesta #2 en: Mayo 07, 2008, 07:39:47 »

Le falta mucha teoria, tiene que leer más, su idea es buena pero la forma en que utilizas los operadores deja mucho que desear, tampoco hace uso de funciones,  utiliza muchas variables un cambio a cualquiera afecta a los demas, es por eso que no permites el ingreso de numeros negativos.

Tambien le hace falta leer mas sobre funciones por ejemplo: La libreria  #Include<math.h>, con esta libreria podrás usar la función "pow(x, y)" para calcular x elevado a la potencia y, el cual le dará como resultado un valor postivo, es decir x puede ser positivo o negativo, esto siempre y cuando quiera ingresar cualquier numero sin importar el signo + ó -.


Seria bueno el que recordaras que existe la "precedencia de operadores", la recursividad y que "b--" es postdecremento por lo que va igual hacer:

Código:
a = --b;
--a;

o mejor aun y te ahorras toda la joda del decremente de a despues:

Código:
a = (--b - 1);

en el caso de C bastaria con:

b = c++;

dado el caso que b toma el valor de c y luego c es incrementado; por otra parte y perdona la pregunta peor para que coños sirven las variables "i" y "s" ya que no veo que en ninguna parte sean modificadas y tampoco intervienen en las operaciones.

Att: DarkIker

Las variables "i, s" son para evitar el ingreso de numeros negativos.


Fashion
« Última modificación: Mayo 07, 2008, 07:41:43 por Fashion » En línea



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Referencie Mi Nick Click Aquí
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 269


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #3 en: Mayo 07, 2008, 07:58:03 »

Las varaibles i, s generan un bucle infinito y se supone que s define el numero de itineraciones.

Att: DarkIker
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> Colombia Underground Team

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> My Blog
lann
Habitual
*****
Desconectado Desconectado

Mensajes: 322


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #4 en: Mayo 07, 2008, 09:50:24 »

pues de hecho sera un bucle infinito amenos (s si puede ser negativo, teoricamente) de que s <= 0

aparte pow no siempre regresa un numero positivo ya que un numero negativo elevado a una potencia impar el resultado sera negativo

pero es cierto lo que dice dark ya que a s pues es casi obvio que se le dara un valor positivo y este nunca veo que se decremente o que i aumente, pero bueno no compile el codigo como utilizo mis poderes de  observacion... =p



En línea

am
placa4
Habitual
*****
Desconectado Desconectado

Mensajes: 174



Ver Perfil
« Respuesta #5 en: Mayo 08, 2008, 08:40:56 »

No, no saquéis hipotesis acerca de i y s  Grin, es que se me olvidó poner en el code:

i++;

i es un contador,y s es hasta donde llega i, en cuanto i sea igual que s, el bucle se rompe. Se que me falta aun muchisima teoria, recursividad, usar los operadores mejor, etc,  pero bueno, poco a poco aprendere a programar mejor.

Salu2

PD: Fashion ha encontrado otro uso a "i" y "s" para los numeros negativos, ni siquiera se me vino a la cabeza xD, gracias por responder.

Edito: Miraré la math.h para apañar un poco el programa y que admita negativos :p.
« Última modificación: Mayo 08, 2008, 08:43:27 por placa4 » En línea

No se que firma poner... Espera, si esto ya es una firma, ¡una metafirma!
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Ternas pitagóricas « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC