elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Programacion de un fractal: Triangulo Sierpinsky en: 6 Mayo 2014, 22:06 pm
Hola a todos! Necesito ayuda con un programa que he escrito para generar el triangulo de Sierpinsky. El caso es que el ordenador lee solo el segundo subtriangulo (abajo der) y el primero (abajo izq.) y completamente ignora el tercero (arriba), aunque tenga un indice diferente. Como puedo arreglar este problema? Otro problema que tengo es que necesito que la division del triangulo en tres se aplique a TODOS los nuevos triangulos formados ... por lo que estoy viendo ahora tengo la sensacion que solo se me esta dividiendo el de abajo izq.!ARGGGGG!
Muchas gracias de antemano!

Código
  1. #include <stdio.h>
  2.  
  3. #define NTRIANGULOS 3
  4.  
  5.  
  6. struct Triangulo
  7. {
  8.    float xA,yA;
  9.    float xB,yB;
  10.    float xC,yC;
  11. };
  12.  
  13. int main(int argc, char *argv[])
  14. {
  15.    struct Triangulo triangulo[NTRIANGULOS];
  16.    int n,m,p,ntriangulos;
  17.  
  18.    FILE*fout;
  19.    fout=fopen("triangulo.txt","w");
  20.  
  21.    triangulo[0].xA = 0.0;
  22.    triangulo[0].yA = 0.0;
  23.    triangulo[0].xB = 1.0;
  24.    triangulo[0].yB = 0.0;
  25.    triangulo[0].xC = 0.5;
  26.    triangulo[0].yC = 1.0;
  27.    ntriangulos=1.0;
  28.  
  29. do{
  30.  
  31.    for(n=ntriangulos-1; n>=0&&ntriangulos<NTRIANGULOS; n--)
  32.    {
  33. m=ntriangulos;
  34.        /* segundo triangulo */
  35.        triangulo[m].xA=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/2.0 ;
  36.        triangulo[m].yA=triangulo[n].yA;
  37.  
  38.        triangulo[m].xB=triangulo[n].xB;
  39.        triangulo[m].yB=triangulo[n].yB;
  40.  
  41.        triangulo[m].xC=triangulo[n].xA + 3.0*(triangulo[n].xB - triangulo[n].xA)/4.0;
  42.        triangulo[m].yC=triangulo[n].yA + (triangulo[n].yC- triangulo[n].yA)/2.0 ;
  43.  
  44. p=ntriangulos;
  45.        /* tercer triangulo */
  46.        triangulo[p].xA=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/4.0;
  47.        triangulo[p].yA=triangulo[n].yA + (triangulo[n].yC - triangulo[n].yA)/2.0;
  48.  
  49.        triangulo[p].xB=triangulo[n].xA + 3*(triangulo[n].xB -triangulo[n].xA)/4.0;
  50.        triangulo[p].yB=triangulo[n].yA + (triangulo[n].yC -triangulo[n].yB)/2.0;
  51.  
  52.        triangulo[p].xC= triangulo[n].xC;
  53.        triangulo[p].yC= triangulo[n].yC;
  54.  
  55.  
  56.        /* primer triangulo - inicial */
  57.  
  58.        triangulo[n].xC=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/4.0;
  59.        triangulo[n].yC=triangulo[n].xA +(triangulo[n].yC - triangulo[n].yA)/2.0;
  60.  
  61.        triangulo[n].xB=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/2.0;
  62.        triangulo[n].yB=triangulo[n].yB;
  63.  
  64.        triangulo[n].xA=triangulo[n].xA;
  65.        triangulo[n].yA=triangulo[n].yA;
  66.  
  67.        ntriangulos++;
  68.  
  69.    }
  70.  
  71. } while(ntriangulos<NTRIANGULOS);
  72.  
  73.  
  74. for(n=0;n<ntriangulos;n++)
  75. {
  76.    fprintf(fout,"%g\t%g\n%g\t%g\n%g\t%g\n",triangulo[n].xA,  triangulo[n].yA, triangulo[n].xB, triangulo[n].yB, triangulo[n].xC, triangulo[n].yC);
  77. }
  78.  
  79.    fclose(fout);
  80.    return(0);
  81. }
  82.  

Code:Blocks, lenguaje C
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines