1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

matrizes esparsas em C

Discussão em 'Programação' iniciada por guxtin, 30 de Novembro de 2007. (Respostas: 2; Visualizações: 2444)

  1. Ae galera, dá uma ajuda aí, por favor!
    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 pq :/ 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 [​IMG]




    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);
    ?
    Pq 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


    alguém ajude por favor heh
    vlw galera!
     
  2. consegui consertar o erro de Apagar a matriz
    mas essa do arquivo aí tá impossível! hehe
    não sei mesmo o que é :/
     
  3. aee consegui consertar!
    vlw ae.. ajudaram pra kramb! AHUhuAhu:p
    ;*
     

Partilhar esta Página