Приступ елементима матрице – унос и испис елемената

Приступ појединим елементима матрице врши се навођењем индекса у угластој загради. Хајде да напишемо програм којим ћемо унети једну матрицу А целих бројева, димензија два реда и две колоне, и након тога исписати унете елементе.

Решење:

#include<stdio.h>
int main(void)
{
    int A[2][2];
    printf("Unesi element A[0][0]: ");
    scanf("%d",&A[0][0]);
    printf("Unesi element A[0][1]: ");
    scanf("%d",&A[0][1]);
    printf("Unesi element A[1][0]: ");
    scanf("%d",&A[1][0]);
    printf("Unesi element A[1][1]: ");
    scanf("%d",&A[1][1]);
    printf("\nUneli ste matricu:");
    printf("\nA[0][0] = %d", A[0][0]);
    printf("\nA[0][1] = %d", A[0][1]);
    printf("\nA[1][0] = %d", A[1][0]);
    printf("\nA[1][1] = %d", A[1][1]);
    return 0;
}

Излаз:

Unesi element A[0][0]: 6
Unesi element A[0][1]: 4
Unesi element A[1][0]: 8
Unesi element A[1][1]: 7

Uneli ste matricu:
A[0][0] = 6
A[0][1] = 4
A[1][0] = 8
A[1][1] = 7

Видимо да је потребно више пута написати наредбе за унос и испис појединих елемената. Хајде да направимо програм којим ћемо уносити елемент по елемент.

Написати програм за унос и испис елемената матрице целобројног типа елемената од 3 реда (врсте) и 4 колоне (димензије 3 х 4).

Решење:

#include<stdio.h>
int main(void)
{
    int A[3][4], i, j;
    printf("Unesite elemente matrice:\n");
    for(i = 0; i < 3; i++)
        for (j = 0; j < 4; j++)
        {
            printf("A[%d][%d] = ", i, j);
            scanf("%d", &A[i][j]);
        }
    printf("\nUneli ste matricu: \n");
    for(i = 0; i < 3 ; i++)
        for (j = 0; j < 4; j++)
            printf("A[%d][%d] = %d\n", i, j, A[i][j]);
    return 0;
}

Излаз:

Unesite elemente matrice:
A[0][0] = 1
A[0][1] = 2
A[0][2] = 3
A[0][3] = 4
A[1][0] = 5
A[1][1] = 6
A[1][2] = 7
A[1][3] = 8
A[2][0] = 9
A[2][1] = 10
A[2][2] = 11
A[2][3] = 12

Uneli ste matricu:
A[0][0] = 1
A[0][1] = 2
A[0][2] = 3
A[0][3] = 4
A[1][0] = 5
A[1][1] = 6
A[1][2] = 7
A[1][3] = 8
A[2][0] = 9
A[2][1] = 10
A[2][2] = 11
A[2][3] = 12

Шта можете да приметите у уносу? Користили смо угнежђену петљу. Прво смо унели све елементе првог реда, а након тога елементе другог реда. Значи, уносили смо елементе матрице по редовима.

../_images/image12.png ../_images/image13.png

Шта треба да се промени у програму да се изврши уношење елемената по колонама?

Одговор: Треба заменити места циклусима. Спољашњи циклус треба да се мења по j, а унутрашњи по i.

Написати програм за унос и испис елемената матрице целобројног типа елемената димензија 3х4 и графички приказати пролазак кроз матрицу, као у претходном примеру.

Решење:

#include<stdio.h>
int main(void)
{
    int A[3][4], i, j;
    printf("Unesite elemente matrice:\n");
    for(j = 0; j < 4; j++)
        for (i = 0; i < 3; i++)
        {
            printf("A[%d][%d] = ",i,j);
            scanf("%d",&A[i][j]);
        }
    printf("\nUneli ste matricu:\n");
    for(i = 0; i < 3; i++)
        for (j = 0; j < 4; j++)
            printf("A[%d][%d] = %d\n", i, j, A[i][j]);
    return 0;
}

Излаз:

Unesite elemente matrice:
A[0][0] = 1
A[1][0] = 5
A[2][0] = 9
A[0][1] = 2
A[1][1] = 6
A[2][1] = 10
A[0][2] = 3
A[1][2] = 7
A[2][2] = 11
A[0][3] = 4
A[1][3] = 8
A[2][3] = 12

Uneli ste matricu:
A[0][0] = 1
A[0][1] = 2
A[0][2] = 3
A[0][3] = 4
A[1][0] = 5
A[1][1] = 6
A[1][2] = 7
A[1][3] = 8
A[2][0] = 9
A[2][1] = 10
A[2][2] = 11
A[2][3] = 12
../_images/image14.png ../_images/image15.png

Написати програм за унос и испис матрице целобројног типа елемената максималних димензија 10х10 и димензија r х k, као и за приказ унете матрице ред по ред.

Решење:

#include<stdio.h>
int main(void)
{
    int A[10][10], i, j, r, k;
    printf("Unesite broj redova: ");
    scanf("%d", &r);
    printf("Unesite broj kolona: ");
    scanf("%d", &k);
    printf("Unesite elemente matrice:\n");
    for (i = 0; i < r; i++)
        for (j = 0; j < k; j++)
        {
            printf("A[%d][%d] = ", i, j);
            scanf("%d", &A[i][j]);
        }
    printf("\nUneli ste matricu:\n");
    for (i = 0; i < r; i++){
        for (j = 0; j < k; j++)
            printf("%6d", A[i][j]);
        printf("\n");
    }
    return 0;
}

Излаз:

Unesite broj redova: 3
Unesite broj kolona: 4
Unesite elemente matrice:
A[0][0] = 1
A[0][1] = 2
A[0][2] = 3
A[0][3] = 4
A[1][0] = 5
A[1][1] = 6
A[1][2] = 7
A[1][3] = 8
A[2][0] = 9
A[2][1] = 10
A[2][2] = 11
A[2][3] = 12

Uneli ste matricu:
1	2	3	4
5	6	7	8
9	10	11	12

Шта смо променили у програму да би се сваки ред исписивао у новом реду?

Одговор: Након другог циклуса додали смо пребацивање у нови ред. Други циклус смо ставили у блок и на крају блока додали пребацивање у нови ред.