Ir ao conteúdo
  • Cadastre-se

C Crie matriz onde os números de linhas e colunas serão digitados pelo usuário


Luis Gonzales

Posts recomendados

Boa tarde,

Estou precisando de uma ajuda.

Fazer um programa para uma matriz onde os números de linhas e colunas serão digitados pelo usuário, assim como os valores para a Matriz.

porém não estou sabendo fazer é como o usuário consegue declarar a quantidade de linhas e colunas.

Obrigado pela atenção.

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Luis Gonzales      você pode fazer como o @Igor Vargas  disse ,  ou também pode criar uma matriz com uma grande quantidade de linhas e colunas , por exemplo 9999 , e depois que o usuário informar quantas linhas e colunas quer ,  você usa esses valores informados como referencia e o que sobrar deixa sem usar .

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

1 hora atrás, devair1010 disse:

@Luis Gonzales      você pode fazer como o @Igor Vargas  disse ,  ou também pode criar uma matriz com uma grande quantidade de linhas e colunas , por exemplo 9999 , e depois que o usuário informar quantas linhas e colunas quer ,  você usa esses valores informados como referencia e o que sobrar deixa sem usar .

Opa @devair1010 conforme o @Igor Vargas ele mencionou utilizar a memória dinamicamente então resolvi usar ponteiros mas ainda ta dando erro, uma luz ? 😢

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
    setlocale(LC_ALL,"Portuguese");
    int *Plinha,*Pcoluna;
    int x,y;


     printf("Digite a quantidade de linhas para Matriz\n");
     scanf("%i",&x);
     printf("Digite a quantidade de colunas para Matriz\n");
     scanf("%i",&y);
     Plinha = &x;
     Pcoluna = &y;
     int matriz[*Plinha][*Pcoluna];


        for(int i=0; i<*Plinha; i++){
             for(int j=0; j<*Pcoluna; j++){
                printf("insira o %i° numero na matriz",i);
                  scanf("%i",&matriz[*Plinha][*Pcoluna]);
            }
        }
            for(int i=0; i<*Plinha; i++){
              for(int j=0; j<*Pcoluna; j++){
               printf("%i",matriz[*Plinha][*Pcoluna]);
            }

        }
        return 0;
}

 

  • Curtir 2
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Luis Gonzales    ponteiros são complicados ,  creio que assim seja mais fácil :

#include <stdio.h>
#include <conio.h>
int main(){
    int i,j,x,y;
    int matriz[444][999];
    printf("Digite A Quantidade De Linhas Da Matriz ");
    scanf("%d",&x);
    printf("Digite A Quantidade De Colunas Da Matriz ");
    scanf("%d",&y);
    for(i=0;i<x;i++)
        for(j=0;j<y;j++)
            scanf("%d",&matriz[i][j]);
    for(i=0;i<x;i++)
        for(j=0;j<y;j++)
            printf("%d",matriz[i][j]);
    getch();
    return 0;    
}

mas você pode usar ponteiros também que seria assim  :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(){
    int **matriz; 
    int x,y,i,j;
    printf("Digite O Numero De Linhas ");
    scanf("%d",&y);
    printf("Digite O Numero De Colunas ");
    scanf("%d",&x);
    matriz = (int**)malloc(y * sizeof (int));// aloca as linhas
    for(i=0; i<y; ++i){
        matriz[i] = (int*) malloc(x * sizeof(int)); // Aloca as colunas
        for(j=0;j<x;j++)
            scanf("%d",&matriz[i][j]);
    } 
    for(i=0;i<y;i++)
        for(j=0;j<x;j++)
            printf("%d ",matriz[i][j]);
    free (matriz);
    getch();
    return 0;
}

 

  • Curtir 1
  • Obrigado 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @devair1010, muito bom o seu post, mas acho que notei uma coisa faltando no código de alocação dinâmica ( desculpe se estiver errado). Com relação a seguinte parte:

2 horas atrás, devair1010 disse:

free (matriz);

Não seria necessário antes liberar na memória, as colunas da matriz? Com um "for" , tipo isto:

for( i = 0 ; i < y ; i++){
	free(matriz[i]);
}
free(matriz);                  

 

  • Curtir 2
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

11 horas atrás, Arthur Vandellay disse:

Olá @devair1010, muito bom o seu post, mas acho que notei uma coisa faltando no código de alocação dinâmica ( desculpe se estiver errado). Com relação a seguinte parte:

Não seria necessário antes liberar na memória, as colunas da matriz? Com um "for" , tipo isto:


for( i = 0 ; i < y ; i++){
	free(matriz[i]);
}
free(matriz);                  

 

Obrigado pela ajuda!

O ciclo for ficaria assim ?

} 
    for(i=0;i<y;i++)
        for(j=0;j<x;j++){
            printf("%d ",matriz[i][j]);
             
   }               for( i = 0 ; i < y ; i++)
	            free(matriz[i]);
}
free(matriz);          
    getch();
    return 0;
}

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!