Ir ao conteúdo
  • Cadastre-se
Ramiro Gurgel

C++ Receber e apresentar dados em uma Matriz

Recommended Posts

Olá pessoal, estou tentando fazer um programa onde o usuário define o número de linhas que a matriz vai ter (número de objetos que ele quer calcular) e em seguida esses valores são apresentados na tabela da matriz. Porém, por algum motivo que desconheço (provavelmente estou interpretando errado), a matriz não está apresentando os dados fornecidos pelo usuário e há um problema no for quando o número de repetições (linhas) é maior que 3 ou 4, também desconheço o motivo.

 

Quanto a matriz, preciso que os dados sejam apresentados a partir da segunda coluna (coluna 1, a primeira é a coluna 0), por atribuí esse valor à variável antes de entrar no for. Sem mais enrolações, aqui está o código. Help!

 


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

main() {
    
    setlocale(LC_ALL,"portuguese");
    
    int    obj, s, s0, v0, a, t;
    int loop, repet, linha, coluna, matriz [linha][4];


    printf ("ATRIBUIÇÃO DE VALORES");
    printf("\n\n");
    printf ("Quantidade de objetos: ");
    scanf ("%d", &linha);

    coluna <= 1;
    for (loop = 0; loop < linha; loop++){
        
        printf ("Objeto %d - Posição inicial (s0): ", loop);
        scanf ("%d", &s0);
        matriz[loop][coluna] <= s0;
        
        coluna <= coluna + 1;
        printf ("Objeto %d - Velocidade inicial (v0): ", loop);
        scanf ("%d", &v0);
        matriz[loop][coluna] <= v0;
        
        coluna <= coluna + 1;
        printf ("Objeto %d - Aceleração (a): ", loop);
        scanf ("%d", &a);
        matriz[loop][coluna] <= a;
        
        coluna <= coluna + 1;
        printf ("Objeto %d - Tempo (t): ", loop);
        scanf ("%d", &t);
        matriz[loop][coluna] <= t;
        
        coluna <= 0;
        printf ("\n");
    }

    printf ("\t\t\t\t");
    printf ("TABELA DE VALORES");
    printf ("\n\n");
    printf ("\t");
    printf ("Objeto    Posição(s0)    Velocidade(v0)   Aceleração(a)      Tempo(t)");
    printf ("\n\n");
        
    for (repet = 0; repet < linha; repet++){
        for (coluna = 0; coluna < 5; coluna++){
            
            printf ("\t%d\t|", matriz [repet][coluna]);
        
        }
        
    printf ("\n");
    
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

De cara vi um erro e parei:

int ..., matriz [linha][4];

Destaque apenas para a declaração da matriz, que tem:

Largura(colunas): 4, Comprimento(linhas): linha ??????

Entenda, desta maneira não a mais nada o que fazer; o comprimento de matriz é linha, seja lá o valor que tenha essa variável neste instante. Não importa o valor que o usuário vem dar para linha, não faz diferença. Está errado! O correto e declarar matriz depois de ter um valor definido para linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm... compreendo, muito obrigado!

 

Poderia me dar alguma dica de como fazer a quantidade de linhas da matriz flexível? De acordo com o valor determinado pelo usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites
    printf ("ATRIBUIÇÃO DE VALORES");
    printf("\n\n");
    printf ("Quantidade de objetos: ");
    scanf ("%d", &linha);
int matriz [linha][4];

Apague matriz da declaração no topo, e coloque-a abaixo do scanf-linha

Da maneira acima!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×