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!
#include <stdio.h>
#define NTRIANGULOS 6
struct Triangulo
{
float xA,yA;
float xB,yB;
float xC,yC;
};
int main(int argc, char *argv[])
{
struct Triangulo triangulo[NTRIANGULOS];
int n,m,ntriangulos;
FILE*fout;
fout
=fopen("triangulo.txt","w");
triangulo[0].xA = 0;
triangulo[0].yA = 0;
triangulo[0].xB = 1;
triangulo[0].yB = 0;
triangulo[0].xC = 0.5;
triangulo[0].yC = 1;
ntriangulos=1;
do{
for(n=ntriangulos-1; n>=0&&ntriangulos<NTRIANGULOS; n--)
{
m=ntriangulos;
/* segundo triangulo */
triangulo[m].xA=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/2 ;
triangulo[m].yA=triangulo[n].yA;
triangulo[m].xB=triangulo[n].xB;
triangulo[m].yB=triangulo[n].yB;
triangulo[m].xC=triangulo[n].xA + 3*(triangulo[n].xB - triangulo[n].xA)/4;
triangulo[m].yC=triangulo[n].yA + (triangulo[n].yC- triangulo[n].yA)/2 ;
/* tercer triangulo */
triangulo[m].xA=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/4;
triangulo[m].yA=triangulo[n].yA + (triangulo[n].yC - triangulo[n].yA)/2;
triangulo[m].xB=triangulo[n].xA + 3*(triangulo[n].xB -triangulo[n].xA)/4;
triangulo[m].yB=triangulo[n].yA + (triangulo[n].yC -triangulo[n].yB)/2;
triangulo[m].xC= triangulo[n].xC;
triangulo[m].yC= triangulo[n].yC;
/* primer triangulo - inicial */
triangulo[n].xC=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/4;
triangulo[n].yC=triangulo[n].xA +(triangulo[n].yC - triangulo[n].yA)/2;
triangulo[n].xB=triangulo[n].xA + (triangulo[n].xB - triangulo[n].xA)/2;
triangulo[n].yB=triangulo[n].yB;
triangulo[n].xA=triangulo[n].xA;
triangulo[n].yA=triangulo[n].yA;
ntriangulos++;
}
} while(ntriangulos<NTRIANGULOS);
for(n=0;n<ntriangulos;n++)
{
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); }
return(0);
}
Codeblocks, lenguaje C