Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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
Postado
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
Postado

@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
  • Membro VIP
Postado

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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!