コード例 #1
0
ファイル: micro.c プロジェクト: Ensehn/micro_parser
int main(int argc, char *argv[]) {
	/* Para debug */ // argc=3;argv[1]="prueba.txt";argv[2]="salida.txt";
	if (argc == 3)
		printf("Los argumentos son: %s %s\n\n", argv[1], argv[2]);
	else if (argc > 3) {
		printf("ERROR: Demasiados argumentos\n\n");
		return 1;
	} else {
		printf("ERROR: Se esperan dos archivo de texto como argumento.\n\n");
		return 2;
	}

	stream = fopen(argv[1], "r");
	output = fopen(argv[2], "w");

	inicializarDiccionario(tabla_simb);
	agregarPalabrasReservadas(tabla_simb);

	objetivo();

	fclose(stream);
	fclose(output);

	printf("\nFinalizo el archivo con %d errores.\n", errores);

	/* Para debug */ //graficarDiccionario(tabla_simb);
	return 0;
}
コード例 #2
0
/*
  Algoritmo Backtracking.
  
  1.
  2.   Candidatos <- {1, 2, ..., n}
  3.   for i in Candidatos
  4.      Candidatos <- Candidatos \ {i}
  5.      backtrack(Candidatos)
  6.      Candidatos <- Candidatos U {i}
*/
int backtracking(unsigned int inicio)
{
  if (!objetivo(inicio))
    return 0;
  
  unsigned int i;  
  for (i = inicio; i < VERTICES->tamanho; i++)
    {
      troca(&VERTICES->C[i], &VERTICES->C[inicio]);
      
      if (!backtracking(inicio + 1))
	return 0;

      troca(&VERTICES->C[i], &VERTICES->C[inicio]);
    }

  return 1;
}