Crea una circunferencia con una cantidad determinada por el usuario de circulos dando vueltas al rededor de la circunferencia

¿Has encontrado un error? ¿Tienes la solución? Deja 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 estudiante con únicamente conocimiento básico del lenguaje, no de programación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*
-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 */

Punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:

  • Si es lenguaje C <code lang="c">Código en C</code>
  • Si es lenguaje Pascal <code lang="pascal">Aquí dentro el código de Pascal</code>.

De esta manera el código coloreas el código.

Deja un comentario

Suscribirse a los comentarios.