Rudra Patole
Rudra Patole

Reputation: 47

Unexpected output while printing 2 array (matrix)

output is printing only few elements of matrix that to in a wrong order i think something is wrong with the printing loop but unable to figure it out

#include <stdio.h>

int main()
{
    int x=0, y=0;
    int a[x][y];
    printf("enter the number of rows in first matrix:\n");
    scanf("%d", &x);
    printf("enter the number of columns in first matrix:\n");
    scanf("%d", &y);
    printf("enter elements of first matrix\n");
    for (int i = 0; i < x; i++)
    {
        for (int j = 0; j < y; j++)
        {
            printf("enter element %d %d\n", i, j);
            scanf("%d", &a[i][j]);
        }
    }
    for (int p = 0; p < x; p++)
    {
        for (int q = 0; q < y; q++)
        {
            printf("%d\t", a[p][q]);
        }
        printf("\n");
    }

    return 0;
}

Upvotes: 1

Views: 39

Answers (2)

Erick T Oliveira
Erick T Oliveira

Reputation: 124

You're declaring the matrix before receiving the size of the matrix (you're variables x and y). In your code, the matrix is declared as a[0][0].

Solution:

#include <stdio.h>

int main() {
    int x, y;
    printf("enter the number of rows in first matrix:\n");
    scanf("%d", &x);
    printf("enter the number of columns in first matrix:\n");
    scanf("%d", &y);
    int a[x][y];
    printf("enter elements of first matrix\n");
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < y; j++) {
            printf("enter element %d %d\n", i, j);
            scanf("%d", &a[i][j]);
        }
    }
    for (int p = 0; p < x; p++) {
        for (int q = 0; q < y; q++) {
            printf("%d\t", a[p][q]);
        }
        printf("\n");
    }

    return 0;
}

Upvotes: 1

pluto9800
pluto9800

Reputation: 287

You're initializing your 2d array with 0 rows and 0 columns.
You need to move int a[x][y] down under scanf("%d", &y);

#include <stdio.h>

int main() {
    int x, y;
    printf("enter the number of rows in first matrix:\n");
    scanf("%d", &x);
    printf("enter the number of columns in first matrix:\n");
    scanf("%d", &y);
    int a[x][y];
    printf("enter elements of first matrix\n");
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < y; j++) {
            printf("enter element %d %d\n", i, j);
            scanf("%d", &a[i][j]);
        }
    }
    for (int p = 0; p < x; p++) {
        for (int q = 0; q < y; q++) {
            printf("%d\t", a[p][q]);
        }
        printf("\n");
    }

    return 0;
}

Upvotes: 1

Related Questions