funcp compila(FILE *f) { int i; unsigned char prologo_inicio[4]; unsigned char prologo_fim[2]; Lines linhas; for(i = 0; i < 50; i++) { linhas.linha[i] = 0; linhas.indexif[i] = 0; linhas.linhaif[i] = 0; linhas.argsif[i] = -1; } linhas.gerouif = 0; linhas.idxlinhaif = 0; linhas.idxargsif = 0; linhas.idxret = 0; Memory* block = start(); preenche_prologo(prologo_inicio, prologo_fim); insere(block, prologo_inicio, 4, &linhas, -1); parser(block, f, &linhas); preenche_resto(&linhas, block); insere(block, prologo_fim, 2, &linhas, -1); debug(block); finaliza(block); return (funcp)block->finalcode; }
int main(int argc, char** argv) { int i, j; int numeroDeVizinhos; int myRank; int source; int tag = 50; int pai[numeroDeTarefas]; int contador[numeroDeTarefas]; int reached[numeroDeTarefas]; int id; int origem; MPI_Status status; MPI_Init (&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myRank); numeroDeVizinhos = contaNumeroDeVizinhos(myRank); for (i=0; i<numeroDeTarefas; i++) { pai[i] = 0; contador[i] = 0; reached[i] = 0; } reached[myRank] = 1; for (i=0; i<numeroDeTarefas; i++) { if(matrizVizinhanca[myRank][i] == 1) MPI_Send(&myRank, 1, MPI_INT, i, tag, MPI_COMM_WORLD); } while (!finaliza(contador, numeroDeVizinhos, myRank)) { MPI_Recv(&id, 1, MPI_INT, MPI_ANY_SOURCE, tag, MPI_COMM_WORLD, &status); origem = status.MPI_SOURCE; contador[id]++; if(reached[id]==0) { reached[id]=1; pai[id]=origem; for(j=0; j<numeroDeTarefas; j++) if(matrizVizinhanca[myRank][j]==1 && j!=pai[id]) MPI_Send(&id, 1, MPI_INT, j, tag, MPI_COMM_WORLD); } if(contador[id] == numeroDeVizinhos) if(pai[id]!=0) MPI_Send(&id, 1, MPI_INT, pai[id], tag, MPI_COMM_WORLD); } printf("Processo %d: Elementos conectados: ", myRank); for(i=0; i<numeroDeTarefas; i++) if(contador[i] != 0) printf("%d", i); printf("\n"); fflush(stdout); MPI_Finalize(); }
void troca(char* text, char* encript){ int i=0; while (i <= strlen(text)-1){ testa1(text, encript, &i); testa2(encript, &i); i++; } finaliza(encript, &i); }
int exclui(char* str, char* strr){ int i = 0,e = 0; while ( i <= strlen(str)-1 ){ se(str, &i); recebe(strr, str, e, i); i++; e++; } finaliza(strr, e); }
void troca (char *texto, char *codificado) { int i = 0; while (i <= strlen (texto) - 1) { testa1 (texto, codificado, &i); testa2 (codificado, &i); i++; } finaliza(codificado, &i); }
int interface_stdin( void ) { no *T = malloc(sizeof(no)); if ( T ) inicializada(T) = 0; char c; /* comando dentre {i, r, b} */ int v, /* parametro da {insercao, remocao, busca} */ i=0, j=0; /* controle do buffer, para nao repetir strings * i: indica numero de comandos {i, r, b} chamados, * j: indica o numero de impressoes. * Portanto, sempre deve valer i=j. */ do { scanf("%c", &c); switch (c) { case 'i': scanf("%d", &v); T = inserir(T, v); i++; /* um comando executado implica i <- i + 1, * comentarios posteriormente suprimidos. */ break; case 'r': scanf("%d", &v); T = balancia(remover(T, v)); i++; break; case 'b': scanf("%d", &v); i++; break; } if ( c == 'i' || c == 'r' || c == 'b' ) printf("%c %d\n", c, v); /* j eh o numero de iteracoes, que deve ser concordante com i, * senao, j sera decrementado posteriormente e nada sera impresso. */ j++; /* previne impressoes duplicadas. */ if ( i != j ) j--; /* Se o comando for {insercao, remocao}, imprime a arvore */ else if ( c != 'b' ) { escreve(T, PRE_ORDER); printf("\n"); /* Se o comando for de busca, imprime os no's percorridos. */ } else imprime_lista(busca(T, calloc(AVL_ALTURA_MAX, sizeof(int)), v)); } while ( c != 'q' && !feof(stdin) ); finaliza(T); /* Destroi T. */ return EXIT_SUCCESS; }
void aptidao(int origem, int destino) { int i=0, j=0, k=0, no1=0,no2=0, custo=0, custo_tot; pulos=0; for(i=0; i<indiv; i++) { no1 = origem; rota_sel[0]=origem; if(custo_total[i] != 0) { custo = custo_tot = pulos = 0; for(j=1; j<gene; j++) { no2=no[i][j]; custo = nos_ligados(no1,no2); if(custo ^ 0) { rota_sel[j]=no2; custo_tot += custo; pulos++; } else break; if(no2 == destino) { if(custo_tot < melhor_rota[gene]) { for(k=0; k<gene; k++) melhor_rota[k] = rota_sel[k]; melhor_rota[gene] = custo_tot; melhor_rota[gene+1] = pulos; } } no1 = no2; } } } if(geracao == num_ger) finaliza(destino); }
void main(){ int opcao; tFila disciplinas; // inicializa a fila inicializa(&disciplinas); do{ menu(&opcao); switch(opcao){ case 1:insereDisciplina(&disciplinas);break; case 2:excluiDisciplina(&disciplinas);break; case 3:imprimeAllDisciplina(&disciplinas);break; case 4:verificaDisciplina(&disciplinas);break; case 5:esvaziarDisciplina(&disciplinas);break; case 6:pesquisaAvancada(&disciplinas);break; case 0:finaliza();break; default:printf("\n\n\t\tOpcao invalida!");fflush(stdin);getchar(); } } while(opcao != 0); }
int interface_arquivo(FILE *fp) { if ( !fp ) return EXIT_FAILURE; no *T = malloc(sizeof(no)); if ( T ) inicializada(T) = 0; char comando, /* comando dentre {i, r, b} */ *linha = malloc(256 * sizeof(char)); /* linha que contem o `comando' e o `valor' */ int valor; /* parametro do comando */ do { fgets(linha, 16, fp); if ( !interpreta_linha(linha, &comando, &valor) || feof(fp) ) comando = 'q'; if ( comando != 'q' ) printf("%c %d\n", comando, valor); switch (comando) { case 'i': T = inserir(T, valor); break; case 'r': T = balancia(remover(T, valor)); break; /* Comando `b' (busca) eh tratado posteriormente ao final da iteracao, * pois a arvore nao eh impressa. */ } if ( comando != 'q' && comando != 'b' ) { /* Se o comando nao for para sair, imprime a lista */ escreve(T, PRE_ORDER); printf("\n"); } else if ( comando == 'b' ) /* Se o comando for de busca, imprime os no's percorridos. */ imprime_lista(busca(T, calloc(AVL_ALTURA_MAX, sizeof(int)), valor)); } while ( comando != 'q' ); finaliza(T); /* Destroi T. */ return EXIT_SUCCESS; }
void main(){ //declaraciones de variables a usar dentro del main int tablero[MAX],p1[MAX],p2[MAX],din_p2=100; int i,avance1=0,avance2=0,din_p1=100,jugada,jug,ronda=1,fin=0,dado,carcel1=0,carcel2=0; char op; srand(time(NULL)); for(i=0; i<MAX ; i++) //inicializamos el tablero en 0 tablero[i]=0; generar(tablero,MAX); printf("\t\t\t\t*************\n\t\t\t\t*Bienvenidos*\n\t\t\t\t*************\n"); printf("\t\t\t\t *MONOPOLIO*\n\n"); do{ mostrar(tablero,MAX); printf("\n\nRONDA %d\n",ronda); //ronda es el numero de lanzamientos que realizan los jugadores printf("\n\nPlayer 1\tPresione cualquier tecla para lanzar los dados\n"); //jugador 1 op=getch(); if(op!=27){ //si el jugador presiona la tecla esc sale del programa if(carcel1<1){ dado=lanzar_dado(); //lanza los dados avance1=avance1 + dado; //el jugador avanza segun el resultado del dado printf("el resultado fue %d\n",dado); //imprime el resultado del dado if(avance1>39){ //si el jugador avanza mas de 39 (limite del arreglo) continua desde 0 y se incrementa el saldo en 100 avance1=avance1%39; din_p1+=100; } jug=tablero[avance1]; //jug contiene el resultado de la casilla donde cayo el jugador jugada=obtener_jugada(jug); //jugada determina el tipo de jugada mostrar_jugada(jugada,jug); //muestra al jugador el contenido de la casilla y el tipo de jugada getch(); carcel1=esta_en_la_carcel(jugada); //si cae en la carcel entonces carcel=2(numero de turnos que perdera) if(carcel1==2) din_p1-=100; //disminuye el saldo en 100 din_p1=din_p1+pago_o_cobro(jug,jugada); //aumenta o disminuye el saldo avance1=avance1 +avanza_o_retrocede(jug,jugada); //avanza o retrocede segun sea la jugada if(avance1>39){ //valida el avance para que si sobrepasa el limite del arreglo continue desde el inicio avance1=avance1%40; din_p1+=100; //al pasar por inicio aumenta el saldo en 100 } if(avance1<0) //si retrocede antes del inicio, el jugador se queda en el inicio avance1=0; } else{ printf("el resultado fue 0\n"); //si esta en la carcel se lo sanciona con lanzamientos en cero carcel1--; } printf("player 1 en %d\n",avance1); //muestra la posicion del jugador luego de la ultima jugada printf("saldo player 1= %d\n",din_p1); //muestra el saldo fin=finaliza(din_p1,ronda,op); //verifica las condiciones que finalizan el juego //jugador 2 if(fin!=1){ // si el jugador 1 presiono esc en ese instante finaliza el juego printf("\n\nPlayer 2\tPresione cualquier tecla para lanzar los dados\n"); op=getch(); if(op!=27){ if(carcel2<1){ dado=lanzar_dado(); avance2=avance2 + dado; printf("el resultado fue %d\n",dado); if(avance2>39){ avance2=avance2%40; din_p2+=100; } jug=tablero[avance2]; jugada=obtener_jugada(jug); mostrar_jugada(jugada,jug); getch(); carcel2=esta_en_la_carcel(jugada); if(carcel2==2) din_p2-=100; din_p2=din_p2+pago_o_cobro(jug,jugada); avance2=avance2 +avanza_o_retrocede(jug,jugada); if(avance2>39){ avance2=avance2%40; din_p2+=100; } if(avance2<0) avance2=0; } else{ printf("el resultado fue 0\n"); carcel2--; } printf("player 2 en %d\n",avance2); printf("saldo player 2= %d\n",din_p2); fin=finaliza(din_p2,ronda,op); } } } ronda++; //aumenta la cantidad de lanzamientos que han realizado los jugadores if(op==27) //si un jugador presiona esc al momento de lanzar los dados el juego termina fin=1; if(ronda>20) //si ambos jugadores realizan mas de 20 lanzamientos el juego termina fin=1; getch(); }while(fin==0); //el juego continua si ninguna de las condiciones que lo finalizan se cumplen printf("\n\tGAME OVER\nGRACIAS POR JUGAR MONOPOLIO"); //mensaje de despedida getch(); } //FIN DEL JUEGO