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); } }
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, " "); } }
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)); }
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..."); }
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; }
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; }