Código
#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 } void cerrar_html_svg(FILE*archivo){//esta duncion cierra el codigo html } 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++; } } 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); } 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 if(archivo == NULL){ return 1; } abrir_html_svg(dc, dc, archivo); generar_arcos(n, d, m, archivo); cerrar_html_svg(archivo); return 0; }
· Los códigos deben ir en etiquetas GeSHi
· Los títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex