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);
}
int main()
{
    float *array, num;
    int nElementos;

    nElementos = leerN( "\nIntroduzca el No. de elementos del array de tipo float:  " );
    array = crearArray( nElementos );
    inicializaArray( array , nElementos );
    num= leer( "\n Introduzca un numero:  " );
    seleccionaNumero( array, nElementos, num );

    liberaMemoria( array );
    array = NULL;

    system ("pause");
}
示例#3
0
int main(void) {

     struct timeval inicio, fim;
     tsc_counter tsc1, tsc2;
     long long unsigned int clock;
     double tempo;
	unsigned long count;

     //wurmup
     fft();

     //mede o tempo de execução da funcao f0 (media de NITER repeticoes) 
     gettimeofday(&inicio, NULL);
     RDTSC(tsc1);
	for(count=0;count<NUM_ITERACOES;count++){
     	inicializaArray();
          ordenaBitReverso();
         	fft();
	}

     RDTSC(tsc2);
     gettimeofday(&fim, NULL);
     tempo = (fim.tv_sec - inicio.tv_sec)*1000 + (fim.tv_usec - inicio.tv_usec)/1000; //calcula tempo em milisegundos
     //printf("tempo:%lf",tempo);
     clock = tsc2.int64 - tsc1.int64; //calcula numero de ciclos de CPU gastos
     printf("Tempo FFT : %.1lf(ms) Clocks: %.2e \n", tempo/NUM_ITERACOES, (double)clock/NUM_ITERACOES);
     printf("Clock/tempo: %.2e\n", clock/tempo);
     printf("QtdElementos:%d Threads: %d Peso:%d\n",QTD_ELEMENTOS,QTD_CORES,PESO_THREADS);
     printf("%.1lf\t%.2e\t%.2e\n\n\n",tempo/NUM_ITERACOES,(double)clock/NUM_ITERACOES,clock/tempo);

	//imprimeVetor();

     pthread_exit (NULL);
	return 0;

}
示例#4
0
int main(int argc, char *argv[]) {
    
    struct timeval inicio, fim;
    tsc_counter tsc1, tsc2;
    long long unsigned int clock;
    double tempo;

    
    if(argc < 4) {
        printf("ERRO: informe s quantidade de elementos do FFT, a quantidade de threads e o peso das threads:: <./fft2> <qtdElementos> <qtdThreads> <pesoThreads>\n");
        return -1;
    }
    
    //inicializando valores do algoritmo
    qtdElementos = strtoul(argv[1],NULL,10);
    tamArray = qtdElementos*2 + 1;
    qtdThreads = atoi(argv[2]);
    pesoThreads = atoi(argv[3]);
    
    //printf("sera processada uma fft com Elementos:%lu, Threads:%d, PesoThread:%d\n",qtdElementos,qtdThreads,pesoThreads);
    
    
    //alocando memoria para o vetor de dados
    data = malloc(sizeof(float) * tamArray);
    
    //alocando memoria para threads
    threads = malloc(sizeof(pthread_t) * qtdThreads);
    
    
    //warmup
    inicializaArray();
    ordenaBitReverso();
    fft();
    
    //repete as execucoes para calcular a media
    unsigned long count;
    
    //mede o tempo de execução da funcao f0 (media de NITER repeticoes) 
    gettimeofday(&inicio, NULL);
    RDTSC(tsc1);
    for(count=0;count<NUM_ITERACOES;count++){
        
        inicializaArray();
        //imprimeVetor();
        
        ordenaBitReverso();
        //imprimeVetor();
        
        fft();
    }
    RDTSC(tsc2);
    gettimeofday(&fim, NULL);
    tempo = (fim.tv_sec - inicio.tv_sec)*1000 + (fim.tv_usec - inicio.tv_usec)/1000; //calcula tempo em milisegundos
    //printf("tempo:%lf",tempo);
    clock = tsc2.int64 - tsc1.int64; //calcula numero de ciclos de CPU gastos
    //printf("Tempo FFT : %.1lf(ms) Clocks: %.2e \n", tempo/NUM_ITERACOES, (double)clock/NUM_ITERACOES);
    //printf("Clock/tempo: %.2e\n", clock/tempo);
    //printf("QtdElementos:%lu Threads: %d Peso:%d\n",qtdElementos,qtdThreads,pesoThreads);
    
    printf("%lu\t%d\t%d\t%.1lf\t%.2e\t%.2e\n",qtdElementos,qtdThreads,pesoThreads,tempo/NUM_ITERACOES,(double)clock/NUM_ITERACOES,clock/tempo);
    
    //imprimeVetor();
    
    //liberando a memoria
    free(threads);
	free(data);
    
    pthread_exit (NULL);
    return 0;

}