- Дастур натижаси:
- Сатр 1 0.0 1.0 2.0 3.0 4.0
- Сатр 2 5.0 6.0 7.0 8.0 9.0
- Сатр 3 10.0 11.0 12.0 13.0 14.0
- Сатр 4 15.0 16.0 17.0 18.0 19.0
-
- Дастурда бир ўлчовли массив аниқланган X[ ] элементлар сони препроцессор идентификаторлари N ва M боғлиқ ).
- X[ ] массив элементлари қиймати циклда к параметр билан ўзлаштирилди. Бунда хеч қандай янгилик йўқ. Дастур давомида эса шу массив элементларига мурожаат қилиш учун макро чақириш дан фойдаланилади бунда сатр индекси 1 дан N гача устун индекси 1 дан M гача ўзгаради. Бунда i ўзгарувчи матрица сатрига мос келади, j ўзгарувчиси устунга мос келади. Дастурчи бунда матрицани табиий кўринишда ифодалай олгани учун ундан фойданишда хам қулайликларга эришади.
x[5*(i-l)+(j-l)], и далее действия выполняются над элементами одномерного массива х[ ].( макро кенгайтириш орқали А(i,j) массив x[5*(i-1)+(j-1) ] параметрли массивга алмаштилди ва ундан кейин бир улчовли массив каби қайта ишлашлар оборилади аммо бу дастурчига хеч қандай муоммолар келтириб чиқармайди, аммо дастурда қуйидагича оператор чақирилса у холда - x[5*(i-l)+(j-l)], и далее действия выполняются над элементами одномерного массива х[ ].( макро кенгайтириш орқали А(i,j) массив x[5*(i-1)+(j-1) ] параметрли массивга алмаштилди ва ундан кейин бир улчовли массив каби қайта ишлашлар оборилади аммо бу дастурчига хеч қандай муоммолар келтириб чиқармайди, аммо дастурда қуйидагича оператор чақирилса у холда
- printf ("% 6.If", A (i, j));
- макро алмаштиришдан кейин :
- printf ("% 6.If", x[5*(i-l)+(j-l)]);
- куринишга келади ва бир улчовли массив каби х[ ] ва виртуаль матрица каби ишлайди ( макро аниқлаш орқали дастурчи тассавурида у матрицадир аслида у бир улчовли массивга айлантирилган бўлади) .
Функциянинг макросдан фарқи. Макрос билан функцияни солиштирадиган бўлсак, макросдан одатда унча катта бўлмаган матндан иборат бўлади у фақат битта нусхада бўлади, макрос чақирилганда ўша матн ўзи дастурга қўйилади функцияда эса натижаси келтирилади. Яна битта фарқига эътибор қилинг масалан : функция берилган тур учун аниқланган,бунда – - Функциянинг макросдан фарқи. Макрос билан функцияни солиштирадиган бўлсак, макросдан одатда унча катта бўлмаган матндан иборат бўлади у фақат битта нусхада бўлади, макрос чақирилганда ўша матн ўзи дастурга қўйилади функцияда эса натижаси келтирилади. Яна битта фарқига эътибор қилинг масалан : функция берилган тур учун аниқланган,бунда –
- 3.1-жадвал. Макро аниқлаш ёрдамида матрицани бир ўлчовли массивга айлантириш жараёни тасвирланган: А (1,1) мос келади х[5*(1 -1)+(1 -1)] = = х[0] А (1,2) мос келади х[5*(1-1)+(2-1)] = = х[1] А (2,1) мос келади х[5*(2-1)+(1-1)] = = х[5] А (3,4) мос келади х[5*(3-1)+(4-1)] = = х[13]
- параметрларнинг хусусиятлари вақайтарувчи қийматлари аниқ бир тур учун келтирилган.
Do'stlaringiz bilan baham: |