Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП для экзаменов.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
288.26 Кб
Скачать

18. Екі өлшемді массивтер.Мысалдары.

Екі өлшемді жиымды – матрицаны пайдалану үшін тік жақшалар ішінде олардың екі өлшемінің де енін көрсету керек. Мысалы:

int a[4][3];

алғашқы сан жолдар санын, ал екінші сан бағаналар санын көрсетеді, а жиы­мы 12 элементтен тұрады. Оларға бастапқы мәнді былай береміз:

int a[4][3]={ {0,1,2},

{3,4,5},

{6,7,8},

{9,10,11}

};

ішкі жүйелі жақшаларды қоймаса да болады:

int a[4][3]={0,1,2,3,4,5,6,7,8,9,10,11};

Келесі түрде сипаттау жолдардың тек бірінші элементтерін ғана анықтайды, қалған элементтер 0-ге тең болып саналады:

int a[4][3]={ {0},{3},{6},{9} };

Егер ішкі жүйелі жақшалар алынып тасталса, онда мағынасы өзгереді.

int a[4][3]={ 0,3,6,9 };

мұнда бірінші жолдың 3 элементі мен екінші жолдың бірінші элементі анықталады да, қалғандары 0 болып саналады.

Екі өлшемді жиымды инициалдау қабаттасқан циклдер арқылы орындалады.

1-мысал.

/* a[3][4] жиымы элементтерін rand() арқылы енгізу және экранға шығару */

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

{

const int row=3, col=4;

int a[row][col];

for (int i=0; i<row; i++)

for (int j=0; j<col; j++)

a[i][j]=rand()%100-50;

printf("\nа[3][4] жиым элементтерi мәндерi:");

for (i=0; i<row; i++)

for (j=0; j<col; j++)

printf(" %i",a[i][j]);

}

Матрицаларды өңдейтін негізгі алгоритмдер ретінде бір өлшемді жиымдарды өңдеу кезінде қолданылған алгоритмдер саналады. Жалпы матрицаларды өңдейтін барлық алгоритмдерді екі топқа бөліп қарастыруға болады, олар:

1. матрицаның барлық элементтерін өңдейтін алгоритмдер.

2. матрицаның әр жолы немесе әр бағанасы элементтерін жеке-жеке өңдейтін алгоритмдер.

Матрицаның барлық элементтерін өңдейтін алгоритмдер

2-мысал. Нақты сандардан тұратын a4,6 матрицасы берілген. Мынадай өрнекті  есептеу керек, мұндағы P1 и P2 – сәйкесінше алынған матрицаның оң және теріс элементтерінің көбейтіндісі.

/* a[4][6] матрицасы берiлген. z=p1/|p2| есептеу керек, p1 и p2 – матрицаның

оң және терiс элементтерiнiң көбейтiндiсi */

#include <math.h>

#include <conio.h>

#include <stdio.h>

{printf("------------------------------\n");

return;}

{

static int a[4][6]={

{5,-11,4,-2,5,6},

{3,3,-12,-5,7,8},

{2,3,-3,14,-9,-3},

{-9,3,-6,14,9,-3}

};

printf("Берiлген матрица :\n");

for (i=0; i<4; i++)

{for (j=0; j<6; j ++)

printf(" %3i ", a[i][j]);

printf("\n");}

/* Матрицаны өңдеу */

for (i=0; i<4; i++)

for (j=0; j<6; j ++)

{if (a[i][j]>0) p1 = p1*a[i][j];

if (a[i][j]<0) p2 = p2*a[i][j];

}

z = p1/abs(p2);

printf(" z = %f\n",z);

}

3-мысал.Бүтін сандардан тұратын квадрат b5,5 матрицасы берілген. Оның бас диагоналының сол жағында және оң жағында орналасқан нөлге тең элементтері санын анықтап, солардың айырмасының моду­лін табу керек.

Мынадай белгілеулер енгізейік:

L1 – бас диагональдың сол жағында (төменінде) орналасқан элементтер саны;

L2 – бас диагональдың оң жағында (жоғарысында) орналасқан элементтер саны;

L= |L1-L2| – солардың айырмасы модулі.

#include <math.h>

#include <conio.h>

#include <stdio.h>

{printf("-------------------------\n");

return;}

{

static int b[5][5]={

{5,0,0,0,0},

{0,3,12,0,0},

{0,33,13,14,0},

{0,23,0,14,0},

{35,0,13,14,9},

};

printf("Берiлген матрица :\n");

for (i=0; i<5; i++)

{for (j=0; j<5; j ++)

printf(" %3i ", b[i][j]);

printf("\n");}

L1 = L2 = 0;

for (i=0; i<5; i++)

for (j=0; j<5; j ++)

if (b[i][j]==0)

{if (i>j) L1 = L1+1;

if (i<j) L2 = L2 +1;

}

printf(" L = %i ",L);

}

Екінші типтегі есептер алгоритмдері

4-мысал. Бүтін сандардан тұратын a3,6 матрицасы жолдарының алғашқы элементін осы жолдың минимальды элементімен алмастыру керек. Нәтижелік a3,6 матрицасы элементтерін экранға шығару қажет.

/* a[3][6] матрицасы жолдарының алғашкы элементiн осы жолдың минимальды элементiмен алмастыру керек. Натижелiк Х матрицасы элементтерiн экранға шығару кажет.*/

#include <math.h>

#include <conio.h>

#include <stdio.h>

{printf("------------------------------\n");

return;}

{

static int a[3][6]={

{5,-11,4,-2,5,6},

{2,3,-3,14,-9,-3},

{-9,3,-6,-14,9,-3}

};

printf("Берiлген матрица :\n");line();

for (i=0; i<3; i++)

{for (j=0; j<6; j ++)

printf(" %3i ", a[i][j]);

printf("\n");

}

for (i=0; i<3; i++)

{ min=+1E6;

for (j=0; j<6; j ++)

if (a[i][j]<min)

{min=a[i][j];

jmin=j;

}

a[i][jmin]=a[i][0];

a[i][0]=min;

}

printf("Өңделген матрица :\n");line();

for (i=0; i<3; i++)

{for (j=0; j<6; j ++)

printf(" %3i ", a[i][j]);

printf("\n");

} line();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]