int main()
{
	// cria matriz com N vértices
	int grafo[N][N];
	int visitados[N];
	int trajecto[N];

	// inicializa matriz
	inicializaMatriz(grafo);
	criaAresta(grafo, 0, 1, 10);
	criaAresta(grafo, 1, 2, 5);
	criaAresta(grafo, 2, 0, 3);
	criaAresta(grafo, 0, 3, 7);
	criaAresta(grafo, 2, 3, 20);
	criaAresta(grafo, 3, 4, 12);
	criaAresta(grafo, 1, 5, 3);
	criaAresta(grafo, 3, 5, 0);
	criaAresta(grafo, 5, 4, 1);
	criaAresta(grafo, 3, 1, 5);
	criaAresta(grafo, 1, 0, 6);

	//imprime(grafo);
	inicializaArray(visitados);
	visitaProfundidade(grafo, visitados, 0);
	printf("\n");

	inicializaArray(visitados);
	if (haCaminho(grafo, 0, 4, visitados))
		printf("Ha caminho de %d para %d\n", 0, 4);
	else printf("Nao ha caminho de %d para %d\n", 0, 4);

	caminhos(grafo, 0, 5, trajecto, 0, 0);
}
Example #2
0
int main(int argc, char **argv) {

    int numVert = atoi(argv[1]), i;

    matriz = (int **) malloc(sizeof(int *) * numVert);
    for(i = 0; i < numVert; i++) {
        matriz[i] = (int *) malloc(sizeof(int *) * numVert);
    }

    inicializaMatriz(numVert);
    imprimeMatrizArquivo(argv[1]);
}
Example #3
0
int main(int argc, char *argv[]){

    // Inicializa matriz e a posição central do cursor

    textbackground(CORFUNDO);
    inicializaMatriz(m);
    posLin = (int)TAM_MATRIZ/2;
    posCol = (int)TAM_MATRIZ/2;
    int tecla;

    // Inicia a lógica do jogo

    while(1){

        imprimeMatriz(m);
        destaca(posLin,posCol);
        imprimeStatus();
        if(pontuacao == 1)
            imprimeFimdejogo;

        if(fimDeJogo)
            imprimeFimdejogo();


        tecla = getch();

        if(tecla == DIRECIONAL){

            switch(getch()){
                case CIMA:     moveCursor(CIMA);       break;
                case DIREITA:  moveCursor(DIREITA);    break;
                case BAIXO:    moveCursor(BAIXO);      break;
                case ESQUERDA: moveCursor(ESQUERDA);   break;
            }
        }
        else {
            switch(tecla){
                case ENTER:     verifica(); break;
                case ESPACO:    sugestao(); break;
                case ESC:       return;
            }
        }
        gotoxy(TAM_MATRIZ*2+1,TAM_MATRIZ);

    }


    return 0;
}
Example #4
0
int main(){
    
    int m[TAMANHO][TAMANHO],isRepetido=0,somas[TAMANHO+1][2];
    //somas: [*][0] = linhas | [*][1] = colunas
    //A ultima linha e' utilizada para guardar as somas das diagonais;
    leMatriz(m);

    
    system("cls");
        inicializaMatriz(somas);
    printf("    M:\n\n          ");
    int i,j;
    for(i=0;i<TAMANHO;i++){
        for(j=0;j<TAMANHO;j++){
            printf("%06d   ",m[i][j]);
            
            somas[i][0] = somas[i][0]+m[i][j]; //Faz a soma das linhas
            somas[j][1] = somas[j][1]+m[i][j]; //Faz a soma das colunas
            
            if(i==j){   //Diagonal Principal
                somas[TAMANHO][0]=somas[TAMANHO][0]+m[i][j];
            }
            if(i==((TAMANHO-1)-j)){   //Diagonal Secundaria
                somas[TAMANHO][1]=somas[TAMANHO][1]+m[i][j];
            }
        }
        printf("\n          ");
    }
    
    int isMagico = verificaResultados(somas,m);
    if (isMagico==1){
        printf("\n\nA matriz digitada e' um quadrado magico!\n\n");
    }else{
        printf("\n\nA matriz digitada nao e' um quadrado magico!\n\n");
    }
    system("pause");
}
Example #5
0
int main(){
    
    srand((unsigned int)time(NULL));

    punto * puntos = (punto *)malloc(N*sizeof(punto));
    punto * distancias = (punto *)malloc(N*sizeof(punto)); 
    punto c1;
    punto c2;

    inicializaMatriz(puntos);
    c1.x = ((double)rand()/(double)(RAND_MAX));
    c1.y = ((double)rand()/(double)(RAND_MAX));
    c2.x = ((double)rand()/(double)(RAND_MAX));
    c2.y = ((double)rand()/(double)(RAND_MAX));
    
    double sumC1x=-1;
    double sumC1y=-1;
    double sumC2x=-1;
    double sumC2y=-1;
    double nC1 = 0.0;
    double nC2 = 0.0;

    int acabo = 0; 

    printf("\n");
	int i = 0;
    while(acabo==0){
	//for(;i<260;i++){
        int i = 0;
		sumC1x = 0;
		sumC1y = 0;
		sumC2x = 0;
		sumC2y = 0;
		nC1 = 0;
		nC2 = 0;
		#pragma omp parallel for private(i)
        for(i=0;i<N;i++){
            double distanciaC1 = dist((puntos+i)->x,(puntos+i)->y,c1.x,c1.y); 
            double distanciaC2 = dist((puntos+i)->x,(puntos+i)->y,c2.x,c2.y); 
			#pragma omp critical
			{
	            if(distanciaC1 < distanciaC2){
                	sumC1x += ((puntos+i)->x);
            	    sumC1y += ((puntos+i)->y);
        	        nC1++;
    	        }else{
            	    sumC2x += ((puntos+i)->x);
        	        sumC2y += ((puntos+i)->y);
    	            nC2++;
	            }
			}
        }
        sumC1x /= nC1;
        sumC1y /= nC1;
        sumC2x /= nC2;
        sumC2y /= nC2;
    	if(dist(sumC1x,sumC1y,c1.x,c1.y) < E || dist(sumC2x,sumC2y,c2.x,c2.y) < E){
			acabo = 1;
		}
		
		//printf("C1(%f,%f)\n", c1.x, c1.y);
	    //printf("C2(%f,%f)\n", c2.x, c2.y);
    	//printf("==============================\n");
		
		c1.x = sumC1x;
		c1.y = sumC1y;
		c2.x = sumC2x;
		c2.y = sumC2y;
    }
	
    printf("=========================\n");
    printf("= C1(%f,%f) =\n", c1.x, c1.y);
    printf("= C2(%f,%f) =\n", c2.x, c2.y);
    printf("=========================\n");
    
	free(puntos);
	free(distancias);

    return 0;
}