77
Енді екі өлшемді массивтерді қарастырайық. Программада төмендегідей
сипаттау болсын:
int
Р[5][10];
Бұл матрица бес жолдан және әрбір жолында он саннан тұрады. Екі
өлшемді массив жадыда жол бойынша тізбектей орналасқан. Р массивіне
бағытталған көрсеткіш - тұрақты болып табылады, яғни Р[0][0]. Р[
i
]
индекстелген аты
i
- ші жолды білдіреді. Оған адрестен ажыратылған
көрсеткіш формасындағы белгілеулер тең болады:
*(P+i*10)
Р[2][4] массив элементіне қатынасын *(Р+2*10+4) арқылы ауыстыруға
болады. Жалпы жағдайда төмендегі белгілеулер эквивалентті:
P[i] [j] және *(P+i*10+j)
Мұнда «квадраттық жақша» амалы екі рет жұмыс істейді. Соңғы өрнекті
Р матрицасының жолдар ұзындығын көрсетпей, басқаша жазуға болады:
*(*(P+i)+j).
Шындығында, A[i][j][k] үш өлшемді массивтің элементіне сілтеме үшін
индукция бойынша төмендегі өрнек дұрыс болады:
* (* (* (A+i)+j)+k) және т.б.
Массив функция параметрі ретінде.
Мысалдар қарастырайық:
Мысал 1.
А[М][N] нақты матрицасы берілген. Осы матрица
жолдарының евклидтік нормасын есептеп, баспаға беру қажет. Есепті шешу
программасын құрамыз.
Вектордың
Евклидтік
нормасы
деп
оның
элементтерінің
квадраттарының қосындысының квадрат түбірін айтады:
Егер матрицаның жолдарын вектор ретінде қарастырсақ, онда берілген
формуланы әрбір жолға қолдану қажет. Нәтижесінде М сандарды аламыз.
Кез келген вектордың нормаларын есептеу функциясын төмендегідей
құрамыз:
Достарыңызбен бөлісу: