§ 16. Тып даных структура (struct)
16.2. Выкарыстанне структур для апісання геаметрычных аб’ектаў
Самым простым геаметрычным аб’ектам на плоскасці з’яўляецца пункт, які задаецца сваімі каардынатамі. Пункт апісаны ў прыкладзе 16.1. Пары пунктаў на плоскасці вызначае адрэзак, які апісаны ў прыкладзе 16.5. Яшчэ адным важным геаметрычным аб’ектам на плоскасці з’яўляецца прамая. У матэматыцы выкарыстоўваюць розныя спосабы апісаць прамую з дапамогай ураўненняў. Ураўненне прамой на плоскасці ў прамавугольнай сістэме каардынат — гэта некаторае ўраўненне з дзвюма пераменнымі x і y, якое ператвараецца ў тоеснасць пры падстаноўцы ў яго каардынат любога пункта гэтай прамой. Любая форма ўраўнення прамой мае параметры. Выкарыстоўваючы параметры ўраўнення, можна апісаць адпаведную структуру (прыклад 16.7). Розныя формы ўраўнення прамой (у большасці выпадкаў) могуць быць прыведзены адна да адной, паколькі яны апісваюць адзін і той жа аб’ект. Выкарыстанне той ці іншай формы ўраўнення прамой залежыць ад задачы. Ураўненне прамой у агульным выглядзе з’яўляецца найбольш універсальным. Любая іншая форма ўраўнення прамой заўсёды можа быць прыведзена да агульнага ўраўнення прамой. Прыклад 16.8. Вядомы каардынаты двух пунктаў, праз якія праходзіць прамая. Атрымаць запіс ураўнення гэтай прамой у агульным выглядзе. Этапы выканання задання I. Зыходныя даныя: пераменная p1 (структура, якая апісвае ўраўненне прамой, што праходзіць праз два пункты). II. Вынік: пераменная p2 (структура, якая апісвае ўраўненне прамой у агульным выглядзе). III. Алгарытм рашэння задачы.
«math style=¨font-family:Arial¨ xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mstyle mathsize=¨18px¨»«mo»(«/mo»«mi»x«/mi»«mo»§#160;«/mo»«mo»§#8211;«/mo»«mo»§#160;«/mo»«msub»«mi»x«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«mo»(«/mo»«msub»«mi»y«/mi»«mn»2«/mn»«/msub»«mo»§#8211;«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«mo»§#160;«/mo»«mo»=«/mo»«mo»§#160;«/mo»«mo»(«/mo»«mrow»«mi»y«/mi»«mo»§#160;«/mo»«mo»§#8211;«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«/mrow»«mo»(«/mo»«msub»«mi»x«/mi»«mn»2«/mn»«/msub»«mo»§#160;«/mo»«mo»§#8211;«/mo»«mo»§#160;«/mo»«msub»«mi»x«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«mo»§#160;«/mo»«mo»§#8660;«/mo»«mspace linebreak=¨newline¨/»«mo»§#8660;«/mo»«mo»(«/mo»«msub»«mi»y«/mi»«mn»2«/mn»«/msub»«mo»§#8211;«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«mi»x«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mo»(«/mo»«msub»«mi»y«/mi»«mn»2«/mn»«/msub»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«mo»§#160;«/mo»«msub»«mi»x«/mi»«mn»1«/mn»«/msub»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«mo»(«/mo»«msub»«mi»x«/mi»«mn»2«/mn»«/msub»«mo»-«/mo»«mo»§#160;«/mo»«msub»«mi»x«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«mo»§#160;«/mo»«mi»y«/mi»«mo»§#160;«/mo»«mo»+«/mo»«mo»§#160;«/mo»«mo»(«/mo»«msub»«mi»x«/mi»«mn»2«/mn»«/msub»«mo»-«/mo»«mo»§#160;«/mo»«msub»«mi»x«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»1«/mn»«/msub»«mo»=«/mo»«mn»0«/mn»«/mstyle»«/math» «math style=¨font-family:Arial¨ xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mstyle mathsize=¨18px¨»«mi»A«/mi»«mo»§#160;«/mo»«mo»=«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»2«/mn»«/msub»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»1«/mn»«/msub»«mo»;«/mo»«mo»§#160;«/mo»«mo»§#160;«/mo»«mo»§#160;«/mo»«mi»B«/mi»«mo»§#160;«/mo»«mo»=«/mo»«mo»§#160;«/mo»«msub»«mi»x«/mi»«mn»1«/mn»«/msub»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«msub»«mi»x«/mi»«mn»2«/mn»«/msub»«mo»;«/mo»«mo»§#160;«/mo»«mo»§#160;«/mo»«mi»C«/mi»«mo»§#160;«/mo»«mo»=«/mo»«mo»§#160;«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»1«/mn»«/msub»«msub»«mi»x«/mi»«mn»2«/mn»«/msub»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«msub»«mi»x«/mi»«mn»1«/mn»«/msub»«msub»«mi»y«/mi»«mn»2«/mn»«/msub»«/mstyle»«/math» 4. Вывад выніку. IV. Апісанне пераменных: p1, p2 – struct. Прыклад 16.9. Вядомы каардынаты пункта і каэфіцыенты ўраўнення прамой у агульным выглядзе. Вызначыць, ці належыць пункт прамой. Этапы выканання задання I. Зыходныя даныя: пераменная AB (структура, якая апісвае ўраўненне прамой у агульным выглядзе), A(структура, якая апісвае пункт). II. Вынік: паведамленне «так» або «не». III. Алгарытм рашэння задачы.
IV. Апісанне пераменных: A, AB – struct. Прыклад 16.10. Вядомы каардынаты канцоў адрэзка і каэфіцыенты ўраўнення прамой у агульным выглядзе. Вызначыць, ці маюць прамая і адрэзак агульныя пункты. Этапы выканання задання I. Зыходныя даныя: пераменная CD (структура, якая апісвае ўраўненне прамой у агульным выглядзе), АB (структура, якая апісвае адрэзак). II. Вынік: паведамленне «так» або «не». III. Алгарытм рашэння задачы.
3.1. Адзін з канцоў адрэзка ляжыць на прамой.
IV. Апісанне пераменных: CD, AB – struct. Прыклад 16.11. Многавугольнік зададзены спісам сваіх вяршынь у парадку абходу. Для кожнай вяршыні вядомы яе каардынаты на плоскасці. Знайсці перыметр многавугольніка. Этапы выканання задання I. Зыходныя даныя: n — колькасць пунктаў, a — масіў пунктаў. II. Вынік: перыметр многавугольніка. III. Алгарытм рашэння задачы.
IV. Апісанне пераменных: n – int, a – vector<tchk>. |
Прыклад 16.7. Формы запісу ўраўнення прамой і адпаведныя ім апісанні структур. Ураўненне прамой з вуглавым каэфіцыентам: y = kx + l. Уравнение не позволяет описать прямую, параллельную оси OY.
Ураўненне прамой у адрэзках: «math style=¨font-family:Arial¨ xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mstyle mathsize=¨16px¨»«mrow»«mfrac»«mi»x«/mi»«mi»a«/mi»«/mfrac»«mo»§#160;«/mo»«mo»+«/mo»«mo»§#160;«/mo»«mfrac»«mi»y«/mi»«mi»b«/mi»«/mfrac»«mo»§#160;«/mo»«mo»=«/mo»«mo»§#160;«/mo»«mn»1«/mn»«mo».«/mo»«/mrow»«/mstyle»«/math» Параметры а і b — велічыні адрэзкаў, якія адсякаюцца прамой на восях каардынат. Ураўненне не дазваляе апісаць прамую, якая праходзіць праз пачатак каардынат.
Ураўненне прамой, якая праходзіць праз два пункты «math style=¨font-family:Arial¨ xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mstyle mathsize=¨16px¨»«mrow»«mi»A«/mi»«mo»(«/mo»«msub»«mi»x«/mi»«mn»1«/mn»«/msub»«mo»,«/mo»«mo»§#160;«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«/mrow»«/mstyle»«/math») і «math style=¨font-family:Arial¨ xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mi»B«/mi»«mo»(«/mo»«msub»«mi»x«/mi»«mn»2«/mn»«/msub»«mo»,«/mo»«mo»§#160;«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»2«/mn»«/msub»«mo»)«/mo»«/math»: «math style=¨font-family:Arial¨ xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mstyle mathsize=¨16px¨»«mrow»«mo»(«/mo»«mi»x«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«msub»«mi»x«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«mo»(«/mo»«msub»«mi»y«/mi»«mn»2«/mn»«/msub»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«mo»§#160;«/mo»«mo»=«/mo»«mo»§#160;«/mo»«mrow»«mo»(«/mo»«mi»y«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«msub»«mi»y«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«mo»(«/mo»«msub»«mi»x«/mi»«mn»2«/mn»«/msub»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«msub»«mi»x«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«/mrow»«/mrow»«/mstyle»«/math»
Агульнае ўраўненне прамой:
Прыклад 16.8. V. Праграма:
VI. Тэсціраванне. Прыклад 16.9. V. Праграма:
VI. Тэсціраванне. Прыклад 16.10. V. Праграмма:
VI. Тэсціраванне. Адрэзак цалкам ляжыць на прамой. Адзін канец адрэзка ляжыць на прамой. Прамая перасякае адрэзак. Няма агульных пунктаў. Прыклад 16.11. V. Праграма:
VI. Тэсціраванне. |