Ir ao conteúdo
  • Cadastre-se

Matriz com ponteiros


rs40

Posts recomendados

Boa noite,

Estou tentando criar uma matriz usando ponteiros e esta dando erro nesta linha:

vetor= malloc( linhas * colunas * sizeof(int) );

segue o código do programa


#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int linhas, colunas, i;
int *vetor, **matriz;

printf("\nDigite o numero de linhas e colunas: ");
scanf("%d,%d",&linhas,&colunas);

vetor= malloc( linhas * colunas * sizeof(int) );
*matriz= malloc( linhas * sizeof(int) );

for(i=0;i<linhas;i++)
matriz[i]= &vetor[ i * colunas];

//mostrar a matriz
for (linhas=0; linhas<3; linhas++)
{
for (colunas=0; colunas<3; colunas++)
{
printf("%d", mat[linhas][colunas]);
}
printf("\n");
}

system("pause");

free(vetor);
free(matriz);
return 0;
}

Alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

Tente fazer o typecast:


vetor = (int *) malloc( linhas * colunas * sizeof(int) );

PS: Não esqueça de corrigir a linha:


printf("%d", matriz[linhas][colunas]);

PS 2: Para alocar o espaço na matriz, faça assim:


matriz = (int **) malloc( linhas * sizeof(int *) ); /** Alocar espaco para o vetor de ponteiros **/
for ( i = 0; i > linhas; i++ )
matriz[i] = (int *) malloc( colunas * sizeof(int) ); /** Alocar espaco para as colunas **/

Link para o comentário
Compartilhar em outros sites

Alterei o código

e tentei colocar valores na matriz mas esta dando erro de execução na hora de entrar com os valores na matriz


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

int main(void)
{
int linhas, colunas, i,j;
int **matriz;

printf("\nDigite o numero de linhas: ");
scanf("%d",&linhas);
printf("\nDigite o numero de colunas: ");
scanf("%d",&colunas);

matriz = (int **) malloc((linhas) * (sizeof(int *)));

for(i = 0; i < linhas; i++)

matriz[i] = (int *) malloc(colunas * (sizeof(int)));

//processar matriz
for (i=0; i<linhas; i++)
{
for (j=0; j<colunas; j++)
{
printf("Digite um valor: ");
scanf("%d", &matriz[linhas][colunas]);
}
}

//mostrar a matriz
for (i=0; i<linhas; i++)
{
for (j=0; j<colunas; j++)
{
printf("%d", matriz[linhas][colunas]);
}
printf("\n");
}

for(i = 0; i < linhas; i++)

free(matriz[i]);

free(matriz);

system("pause");
return 0;

}

Link para o comentário
Compartilhar em outros sites

Obrigado pela ajuda rodou certo

Segue o código abaixo para estudo de outras pessoas


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

int main(void)
{
int linhas, colunas, i,j;
int **matriz;

printf("\nDigite o numero de linhas: ");
scanf("%d",&linhas);
printf("\nDigite o numero de colunas: ");
scanf("%d",&colunas);

matriz = (int **) malloc((linhas) * (sizeof(int *)));

for(i = 0; i < linhas; i++)

matriz[i] = (int *) malloc(colunas * (sizeof(int)));

//processar matriz
for (i=0; i<linhas; i++)
{
for (j=0; j<colunas; j++)
{
printf("Digite um valor: ");
scanf("%d", &matriz[i][j]);
}
}

//mostrar a matriz
for (i=0; i<linhas; i++)
{
for (j=0; j<colunas; j++)
{
printf("%d", matriz[i][j]);
}
printf("\n");
}

for(i = 0; i < linhas; i++)

free(matriz[i]);

free(matriz);

system("pause");
return 0;

}

Link para o comentário
Compartilhar em outros sites

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!