Амтамасыздандыру



бет48/51
Дата07.09.2022
өлшемі484,5 Kb.
#38632
түріЛекция
1   ...   43   44   45   46   47   48   49   50   51
Байланысты:
Алгоритрм лекция жинағы

Екі өлшемді массивтер
Си тілінде екі өлшемді массивтер былай сипатталады:
[<жады класы>]<тип><массив аты> [<1-өлшемі>][<2-өлшемі>]
Массив элементтері типі ескеріліп, олардың көлеміне жеткілікті етіп массив үшін компьютер жадында қажетті орын бөлініп беріледі немесе массивтің аты осы аймақтың басына сілтейтін нұсқауыш типті константа болып табылады. Екі өлшемді массив мынадай түрде инициалданады:
main ()
{
static int a[3][4]={
{5,3,4,2},
{3,3,4,5},
{2,3,3,4}
};
Есеп: Жоғарыдағы массивтің әрбір жолдағы элементтер қосындыларын және сол қосындылардың орташа мәнін анықтау керек.
// сумма каждой строки и среднее этих сумм
#include
#include

main ()
{


static int a[3][4]={
{5,3,4,2},
{3,3,4,5},
{2,3,3,4}
};
int i,j,s;
float c;
clrscr();
for (i=0; i<3; i++)
{ s=0;
for (j=0; j<4; j ++) s+=a[i][j];
printf("%i-жол косындысы %i\n",i+1,s);//косынды s
c+=s;
}
printf("--------------------");
printf("\n арифм. ортасы %5.2f",c/4); // сан ені - 5,
// бөлшек ені -2
}

Мысал: A[3,4], B[4,2] массивтері берілген, осы екі массивтің көбейтіндісін табу керек.


#include
#include

main ()
{


static int a[3][4]={
{5,2,4,2},
{3,3,4,5},
{2,4,3,4},
};
static int b[4][2]={
{5,9},
{7,1},
{1,0},
{3,3}
};
int i,j,k;
int c[3][2];
clrscr();
for (i=0; i<3; i++)
for (j=0; j<2; j ++)
{ c[i][j]=0;
for (k=0; k<4; k ++)
c[i][j]+=a[i][k]*b[k][j];
}
for (i=0; i<3; i++)
{ for (j=0; j<2; j ++)
printf("c[%d,%d]=%d\n",i+1,j+1,c[i][j]);
printf("\n");
}
}

Екі өлшемді массивтермен жұмыс істеу кезінде


нұсқауыштарды қолдану
A[3,2] массив берілген болсын. Олар бүтін сандар, яғни
int a[3][2];
int *pri;
pri = a; a[0][0];
a – массивтің аты, a[0][0] – элементтің адресі
a=&a[0][0];
рri нұсқауышына &-ді қоссақ, pri+1 деген нұсқауыш a[0][1] элементіне сілтейді. Бұл массивті қарастырғанда, келесі теңдеулер орынды:
pri == &a[0][0];
pri+1== &a[0][1];

pri+2== &a[1][0];


pri+3== &a[1][1];

pri+4== &a[2][0];


pri+5== &a[2][1];

Екі өлшемді массив бірөлшемді массивтерден құрастырылған массив ретінде қарастырылуы мүмкін. Яғни берілген екі өлшемді массив үш жолдан тұрады, ал әрбір жол екі элементтен тұратын массив болып табылады.


Бірінші жол аты – a[0],
екінші жол аты – a[1],
үшінші жол аты – a[2].
Массивтің аты берілген массивтің нұсқауышы болып табылады, яғни ол массивтің 1-элементіне сілтейді.
Екі өлшемді массивтің осы қасиеті бір өлшемді массивке арналған функцияны екі өлшемді массивпен жұмыс істеуге мүмкіндік береді. Мысалы:
main ()
{
static int b[3][4]={
{6,4,3,2},
{7,5,3,3},
{8,3,2,6}
};
int i;
clrscr();
for (i=0;i<3;i++)
printf("cредн.значение строки %d равно %d\n",i,
f1(b[i],4));
int f1(x,n)
int x[],n;
{
int l; float s;
for (l=0,s=0;ls+=x[l];
return(int(s/n));
}

Тапсырма: 3 екі өлшемді массив: A[5][5], B[5][5], C[5][5] берілген. Әрбір массивтегі бас диагональдан жоғары орналасқан элементтер арасындағы ең үлкен элементті табу қажет және үш массивтегі ең үлкен элементтердің қосындысын анықтау керек.


Тапсырма: 3 бір өлшемді массивтер: A[10], B[10], C[10] берілген. Әр массивтегі бірінші 0-ге тең элементке дейін орналасқан оң элементтер санын анықтау керек.


Достарыңызбен бөлісу:
1   ...   43   44   45   46   47   48   49   50   51




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет