• Viernes 19 de Abril de 2024, 11:49

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - karolina.s

Páginas: [1]
1
C/C++ / Programacion de fractal: Triangulo Sierpinsky
« en: Martes 6 de Mayo de 2014, 10:37 »
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 tercer subtriangulo (arriba) y el primero (abajo izq.) y completamente ignora el segundo (abajo der.). Puede ser por que las coordenandas para los dos subtriangulos se llaman igual (triangulo[m].xA ... etc)? Como puedo arreglar este problema? Otro problema que tengo es que necesito que la division del triangulo en tres se apique 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: C
  1.  #include <stdio.h>
  2.  
  3. #define NTRIANGULOS 6
  4.  
  5.  
  6.  
  7.  
  8. struct Triangulo
  9. {
  10.     float xA,yA;
  11.     float xB,yB;
  12.     float xC,yC;
  13. };
  14.  
  15. int main(int argc, char *argv[])
  16. {
  17.     struct Triangulo triangulo[NTRIANGULOS];
  18.     int n,m,ntriangulos;
  19.  
  20.     FILE*fout;
  21.     fout=fopen("triangulo.txt","w");
  22.  
  23.     triangulo[0].xA = 0;
  24.     triangulo[0].yA = 0;
  25.     triangulo[0].xB = 1;
  26.     triangulo[0].yB = 0;
  27.     triangulo[0].xC = 0.5;
  28.     triangulo[0].yC = 1;
  29.     ntriangulos=1;
  30.  
  31.  do{
  32.  
  33.     for(n=ntriangulos-1; n>=0&&ntriangulos<NTRIANGULOS; n--)
  34.     {
  35. m=ntriangulos;
  36.         /* segundo triangulo */
  37.         triangulo[m].xA=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/2 ;
  38.         triangulo[m].yA=triangulo[n].yA;
  39.  
  40.         triangulo[m].xB=triangulo[n].xB;
  41.         triangulo[m].yB=triangulo[n].yB;
  42.  
  43.         triangulo[m].xC=triangulo[n].xA + 3*(triangulo[n].xB - triangulo[n].xA)/4;
  44.         triangulo[m].yC=triangulo[n].yA + (triangulo[n].yC- triangulo[n].yA)/2 ;
  45.  
  46.  
  47.         /* tercer triangulo */
  48.         triangulo[m].xA=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/4;
  49.         triangulo[m].yA=triangulo[n].yA + (triangulo[n].yC - triangulo[n].yA)/2;
  50.  
  51.         triangulo[m].xB=triangulo[n].xA + 3*(triangulo[n].xB -triangulo[n].xA)/4;
  52.         triangulo[m].yB=triangulo[n].yA + (triangulo[n].yC -triangulo[n].yB)/2;
  53.  
  54.         triangulo[m].xC= triangulo[n].xC;
  55.         triangulo[m].yC= triangulo[n].yC;
  56.  
  57.  
  58.         /* primer triangulo - inicial */
  59.  
  60.         triangulo[n].xC=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/4;
  61.         triangulo[n].yC=triangulo[n].xA +(triangulo[n].yC - triangulo[n].yA)/2;
  62.  
  63.         triangulo[n].xB=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/2;
  64.         triangulo[n].yB=triangulo[n].yB;
  65.  
  66.         triangulo[n].xA=triangulo[n].xA;
  67.         triangulo[n].yA=triangulo[n].yA;
  68.  
  69.         ntriangulos++;
  70.  
  71.     }
  72.  
  73.  } while(ntriangulos<NTRIANGULOS);
  74.  
  75.  
  76.  for(n=0;n<ntriangulos;n++)
  77.  {
  78.     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);
  79.  }
  80.  
  81.     fclose(fout);
  82.     return(0);
  83. }
  84.  
Codeblocks, lenguaje C

Páginas: [1]