Ir ao conteúdo
  • Cadastre-se

matrizes esparsas em C


Psycho

Posts recomendados

Ae galera, dá uma ajuda aí!

Tenho um trabalho da faculdade em q devo implementar matrizes esparsas em C por listas encadeadas e depois criar uma função que imprima a matriz, outra que Leia a matriz de um arquivo, outra que apague os elementos da matriz, outra que Some duas matrizes e outra que multiplique.

Já criei a estrutura, a função q imprime e uma função q insere um elemento (célula) na matriz. Criei também uma função que lê a matriz do arquivo e outra que apaga.

Porém estou tendo 2 problemas

um é na função que lê a matriz do arquivo.. quando coloco ela na main direto:

FILE *arq;

Apontador Aux = Matriz.Primeiro;

char NomedoArquivo [40];

printf("Digite o nome do arquivo:\n");

scanf("%s",NomedoArquivo);

arq = fopen(NomedoArquivo,"r");

fscanf(arq,"%d, %d",&Matriz.tamlinha,&Matriz.tamcoluna);

InicializaMatriz(&Matriz);

while (!feof(arq))

{

fscanf(arq,"%ld, %ld, %lf",&Aux->Linha,&Aux->Coluna,&Aux->Valor);

Insere(Aux->Linha, Aux->Coluna, Aux->Valor, &Matriz);

}

fclose(arq);

ela funciona perfeitamente... mas quando coloco ela como uma função separada:

void LeMatriz (TipoMatriz *M)

{

FILE *arq;

Apontador Aux = M->Primeiro;

char NomedoArquivo [40];

printf("Digite o nome do arquivo:\n");

scanf("%s",NomedoArquivo);

arq = fopen(NomedoArquivo,"r");

fscanf(arq,"%d, %d",&M->tamlinha,&M->tamcoluna);

InicializaMatriz(M);

while (!feof(arq))

{

fscanf(arq,"%ld, %ld, %lf",&Aux->Linha,&Aux->Coluna,&Aux->Valor);

Insere(Aux->Linha, Aux->Coluna, Aux->Valor, M);

}

fclose(arq);

}

ela fica dando segmentation fault!

Não sei porque :/ e já está me dando dor de cabeça isso rsrs

o outro problema é na função Apaga.. ela apaga direito certo algumas matrizes de arquivos.. mas tem arquivos que lê, cria a matriz, apaga ela, mas na hora de imprimir tudo zero, dá erro tb :(

alguém ajude por favor heh

valeu galera!

Link para o comentário
Compartilhar em outros sites

será q o problema de funcionar na main e não como função separada está nas funções

InicializaMatriz(M);

Insere(Aux->Linha, Aux->Coluna, Aux->Valor, M);

?

porque na main eu passo a matriz como &Matriz e aí fora não

mas já tentei de tudo.. passar com & , sem &, com * e sem tb na função e nda dá certo! rsrs

Link para o comentário
Compartilhar em outros sites

  • 9 meses depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...