Red de conocimiento informático - Conocimiento informático - Código fuente del algoritmo de giro a la izquierda

Código fuente del algoritmo de giro a la izquierda

El siguiente programa puede rotar la tortuga en cualquier ángulo. Lo usé para dibujar una estrella de cinco puntas y mi nombre.

La entrada para dibujar una estrella de cinco puntas es:

5, 4

4, 90

5, 19

4, 180

2

5, 38

3, 144

5, 38

3, 144

5, 38

3, 144

5, 38

3, 144

5 , 38

1

Seis

Nueve

La entrada para dibujar mi nombre es:

1

p>

5, 10

4, 90

5, 19

2

4, 180

5, 18

4, 180

5, 9

4, 90

5, 10

3, 90

5, 8

3, 180

5, 16

3, 180

5, 8

4, 90

5, 10

3, 90

5, 9

3, 180

5, 18

1

5, 2

4, 90

5, 20

2

3, 135

5, 4

1

3, 45

5, 4

2

3, 135

5, 4

1

4, 135

5, 16

2

4, 165

5, 10

3, 180

5, 10

1

3, 165

5, 20

3, 90

5, 10

3, 135

5, 1

2

5, 6

3.180

5,3

3,45

5,9

3,180

5, 5

3, 90

5, 3

3, 180

5, 8

3,90

5,6

3.180

5,12

3.180

5, 10

1

4, 90

5, 3

2

4, 90

5, 8

3, 90

5, 9

3, 90

5, 8

3, 90

5, 9

Seis

Nueve

Fuente La El código es el siguiente:

# include ltstdio.h gt

# include ltstdlib.h gt

# include ltassert.h gt

# incluir ltmath.h gt

const int left _bound =-19

const int right _bound = 20

const int up_bound = -19 ;

const int down _bound = 20

bool sea[abajo_bound-up_bound 1][derecha

t_bound-left_bound 1];

pen_descent booleano;

fila flotante, columna;

flotante drow = -1, dcol = 0;

void print_sea()

{

for(int I = arriba _ límite; i lt = abajo _ límite)

{

for(int j = izquierda _ enlazada; j lt= derecha _ enlazadaj )

{

printf(" c " , ((mar[I -arriba _ enlazada][ j-izquierda _ enlazada])? '*': ' '));

}

printf(" \ n "); p>

}

void up_pen()

{

pen_down = 0;

}

void down_pen()

{

pluma _ abajo = 1;

if(pluma abajo amp amp límite superior -0.4 lt;= fila amp amprow lt=límite inferior 0.4 amp; ampleft _bound-0.4 lt;= col amp ampcol lt=límite derecho 0.4)

{

mar[(int )(row-up _ enlazado 0.5)][(int)(col-left _ enlazado 0.5)]= true;

}

}

Girar a la izquierda no válido (grados enteros)

{

Número de coma flotante pi = 3.1415926;

float alpha = deg * pi/180;

float drow _ new = -sin(alfa)* dcol cos(alfa)* drow;

float dcol _ nuevo = sin(alfa)* drow cos(alfa)* dcol;

Drow=Drow_new;

dcol = dcol _ new

}

Giro a la derecha no válido (grado entero)

{

Giro izquierda (-grados);

}

void forward_n(int n)

{

for(int I = 0; i ltn; i )

{

fila = dcol;

col = dcol

if(lápiz hacia abajo y límite superior- 0,4 lt; = fila amp amprow lt=límite inferior 0,4 ampleft _bound-0,4 lt; = col amp ampcol lt=límite derecho 0,4)

{

mar[(int) )(fila arriba _ enlazado 0.5)][(int)(col-izquierda _ enlazado 0.5)]= verdadero;

}

}

}

int main()

{

for(;;)

{

int cmd = 9 ;

scanf(" d ",

ampcmd);

Cambiar (cmd)

{

Caso 1:

up _ pen();

Pausa;

Caso 2:

down _ pen();

Pausa;

Caso 3:

cmd = 90

scanf(", d ", ampcmd);

Girar a la derecha (cmd);

Break; p>Caso 4:

cmd = 90

scanf(", d ", ampcmd

Girar a la izquierda

<); p>Break;

Caso 5:

cmd = 0;

scanf(",d ", ampcmd);

adelante _ n(cmd);

Romper;

Caso 6:

print _ sea();

Romper;

Caso 9:

Devuelve 0;

Valor predeterminado:

Devuelve 1;

}

}

Devuelve 0;

}