int main (){

tipo_elem x;
struct Nodo * pun;
struct encabezado * E;
int n, i,opc;
inicializa (&E);

do{
clrscr();
printf ("...........Menu............\n");
printf ("1-Inserta.....\n");
printf ("2-Suprime.....\n");
printf ("3-Localiza....\n");
printf ("4-Imprime.....\n");
printf ("5-Vacia.......\n");
printf ("6-Anula.......\n");
printf ("7-Salir.......\n");
printf ("Elige una opcion:....\n");
scanf ("%d", &opc);
switch(opc){
	case 1:
		printf ("\nDame numero a insertar.....\n");
		scanf("%d",& x);
		inserta(x,E);
		break;
	case 2:
		printf ("\nDame numero a suprimir.....\n");
		scanf ("%d",& x);
		suprimir(localiza(x,E));
		break;
	case 3:
               printf ("\nDame numero a localizar.....\n");
	       scanf ("%d",& x);
	       pun=localiza(x,E);
	       if(pun==NULL)
			printf("Numero no encontrado");
	       else
			printf("%p\n",pun);
	       getch();
	       break;
	case 4:
		clrscr();
 	    imprime(E);
		getch();
		break;
	case 5:
		if(vacia(E))
			printf("SI");
		else
			printf("NO");
		getch();
		break;
	case 6:
		anula(E);
		printf("La lista fue anulada");
		getch();
		break;
}
} while(opc!=7);
getch();
return 0;
}
/**Função que executa o comando dado o valor retornado na função que identifica que comando foi introduzido pelo utilizador.
 *@param jogo Referencia-se a onde se encontra guardado as dimensões do tabuleiro.
 *@param arg1 Variável onde está guardada o primeiro argumento dado pelo utilizador aquando a introdução do comando.
 *@param arg2 Variável onde está guardada o segundo argumento dado pelo utilizador aquando a introdução do comando.
 *@param comando Refere-se à opção que vai ser executada pelo utilizador.
 *@param argumentos Número de argumentos introduzidos pelo utilizador.
 *@return 1 a 7. Execução de comandos bem sucedida.
 *@return 0. Execução de comandos mal sucedida.
 */
int executa_comando(Tabuleiro jogo, int comando, int argumentos, char * arg1, char * arg2)
{
  switch(comando)
    {
    case 2: /*Se for 2 usa o carrega*/
      if(argumentos == 2) /*Recebe 2 args pois recebe o cr e o tabuleiro tipo ex1(Exemplificar: cr ex1)*/
      {
	 		carrega_tab(jogo, arg1); /*Um argumento pois só precisa do ex1, por exemplo*/
	  		return 0;
      }
      else
      {
	  		return mensagem_de_erro(E_ARGS);
      }
      break;
      
    case 3: /*Se for 3 usa o comando grava*/
      if(argumentos == 2) /*Recebe o gr e o tabuleiro que o utilizador quer*/
      {
	  		grava_tab(jogo, arg1);
	  		return 0;
      }
      else
		{
	  		return mensagem_de_erro(E_ARGS);
		}
      break;
      		
    case 4:
      if(argumentos == 3)
		{
	  		if(testa_inteiro(arg1) && testa_inteiro(arg2))
	    	{
	      	joga(jogo, atoi(arg1), atoi(arg2));
	      	jogo->n_comando++;
	    	}
	  		else
	    	{
	      	mensagem_de_erro(E_INVARGS);
	    	}
		}
      else
		{
	  		mensagem_de_erro(E_ARGS);
		}
      break;
    
    case 5:
      if(argumentos == 1)
		{
	  		estrategia1(jogo);
	  		jogo->n_comando++;
	  		impressao_ecra(jogo);
		}
      else
      {
	  		mensagem_de_erro(E_ARGS);
		}
      break;
      	
    case 6:
      if(argumentos == 1)
		{
	  		estrategia2(jogo);
	  		jogo->n_comando++;
	  		impressao_ecra(jogo);
		}
      else
		{
	  		mensagem_de_erro(E_ARGS);
		}	
      break;
      	
    case 7:
      if(argumentos == 3)
		{
	  		if(testa_inteiro(arg1) && testa_inteiro(arg2))
	    	{
	      	marca(jogo, atoi(arg1), atoi(arg2)); /*atoi significa converter uma string em inteiros*/
	      	jogo->n_comando++;
	    	}
	  		else
	    	{
	      	mensagem_de_erro(E_INVARGS);
	    	}
		}
      else
		{
	  		mensagem_de_erro(E_ARGS);
		}
      break;
      	
    case 8:
      if(argumentos == 1)
		{
	  		estrategia3(jogo);
	  		jogo->n_comando++;
	  		impressao_ecra(jogo);
		}
      else
		{
	  		mensagem_de_erro(E_ARGS);
		}	
      break;
      	
    case 9:
      if(argumentos == 1)
		{
	  		anula(jogo);
		}
      else
		{
	  		mensagem_de_erro(E_ARGS);
		}	
      break;
      	
    case 10:
      if(argumentos == 1)
		{
	  		estrategia4(jogo);
	  		jogo->n_comando++;
	  		impressao_ecra(jogo);
		}
      else
		{
	  		mensagem_de_erro(E_ARGS);
		}		
      break;
      	
    case 11:
      if(argumentos == 1)
		{
	  		estrategia5(jogo);
	  		jogo->n_comando++;
	  		impressao_ecra(jogo);
		}
      else
		{
	  		mensagem_de_erro(E_ARGS);
		}	
      break;
    
    case 12:
      if(argumentos == 1)
		{
	  		resolve(jogo);
	  		jogo->n_comando++;
	  		impressao_ecra(jogo);
		}
      else
		{
	  		mensagem_de_erro(E_ARGS);
		}	
      break;
    }
  return 0;
}
Exemplo n.º 3
0
int main (){
tipo_elem x;
posicion E;
posicion pun;
int n, i,opc;
inicializa (&E);

do{
("sys");
printf ("...........Menu............\n");
printf ("1-Inserta.....\n");
printf ("2-Suprime.....\n");
printf ("3-Localiza....\n");
printf ("4-Imprime.....\n");
printf ("5-Vacia.......\n");
printf ("6-Anula.......\n");
printf ("7-Salir.......\n");
printf ("Elige una opcion:....\n");
scanf ("%d", &opc);
switch(opc){
	case 1:
		printf ("\nDame numero a insertar.....\n");
		scanf("%d",& x);
		inserta(x,(&E.cont+1),&E);
		break;
	case 2:
		printf ("\nDame numero a suprimir.....\n");
		scanf ("%d",& x);
		suprimir(localiza(x,E),&E);
		break;
	case 3:
            printf ("\nDame numero a localizar.....\n");
	       scanf ("%d",& x);
	       pun=localiza(x,E);
	       if(pun==NULL)
			printf("Numero no encontrado");
	       else
			printf("%p\n",pun);
	       getch();
	       break;
	case 4:
        	imprimir(E);
		getch();
		break;
	case 5:
		if(vacia(E))
			printf("SI");
		else
			printf("NO");
		getch();
		break;
	case 6:
		anula(&E);
		printf("La lista fue anulada");
		getch();
                break;
	default:
		printf("Opcion No Valida");
}
} while(opc!=7);
return 0;
}