Codigo de Grafico de Tortuga en lenguage de Programacion C.
Luis Angel Cariño BravoApuntes14 de Octubre de 2018
8.662 Palabras (35 Páginas)505 Visitas
CODIGO DE TIB.C
#include
#include
#include
void mostrarM(void);//se declarael prototipo de la funcion que realizaremos para mostrar el menu de comandos de la tortuga//
void printmovs(int *,int *,int);
void *gestmem(int); //el prototipo de la funcion para poder gestionar o reservar memoria para nuestra estructura//
void tortuga(int *,int **,int,int *); //el prototipo de nuestra funcion de tortuga//
void vD(int *); //el prototipo para saber la derccion que tendra nuestra tortuga//
void vI(int *); //el prototipo para saber la derccion que tendra nuestra tortuga//
void avanza(int **,int,int,int *,int *,int);//el prototipo para realizar los comandos en la tortuga//
void imprime(int **); //prototipo de la funcion para imprimir la matriz de la tortuga//
void playTortuga(void); //prototipo de la funcion para leer comandos ingresados de la tortuga//
int main(void){//funcion principal del prgorama//
int n;//se declra un entero para la opcion de continuar o terminar el programa//
do{//se utiliza un ciclo para realizar el programa hasta que el usuario ingrese el centinela//
playTortuga(); //se manda a llamar la funcion para validar las opciones de comando que ingrese el usuario//
system("cls"); //es una funcion para limpia la pantalla //
printf("¿DESEA INTENTAR DE NUEVO?\n");//se pregunta si desea realizarlo nuevamente//
printf("0.-NO.\n1.-SI.\n");//son los valores para salir o para intentar nuevamente//
scanf("%d",&n);//se lee el dato para saber si continua o desea salir del programa//
} while(n!=0);//se coprueva la vandera para continuar o salir del programa//
return 0;//final de la funcion principal//
}
//esta funcion lee y valida los comnandos ingresados para realizar en nuestra tortuga//
void playTortuga(void){
int m=0,j=0,a,cont=0,n,i;//se declaran y se inicializan las variales las cuales ocuparemos para la funcion//
int **ARRAY,*comando,*desplazamiento; //se declara el areglo de apuntadores para nuestra matriz y dso arreglos para almacenar comandos y movimientos de la tortuga//
ARRAY=(int **) gestmem(sizeof(int *)*50);//se llama a la funcion para reservar memoria para ARRAY//
for(a=0;a<50;a++){//se utiliza un ciclo de 1 a 50 para reservar memoria//
*(ARRAY+a)=(int *)gestmem(sizeof(int)*50);//se manda a llamar la funcion para gestionar memoria para nuestro arreglo de 50//
}
desplazamiento=(int *)malloc (sizeof (int)*100);//se llama a nuestra funcion para reservar memoria para nuestro desplazamiento//
comando=(int *) malloc(sizeof(int)*100);//se llama a nuestra funcion para reservar memoria para nuestros comanos//
do{ //se crea un ciclo para que continue validando comandos hasta que se ingrese el valor centinela//
mostrarM();//se llama a la funcion para poder mostrar en pantalla nuestro menu de comandos//
do{//se crea un ciclo para validar que los comandos ingresados //
printf("\n INGRESE COMANDO: \n");//se imprime en pantalla para pedirle al usuario que ingrese los comandos//
scanf("%d",&m);//se lee el comando ingresado//
if(m==10){//se evalua si el comando es igual a 10//
m=5;//si el comando es igual entonces se camvia el valor a 5 por que ambos comandos realizan la misma accion//
}
if(m==5){//se compara la opocion si es para realizar movimientos//
do{//se crea un cilo para pedirle los movimientos de la tortuga//
printf("*");
//printf("\ningrese cuanto desea que se mueva la tortuga\nun numero mayor a 0 y que sea menor a 10:::\n");//se pide al suario la cantida de movimientos que se desplazara la tortuga//
scanf("%d",&n);//se lee la variable para saber la cntidad de movimientos//
if(n>0 && n<11){//se evalua la cantidad que sea menor a n y mayor a n//
*(desplazamiento+cont)=n;//se llama a la funion para realizar los movimientos de la tortuga//
cont++;//se aumenta en uno a nuestro contador de movimientos//
}
}while(n<0 || n>10);//se evalua si elvalor n es mayor a 0 o si en menor a 10//
}
if(m<0 || m<7){//se evalua si el comando es menor a 0 o si es menor a 7//
comando[j]=m;//se agrega el comando a nuestro vector de comandos en la posocion correspondiente//
j++;//se aunmenta el contador en uno//
}
} while(m<1 || m>10 || m==7 || m==8);//se comprueba que el comando este dentro del rango impreso en pantalla si no se repite el ciclo hasta que se ingrese un comando valido
system("cls");//se llama a una funcion para limpiar la pantlla//
}while(m!=9);//se valida el centina para continuar ingresando comandos o salir del ciclo//
tortuga(comando,ARRAY,j,desplazamiento);//se llama a la funcion principal de la tortuga y se le envian los datos//
/*for(i=0;i
printf("%d\n",desplazamiento[i]);//se imprime el valor correspondiente del desplazamiento//
}*/
free(comando);//se libera la mamoria para el vector de comando//
for(a=0;a<50;a++){//se crea un cilo que empieze en 0 y termine en 49//
free(*(ARRAY+a));//se libera la memoria de los apuntadores del arreglo//
}
free(ARRAY);//se libera la mamoria del arreglo//
}
//Es la funcion que muestra el menu de comandos para el usuario//
void mostrarM (){
printf("\t\t\tT.I.B\n\n\n");
printf(" *****************************************************\n");
printf("* MENU DE COMANDOS. *\n");
printf("* 1.-NO TRAZAR MOVIMIENTO. *\n");
printf("* 2.-TRAZAR MOVIMIENTO. *\n");
printf("* 3.-GIRO A LA DERECHA. *\n");
printf("* 4.-GIRO A LA IZQUIERDA. *\n");
printf("* 5.-MOVIMIENTO HACIA ADELANTE. [1-10 POSCICIONES] *\n");
printf("* 6.-MUESTRA LOS MOVIMIENTOS DE LA TORTUGA. *\n");
printf("* 9.-FIN DE DATOS. *\n");
printf("* 10.-MOVIMIENTO HACIA ADELANTE. [1-10 POSCICIONES] *\n");
printf(" ****************************************************\n");
}
//ESTA FUNCON GESTIONA LA MEMORIA Y ANALIZA SI SE REALIZO DICHA ACCION
void *gestmem(int x){
void *ptr; //SE DECLARA UN UN APUNTADOR GENERICO
ptr=malloc(x);//SE PIDE MEMORIA AL SISTEMA
if(ptr==NULL){//ANALIZA SI NO SE GESTIONADO LA MEMORIA
printf("NO SE PUDO REALIZAR ACCION /n");//ALERTA DE QUE NO SE PUDO REALIZAR ACCION
...