C Programming - Two-Dimensional Matrices

Asked

Viewed 109 times

2

**Matrix Print Error.Cannot generate matrix lines.

Note, without using another library**

    #include <stdio.h>

int main()
{
    int nlinhas,mcolunas;
    int matriz[nlinhas][mcolunas];
    int n,m;//n linhas, m colunas

    //inserir o número de linhas e colunas

    printf("Insira os número de linhas\n\n");
    scanf("%d",&nlinhas);
    printf("Insira o número de colunas\n\n");
    scanf("%d",&mcolunas);

    printf("\nDigite as coordenadas da matriz\n\n");

    for (n=0;n < nlinhas; n++)
        for (m=0;m < mcolunas; m++)
        {
            printf("coordenadas [%d][%d]: \n", n, m);
            scanf("%d",&matriz[n][m]);
        }   
    for (n=0; n<nlinhas; n++)
    {
        for (m = 0; m<mcolunas; m++)
            printf("%2d",matriz[n][m]);
        printf("\n"); 
        //salto de linhas matricial
    }
}

2 answers

1


The problem is in you declaring nlinhas[] while you probably didn’t want a vector, and you need to declare the variable matriz[nlinhas][mcolunas] after you already own the values nlinhas and mcolunas.

int nlinhas,mcolunas;
printf("Insira os número de linhas\n\n");
scanf("%d",&nlinhas);
printf("Insira o número de colunas\n\n");
scanf("%d",&mcolunas);
int matriz[nlinhas][mcolunas];
int n,m;//n linhas, m colunas

1

You are declaring an nxm size matrix without first having n or m, which size you expect this matrix to have?

Without using pointers pointing to pointers and dynamic allocation, the easiest way I can suggest you to solve this problem would be to declare the array only after getting user inputs.

int main()
{
    int nlinhas, mcolunas;

    //inserir o número de linhas e colunas

    printf("Insira os número de linhas\n\n");
    scanf("%d",&nlinhas);
    printf("Insira o número de colunas\n\n");
    scanf("%d",&mcolunas);

    //--------------------------------------------//

    int matriz[nlinhas][mcolunas];
    int n, m; //n linhas, m colunas

    printf("\nDigite as coordenadas da matriz\n\n");

    for (n=0;n < nlinhas; n++)
        for (m=0;m < mcolunas; m++)
        {
            printf("coordenadas [%d][%d]: \n", n, m);
            scanf("%d",&matriz[n][m]);
        }   
    for (n=0; n<nlinhas; n++)
    {
        for (m = 0; m<mcolunas; m++)
            printf("%2d",matriz[n][m]);
        printf("\n"); 
        //salto de linhas matricial
    }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.