Necesito ayuda con este trabajo, no se alguien podra encontrar el error, el siguiente programa trata de realizar un grafico en html con svg y c con manipulacion de archivos, sin embargo en la funcion generar arcos todas las variables que declaro dentro esa funcion estan trabados en 0, y no se porque sucede eso. El codigo es el siguiente:
· Los códigos deben ir en etiquetas GeSHi
· Los títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
void abrir_html_svg(float x, float y, FILE*archivo);
void cerrar_html_svg(FILE*archivo);
void linea(float x1, float y1, float x2, float y2, FILE*archivo);
void arco_superior(float x1, float y1, float x2, float y2, float r, FILE*archivo);
void arco_inferior(float x1, float y1, float x2, float y2, float r, FILE*archivo);
void generar_arcos(int n, int d, int m, FILE*archivo);
void abrir_html_svg(float x, float y, FILE*archivo){//esta funcion inicializa el codigo html y svg con ancho x y largo y
fprintf(archivo, "<html><body><svg height=""%.3f"" width=""%.3f"">\n", x, y);
printf("Se inicio el html\n");
}
void cerrar_html_svg(FILE*archivo){//esta duncion cierra el codigo html
fprintf(archivo, "</svg></body></html>");
printf("Se cerro el html\n\n");
}
void arco_superior(float x1, float y1, float x2, float y2, float r, FILE*archivo){
//esta funcion imprimira uno de los arcos superiores en el archivo
fprintf(archivo, "<path d='M%.3f,%.3fA%.3f,%.3f 0 0,1 %.3f,%.3f' stroke='red' stroke-width='1' fill='none'></path>\n", x1,y1,r,r,x2,y2);
printf("Se imprimio el arco superior empezando en %.3f,%.3f hasta %.3f,%.3f y radio %.3f\n", x1,y1,x2,y2,r);
}
void arco_inferior(float x1, float y1, float x2, float y2, float r, FILE*archivo){
//esta funcion imprimira un arco inferior COMPLETO en el archivo
fprintf(archivo, "<path d='M%.3f,%.3fA%.3f,%.3f 0 0,0 %.3f,%.3f' stroke='red' stroke-width='1' fill='none'></path>\n", x1,y1,x2,y2,r);
printf("Se imprimio el arco inferior empezando en %.3f,%.3f hasta %.3f,%.3f y radio %.3f\n", x1,y1,x2,y2,r);
}
void generar_arcos(int n, int d, int m, FILE*archivo){//esta funcion genera los arcos del archivo
// n es el numero de capas, d es la longitud del cuadrado exterior y m el margen
float M = (d+(2*m))/2;
float delta = (((2*n)+2)/d);
int c;
while(n>0){
float r = n*delta;
float pix = M+r;
float piy = M;
float pfx = M-r;
float pfy = M;
if(n%2==1){
arco_superior(pix,piy,pfx,pfy,r,archivo);
}else{
arco_inferior(pix,piy,pfx,pfy,r,archivo);
}
n--;c++;
}
printf("Se generaron %d capas\n", c);
}
void linea(float x1, float y1, float x2, float y2, FILE*archivo){
fprintf(archivo, "<line x1=%.3f x2=%.3f y1=%.3f y2=%.3f style=""stroke:rgb(255,0,0);stroke-width:2"" />>\n", x1, x2, y1, y2);
printf("Se imprimio correctamente la linea de: %.3f,%.3f a %.3f,%.3f\n", x1, y1, x2, y2);
}
int main(){
int n,d,m, dc;
n = 5; // numero de capas inferiores y superiores
d = 300; // largo del cuadrado exterior en pixeles
m = 50; // margen del cuadrado exterior con el limite
dc = d+2*m; // largo del area total
FILE * archivo= fopen("main.html", "w");
if(archivo == NULL){
printf("Hubo un errror al iniciar el archivo");
return 1;
}
abrir_html_svg(dc, dc, archivo);
generar_arcos(n, d, m, archivo);
cerrar_html_svg(archivo);
fclose(archivo);
return 0;
}
· Los códigos deben ir en etiquetas GeSHi
· Los títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex