Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com ponteiro e matriz


DiegoMB

Pergunta

Olá a todos.

Gostaria de pedir para alguém me ajudar a corrigir esse código, pois fiz mais não estou conseguindo corrigir o erro que está dando.

erro gerado pelo programa: segmentation fault (core dumped).

Não sei o que estou fazendo de errado mais creio que seja minha linha que tem "matriz = aloca(m,n)"

O programa esta sendo desenvolvimento no

codeblock 13.12

linux xubuntu

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#include<stdlib.h>
#include<stdio.h>
#include<locale.h>

/*
2- Construa uma função que receba dois parâmetros m e n,
aloque uma matriz de ordem m x n e retorne um ponteiro para
a matriz alocada em tempo de execução. Crie ainda outra
função que receba por parâmetro um ponteiro para matriz e
libere a área de memória alocada. Finalmente, crie um
programa (main) que teste/use as duas funções criadas.
*/

int *aloca(int m, int n);
void liberaEspaco(int **p);

int main(){

setlocale(LC_ALL,"portuguese");

int i=0,j=0,m,n, **matriz;

printf("Informe o número de linhas que deseja em sua matriz:");
scanf("%d",&m);
printf("Informe o número de colunas que deseja em sua matriz:");
scanf("%d",&n);

matriz = aloca(m,n);



for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("Matriz[%d][%d]:",i,j);
scanf("%d",&matriz[j]);
}
}

liberaEspaco(matriz);


system("pause");
return 0;
}

int *aloca(int m, int n){
int *p;
p=(int*)malloc(m*n*sizeof(int));
}

void liberaEspaco(int **p){
free(p);
}


Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
#include<stdlib.h>
#include<stdio.h>
#include<locale.h>

int** aloca ( int LINHAS, int COLUNAS );
void liberaEspaco ( int** matriz, int LINHAS );

int main() {

    setlocale ( LC_ALL, "portuguese" );
    
    int i = 0, j = 0, m, n;
    
    printf ( "Informe o número de linhas que deseja em sua matriz:" );
    scanf ( "%d", &m );
    printf ( "Informe o número de colunas que deseja em sua matriz:" );
    scanf ( "%d", &n );
    
    int** matriz = aloca ( /*linhas*/m, /*por colunas*/n );
    
    for ( i = 0; i < m; i++ ) {
        for ( j = 0; j < n; j++ ) {
            printf ( "Matriz[%d][%d]:", i, j );
            scanf ( "%d", &matriz[i][j] );
        }
    }
    
    printf("\n");
    for ( i = 0; i < m; i++ ) {
        for ( j = 0; j < n; j++ ) {
            printf ( "M[%d][%d]= %d\n", i, j, matriz[i][j] );
        }
        printf("\n");
    }
    liberaEspaco ( matriz, /*linhas*/m );
    
    
    system ( "pause" );
    return 0;
}

int** aloca ( int LINHAS, int COLUNAS ) {
    int i;
    int** matriz = ( int** ) malloc ( LINHAS*sizeof(int) );
    for (i=0;i<LINHAS;i++){
        matriz[i] = (int*) malloc (COLUNAS*sizeof(int));
    }
    return matriz; 
}

void liberaEspaco ( int** matriz, int LINHAS ) {
    int i;
    for (i=0;i<LINHAS;i++){
        free ( matriz[i] );
    }
    free(matriz);
}
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...