Example #1
0
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;
}
Example #2
0
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);
}
Example #5
0
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;
}
Example #7
0
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);
}
Example #8
0
File: main.c Project: glaydston/ed
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;
}
Example #10
0
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