예제 #1
0
파일: gera.c 프로젝트: lucastdcj/tobi
void gera(int pai, int N)
{
    int i,u,v;

    /* escolhe raiz */
    do
    {
        u = 1+(rand()%n);
    } while(foi[u]);
    foi[u] = 1;
    arvore[u] = pai;

    /* fim da recursao */
    if (N == 1) return;

    if (primo[N-1])
    {
        /* escolhe se sao N-1 filhos de peso 1 ou 1 filho de peso N-1 */
        v = rand()%4;
        if (v) gera(u,N-1);
        else for (i = 0; i < N-1; i++)
            gera(u,1);
    }
    else
    {
        /* acha algum fator de N-1 (de 2 a N-2) */
        do
        {
            v = 2+(rand()%(N-3));
        } while ((N-1)%v > 0);
        for(i = 0; i < v; i++)
            gera(u,(N-1)/v);
    }
}
예제 #2
0
static void parser(Memory* block, FILE* myfp, Lines* linhas) {
	int line = 1;
	int c;
	Stack *pilha = inicializa_pilha();
	while ((c = fgetc(myfp)) != EOF) {
		switch (c) {
			case 'r': { /* retorno */
					  int idx;
					  char var;
					  if (fscanf(myfp, "et %c%d", &var, &idx) != 2)
						  error("comando invalido", line);
					  if (var != '$')
						  checkVarP(var, idx, line);

					  //--//
					  gera(pilha, block, 'r', var, idx, 0, 0, 0, 0, 0, 0, line -1, linhas);

					  printf("ret %c%d\n", var, idx);
					  break;
				  }
			case 'i': { /* if */
					  int idx, n1, n2, n3;
					  char var;
					  if (fscanf(myfp, "f %c%d %d %d %d", &var, &idx, &n1, &n2, &n3) != 5)
						  error("comando invalido", line);
					  if (var != '$')
						  checkVar(var, idx, line);
					  linhas->gerouif = 1;
					  gera(pilha, block, 'i', 0, idx, 0, n1, 0, 0, n2, n3, line - 1, linhas);
					  printf("if %c%d %d %d %d\n", var, idx, n1, n2, n3);
					  break;
				  }
			case 'v': { /* atribuicao */
					  int idx0, idx1, idx2;
					  char var0 = c, var1, var2;
					  char op;
					  if (fscanf(myfp, "%d = %c%d %c %c%d", &idx0, &var1, &idx1, &op,
								  &var2, &idx2) != 6)
						  error("comando invalido", line);
					  checkVar(var0, idx0, line);
					  if (var1 != '$')
						  checkVarP(var1, idx1, line);
					  if (var2 != '$')
						  checkVarP(var2, idx2, line);
					  //--//
					  gera(pilha, block, 'v', var0, idx0, var1, idx1, op, var2, idx2, 0, line -1, linhas);
					  printf("%c%d = %c%d %c %c%d\n", var0, idx0, var1, idx1, op, var2,
							  idx2);
					  break;
				  }
			default:
				  error("comando desconhecido", line);
		}
		line++;
		fscanf(myfp, " ");
	}
}
예제 #3
0
int main()
{
    int quantos = 0;
    int esc, onde, mostra, i;
    srand(time(NULL));

    for (i = 0; i < N_VEZES; i++) {
      esc = gera_todos();
      onde = gera_todos();
      mostra = gera(onde, esc);
      esc = gera(esc, mostra);

      if (esc == onde) quantos++;
    }

    printf ("%f \n", quantos/(N_VEZES * 1.0));
}
예제 #4
0
void menu(void)
{   char opcao;
    do{ printf("\nG - Gerar\nA - Atualizar\nE - Exibir\nS - Sair\n\t: ");
        fflush(stdin);
        scanf("%c",&opcao);    opcao=toupper(opcao);
        if(opcao=='G')  gera();
        else    if(opcao=='A')  atualiza();
                else    if(opcao=='E')  exibe();
    }while(opcao!='S');
    puts("Saindo...");
}       
예제 #5
0
파일: gera.c 프로젝트: lucastdcj/tobi
int main(void)
{
    int i,u,v,bem;
    
    srand(time(NULL));
    criva();
    
    scanf("%d",&bem);
    scanf("%d",&n);
    printf("%d\n",n);

    memset(arvore,0x3f,sizeof(arvore));
    memset(foi,0,sizeof(foi));
    if (bem)
    {
        gera(0,n);
    }
    else
    {
        for(i = 0; i < n; i++)
        {
            do
            {
                u = 1+(rand()%n);
            } while(foi[u]);
            foi[u] = 1;

            if (!i) v = 0;
            else
            {
                do
                {
                    v = rand()%(n+1);
                } while (!foi[v] || u == v);
            }
            
            arvore[u] = v;
        }
    }
    
    /* imprime resultados */
    memset(foi,0,sizeof(foi));
    for(i = 0; i < n; i++)
    {
        do
        {
            u = 1+(rand()%n);
        } while(foi[u]);
        foi[u] = 1;
        printf("%d %d\n",u,arvore[u]);
    }
    
    return(0);
}
int main () 
{  int opcao;
   do{
      printf("Digite:\n1 - Gravar arq1\n2 - Gerar arq2\n3 - Atualizar arq1\n");
      scanf("%d",&opcao);
      if(opcao == 1) grava();
      else
         if(opcao==2)  gera();
         else
            if(opcao==3) atualiza();
     } while(opcao>=1 && opcao<=3);

     system("pause");
     return 0;  
}
예제 #7
0
int main() {  
  int *vetor_aleatorio;
  int *vetor_asc;
  int *vetor_desc;

  vetor_aleatorio = ( int * ) malloc ( T * sizeof(int));
  vetor_asc = ( int * ) malloc ( T * sizeof(int));
  vetor_desc = ( int * ) malloc ( T * sizeof(int));
  
  
  float contador_comparacao = 0;
  float contador_atribuicao = 0;

  int i;
  
  // for(i=0; i<10; i++){
  //   printf("\nGerando os vetores, %d loop Bubble...\n", i+1);
    
  //   gera(vetor_aleatorio, T);
  //   gera_vetor_crescente(vetor_asc, T);
  //   gera_vetor_decrescente(vetor_desc, T);
  //   bubble(vetor_aleatorio, T, &contador_comparacao, &contador_atribuicao);
  //   printf("\nVetor aleatorio: Contador comparacao %.f Contador atribuicao %.f \n", contador_comparacao, contador_atribuicao);

  //   contador_comparacao = 0;
  //   contador_atribuicao = 0;

  //   bubble(vetor_asc, T, &contador_comparacao, &contador_atribuicao);
  //   printf("Vetor crescente: Contador comparacao %.f Contador atribuicao %.f \n", contador_comparacao, contador_atribuicao);

  //   contador_comparacao = 0;
  //   contador_atribuicao = 0;

  //   bubble(vetor_desc, T, &contador_comparacao, &contador_atribuicao);
  //   printf("Vetor decrescente: Contador comparacao %.f Contador atribuicao %.f \n", contador_comparacao, contador_atribuicao);
  // }
  
  // for(i=0; i<10; i++){
  //   printf("\nGerando os vetores, %d loop Inserction...\n", i+1);
    
  //   gera(vetor_aleatorio, T);
  //   gera_vetor_crescente(vetor_asc, T);
  //   gera_vetor_decrescente(vetor_desc, T);
  //   insertionSort(vetor_aleatorio, T, &contador_comparacao, &contador_atribuicao);
  //   printf("\nVetor aleatorio: Contador comparacao %.f Contador atribuicao %.f \n", contador_comparacao, contador_atribuicao);

  //   contador_comparacao = 0;
  //   contador_atribuicao = 0;

  //   insertionSort(vetor_asc, T, &contador_comparacao, &contador_atribuicao);
  //   printf("Vetor crescente: Contador comparacao %.f Contador atribuicao %.f \n", contador_comparacao, contador_atribuicao);

  //   contador_comparacao = 0;
  //   contador_atribuicao = 0;

  //   insertionSort(vetor_desc, T, &contador_comparacao, &contador_atribuicao);
  //   printf("Vetor decrescente: Contador comparacao %.f Contador atribuicao %.f \n", contador_comparacao, contador_atribuicao);
  // }
  
  for(i=0; i<10; i++) {
    printf("\nGerando os vetores, %d loop Selection...\n", i+1);
    
    gera(vetor_aleatorio, T);
    gera_vetor_crescente(vetor_asc, T);
    gera_vetor_decrescente(vetor_desc, T);
    selection(vetor_aleatorio, T, &contador_comparacao, &contador_atribuicao);
    printf("\nVetor aleatorio: Contador comparacao %.f Contador atribuicao %.f \n", contador_comparacao, contador_atribuicao);

    contador_comparacao = 0;
    contador_atribuicao = 0;

    selection(vetor_asc, T, &contador_comparacao, &contador_atribuicao);
    printf("Vetor crescente: Contador comparacao %.f Contador atribuicao %.f \n", contador_comparacao, contador_atribuicao);

    contador_comparacao = 0;
    contador_atribuicao = 0;

    selection(vetor_desc, T, &contador_comparacao, &contador_atribuicao);
    printf("Vetor decrescente: Contador comparacao %.f Contador atribuicao %.f \n", contador_comparacao, contador_atribuicao);
  }
  return 0;
}