int main(int argc, char **argv)
{
    pthread_t thread[NUM_THREADS];
    pthread_attr_t attr;
    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);


    int *AA, *AB, *AC, columns, lines, k, i, j, t; //ponteiro AA AB por que matriz é um endereço de memória
    char *fileName1, *fileName2;
    int rc;
    void *status;
    columns = atoi(argv[1]);
    lines = atoi(argv[2]);
    fileName1 = argv[3];
    fileName2 = argv[4];


    AA = (int *) malloc (sizeof(int) * lines * columns);
    AA = leMatriz(columns,lines,fileName1);
    AB = (int *) malloc (sizeof(int) * lines * columns);
    AB = leMatriz(columns,lines,fileName2);
    AC = (int *) malloc (sizeof(int) * lines * columns);
        for (t=0; t<NUM_THREADS; t++)
    {
        printf("criando thread %ld\n", t);
        thread_data_array[t].id = t;
        thread_data_array[t].AA = AA;
        thread_data_array[t].AB = AB;
        thread_data_array[t].AC = AC;
        thread_data_array[t].columns = columns;
        thread_data_array[t].lines = lines;
        rc = pthread_create(&thread[t], &attr, multiplica, (void *) &thread_data_array[t]);
        if (rc){
            printf("Error ao criar thread e %d\n", rc);
            exit(-1);
        }
    }

    pthread_attr_destroy(&attr);
    for (t=0; t<NUM_THREADS; t++)
    {
        rc = pthread_join(thread[t], &status);
        if (rc){
            printf("Erro join e %d\n", rc);
            exit(-1);
        }
        printf("Completo o Join com thread %d com status %ld\n",t,(long)status);
    }
    printf("Main: program completed. Exiting.\n");
   /* for (i=0; i<columns; i++)
        for (j=0; j<lines; j++)
            printf("matriz %d\n", AC[i*columns + j]);*/
    pthread_exit(NULL);



    return 0;
}
Example #2
0
int main()
{
    int M, N, Test=1;
    int Matriz[MAX][MAX];

    scanf("%d %d", &M, &N);

    while(M>0 || N>0)
    {
        int X=0, Y=0;

        if(Test==1)
            printf("Teste %d\n",Test++);
        else
            printf("\nTeste %d\n",Test++);

        leMatriz(Matriz, M, N);
        leDesloc(&X, &Y);
        Deslocar(Matriz, M, N, X, Y);

        scanf("%d %d", &M, &N);
    }

    return 0;
}
Example #3
0
Instancia::Instancia(char *arquivo) {

	// Preparação
	FILE *fd = fopen(arquivo,"r");
	if(!fd)
	{
		printf("File %s not found.\n",arquivo);
		qtd_maquinas = qtd_tarefas = 0;
	}

	int lixo;
	int rc = 0;
	
	rc = fscanf(fd,"%d%d%d",&qtd_tarefas,&qtd_maquinas,&lixo);
	if(rc == 0)
	{
	    printf("Erro de leitura");
	    exit(0);
	}
	if(lixo != 1)
	{
		printf("A instancia %s tem o terceiro parametro diferente de 1.\n",arquivo);
		exit(0);
	}
	rc = fscanf(fd,"%d",&lixo);
	if(rc == 0)
	{
	    printf("Erro de leitura");
	    exit(0);
	}

	// Leitura propriamente dita.
	lePij(fd);
	leMatriz(fd,(char*)"RSSDMIN");
	leMatriz(fd,(char*)"RSSDMAX");
	leMatriz(fd,(char*)"SSDMIN");
	leMatriz(fd,(char*)"SSDMAX");

	fclose(fd);
}
Example #4
0
// Inicializa o grafo
void inicializaGrafo(FILE * arquivo, Grafo * G){
    int num;


   leMatriz(arquivo, &(G->matrizAdj)); // Lê matrizes do arquivo e as insere na variável de matrizAjd

   G->N = G->matrizAdj.col;  // Atribui a quantidade N de cidades no grafo

   G->Vol = (int *) malloc (G->N * sizeof(int));

   for (int i = 0; i < G->N; i++){
        fscanf(arquivo,"%d ",&num);
        G->Vol[i] = num;
   }

};
Example #5
0
int main(int argc, char *argv[]) {

	int dimensao, primeira, segunda;
	int *n;
	int **m;
	char *nome;
	nome = readLine();

	m = leMatriz(nome, n);
	primeira = soma1(m, *n);
	segunda = soma2(m, *n);

	max(primeira, segunda);
	liberaMatriz(m, *n);

	free(nome);

	return 0;
}
Example #6
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");
}