Crea una circunferencia con una cantidad determinada por el usuario de circulos dando vueltas al rededor de la circunferencia
/* -Victor de la Rocha -Algoritmia@groups.msn.com -www.myalgorithm.com -Miercoles 16 de Marzo del 2005 10:30am -Programa 2, Practica Graficos (Turbo C) "graphics.h" -Programa dibuja un circulo, y 7 circulos sobre la primera circunferencia dando vueltas */ #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <graphics.h> //funciones graficas #include <math.h> //funciones matematicas #include <dos.h> //Contiene la funcion delay void main(){ /* Las variables gdriver y gmodo, son las variables que se utilizan para hacer referencia a que dispositivo y modo de video se utilizara, Se puede asÃÂÂgnar gdriver=0 o a DETECT para que este elija automaticamente una configuracion adecuada */ int driver, modo; int circulo[100]; int i,circulos;//contadores int aux1;//variable auxiliar para simular el giro de los circulos char aux2[3];//auxiliar para el numero de cada circulo int centrox,centroy,radiog;//circulo principal int radiop;//radio de los riculos pequeños /* Se les asignara la posicion de cada vertice de los circulos pequeños */ int verticesx[100],verticesy[100]; double alfa;//2 veces PI entre el numero de vertices //-------------------------- /* Variable que controla la cantidad de circulos que iran dando vueltas al rededor del circulo mayor. */ printf("Cantidad de circulos dando vueltas = ");scanf("%d",&circulos); /* Centro del circulo mayor */ centrox=320;//x centroy=240;//y radiog=100;//Radio del circulo mayor radiop=15;//Radio de los circulos pequeños //-------------------------- for (i=0;i<=circulos-1;i++){ circulo[i]=i+1; } /* gdriver=0 o DETECT Esto hace que se seleccione un dispositivo y un modo apropiado de video, hace la llamada a la funcion detectgraph() */ driver=DETECT; /* Una vez teniendo el timop de gdriver, se inicializa el modo de video grafico */ initgraph(&driver,&modo,"C:\TCLITE\BGI"); /* Dibujamos el circulo grande con centro en (320 x,240 y) y con un radio de 200 */ circle(centrox,centroy,radiog); /* algoritmo para obtener la posicion de los circulos en el plano de manera que queden en una misma distancia todos, tomando en cuenta que es un heptagono 1. Crear una lista de 7 vértices: vértices 2. alfa <- 2*PI / 7 3. Bucle: i <- 0 hasta 6 4. vértices[i].x <- centro.x + radio * cos( i*alfa ) 5. vértices[i].y <- centro.y + radio * sen( i*alfa ) */ alfa=(2*3.141586)/circulos; for (i=0;i<=circulos-1;i++){ verticesx[i]=abs(centrox+radiog*cos(i*alfa)); verticesy[i]=abs(centroy+radiog*sin(i*alfa)); } /* circulo[0]=1 circulo[1]=2 circulo[2]=3 circulo[3]=4 circulo[4]=5 circulo[5]=6 circulo[6]=7 . . circulo[x]=x+1 */ do{ for(i=circulos-1;i>=0;i--){ setcolor(circulo[i]);//color del texto setfillstyle(1,circulo[i]);//color de relleno del circulo fillellipse(verticesx[i],verticesy[i],radiop,radiop); /* Seteamos la salida del color en 16 (negro) para fin de poder ver el numero que le pertenece a cada circulo */ if(circulo[i]==16){//Si el color del circulo es negro setcolor(15);//cambiamos por otro color el numero del circulo }else{ setcolor(16);//si no seguimos con texto negro } sprintf(aux2,"%d",circulo[i]); outtextxy(verticesx[i]-3,verticesy[i]-3,aux2); } delay(500);//retardamos la ejecucion /* Le damos el efecto de que estan girando los circulos */ aux1=circulo[circulos-1]; for (i=circulos-2;i>=0;i--){ circulo[i+1]=circulo[i]; } circulo[0]=aux1; } /* El programa mantiene su ejecucion mientras no sea tocada ninguna tecla !kbhit(); (Key Board Hit >> KBHit) */ while(!kbhit()); /* Cerramos el modo grafico */ closegraph(); }/* Fin del programa */
¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)
Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.
Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:
- Si es lenguaje C [c]Código en C[/c]
- Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].
De esta manera el código coloreas el código.
Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.
¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)