Ir ao conteúdo
  • Cadastre-se

Pedro Fernandess

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

Reputação

3
  1. Pessoal alguém poderia me ajudar em uma atividade? *Programa em C contendo função de multiplicação de matrizes esparsas, usando listas para guardar seus elementos. Os elementos não presentes nas listas são 0.
  2. @Lucca Rodrigues Me ajudou bastante, cara!! Entendi certinho o erro agr, mt obrigado!
  3. @devair1010 Entendi melhor... Poderia informar quais mudanças eu deveria fazer no código para obter sucesso?
  4. O código, como está, está preenchendo com valores aleatórios. Porém, preciso que sejam preenchidos com números aleatórios SEM repetição. O código de gerar números aleatórios sem repetição está comentado no meio do código. Quando tento juntar no código principal, dá segmentation fault. Alguém pode me ajudar? O código, como está, está preenchendo com valores aleatórios. Porém, preciso que sejam preenchidos com números aleatórios SEM repetição. O código de gerar números aleatórios sem repetição está comentado no meio do código. Quando tento juntar no código principal, dá segmentation fault. Alguém pode me ajudar? #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int linA = 3; int colA = 3; int x, y; float A[linA][colA]; // int p = 0, q, vet[10]; // int equi; srand(time(NULL)); // Gera matriz A printf("\n GERANDO MATRIZ A \n\n"); for(x = 0;x < linA; x++) { for(y = 0;y < colA; y++) { // printf("A[%d][%d] = ", x+1,y+1); A[x][y] = rand() % 15; /* // Sorteia valores de 0 a 15 e os armazena em um vetor do{ vet[p] = rand() % 15; equi = 0; // Impede que valores repetidos sejam armazenados for(q = 0; q < p; q++) { if(vet[q] == vet[p]) equi = 1; } if(equi == 0) p++; } while(p < 10); A[x][y] = vet[p]; */ } } /* printf("== Numeros sorteados (sem repeticao) ==\n\n"); for(p = 0; p < 10; p++) { printf(" %i ", vet[p]); } */ // Imprime matriz A printf("\n MATRIZ A \n\n"); for(x = 0; x < linA; x++) { for(y = 0; y < linA; y++) { if(y !=(colA - 1)) printf("|%.2f \n", A[x][y]); else printf("|%.2f \n", A[x][y]); } } printf("\n\n"); return 0; }
  5. //Programa de multiplicacao de 2 matrizes (A e B), gerando o resultado em uma matriz C //Aloquei a matriz, a retornei via funcao e depois chamei desaloquei(free), //de acordo com o raciocinio falado aqui no site. porém recebo 'segmentation fault'. //alguém pode me ajudar? #include <stdio.h> #include <stdlib.h> #include <time.h> float **multiplicaMatriz(int linA, int colA, int linB, int colB); void desalocaMatriz(float **C, int nlinhas); int main(void) { int linA, colA, linB, colB; float **C; int i; int j; printf("\n\nInforme o numero de linhas para a matriz A = "); scanf("%d", &linA); printf("\nInforme o numero de colunas para a matriz A = "); scanf("%d", &colA); printf("\nInforme o numero de linhas para a matriz B = "); scanf("%d", &linB); printf("\nInforme o numero de colunas para a matriz B = "); scanf("%d", &colB); if(colA != linB) { printf("\n\nATENCAO: O produto das matrizes informadas não eh possível!\n"); printf("Isso acontece pois o numero de colunas da matriz A eh diferente do numero de linhas da matriz B.\n\n"); exit(0); } C = multiplicaMatriz(linA, colA, linB, colB); for(i = 0; i < linA; i++) { for(j = 0; j < colB; j++) { printf("%f\n", C[i][j]); } } desalocaMatriz(C, linA); return 0; } float **multiplicaMatriz(int linA, int colA, int linB, int colB) { int i; int x, y, a1, a2; float temp; float A[linA][colA]; float B[linB][colB]; // float C[linA][colB]; float **C = (float **) malloc(sizeof(float *) * linA); // Gera matriz A printf("\n GERANDO MATRIZ A \n\n"); for(x = 0;x < linA; x++) { for(y = 0;y < colA; y++) { printf("A[%d][%d] = ", x+1,y+1); A[x][y] = rand() % 15; } } // Gera matriz B printf("\n GERANDO MATRIZ B \n"); for(x = 0;x < linB; x++) { for(y = 0;y < colB; y++) { printf("B[%d][%d] = ", x+1,y+1); //scanf("%f", &B[x][y]); B[x][y] = rand() % 15; } } // Imprime matriz A printf("\n MATRIZ A \n\n"); for(x = 0; x < linA; x++) { for(y = 0; y < linA; y++) { if(y !=(colA - 1)) printf("|%.2f \n", A[x][y]); else printf("|%.2f \n", A[x][y]); } } printf("\n\n"); // Imprime matriz B printf("\n MATRIZ B \n\n"); for(x = 0; x < linB; x++) { for(y = 0; y < linB; y++) { if(y !=(colB - 1)) printf("|%.2f \n", B[x][y]); else printf("|%.2f \n", B[x][y]); } } for(a1 = 0; a1 < linA; a1++) { for(a2 = 0; a2 < colB; a2++) { temp=0.0; for(x = 0; x < colA; x++) { temp = temp+A[a1][x]*B[x][a2]; } C[a1][a2] = temp; } } printf("\n \n"); printf("\n MATRIZ C = A x B \n \n"); for(x = 0; x < linA; x++) { for(y = 0; y < colB; y++) { if(y!=(colB-1)) { printf("%.2f \t",C[x][y]); } else { printf("%.2f \n",C[x][y]); } } } /* Aloca matriz C */ printf("Alocando matriz C"); for(i = 0; i < linA; i++) { C[i] = (float *) malloc(sizeof(float) * colB); } return C; } void desalocaMatriz(float **C, int nlinhas) { int i; for(i = 0; i < nlinhas; i++) { free(C[i]); } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!