- ъглополовяща-бисектриса
- Криви
- Разстояние между две точки
- ъгъл градуси радиан
- две окръжности
- диаметър на окръжност
- периметър
- височина, перпендикуляр
- триъгълник - Талес
- триъгълник - Херон
- триъгълник - Питагор
- правоъгълен триъгълник
- успоредник
- правоъгълник
- ромб
- трапец
- правоъгълен трапец
- многоъгълник
- дъга - хорда, ъгъл и радиус
- окръжност
- цилиндър
- конус
- призма
- пирамида
Правилен многоъгълник - страни, диагонали, периметър, лице
многоъгълник - брой диагонали
многоъгълник - апотема
многоъгълник - периметър
Изпъкнал многоъгълник с равни вътрешни ъгли и равни дължини на страни е правилен многоъгълник. Често се среща термина правилен N-ъгълник, като с N (естествено число) се означава броя страни в този многоъгълник. За да разберем дали даден многоъгълник е изпъкнал, не е самопресичащ се може да се ползва следния алгоритъм. Избира се връх за начален, както и посока на обхождане. Взема се първата двойка съседни върхове и се прекарва права. Проверява се дали има друг връх, който да лежи на тази права или връх, който да се намира в полуравнина, различна от останалите върхове. Ако многоъгълникът е изпъкнал ще важи следното правило за всяка двойка върхове: само 2 върха лежат на една права, правата през всеки два върха разделя равнината на две и всички останали върхове се намират в една и съща полуравнина.
изпъкнал многоъгълник
самопресичащ се многоъгълник
Брой диагонали в правилен многоъгълник - за N>2 броя диагонали = N*( N - 3)/2 Размер на вътрешен ъгъл в правилен многоъгълник: 180* (1 - 2/N) – в градуси или ( N−2 )* π /N – в радиани. В практиката често се налага изчисляване лице на неправилен многоъгълник. Триангулация на многоъгълник е представянето му като множество триъгълници, чийто страни са или страни в многоъгълника или са вътрешни отсечки за многоъгълника. Ако върховете на многоъгълника са зададени с координати можем да разглеждаме многоъгълника като съвкупност от триъгълници с общ връх. Използвайки алгоритъм на Херон или ориентирано лице лицето на многоъгълника се получава като сума от лицата на съставящите го N-2 броя триъгълници. Най-разпространените задачи за правилен многоъгълник обикновено разглеждат равностранен триъгълник или квадрат. Около всеки правилен многоъгълник може да се опише окръжност. Апотема в многоъгълник е отсечката a, спусната от центъра на многоъгълника перпендикулярно към една негова страна.
Лицето на правилен многоъгълник е S = P * a / 2 – полупроизведението от периметър и апотема.Ще означим с r радиуса на описана около многоъгълник окръжност.
За правилен многоъгълник: апотема, периметър и лице могат да се изразят като:
a = 2 * r * sin(180/N)
P = 2 * N * r * sin(180/N)
S = 0.5 * r * r * N * sin(360/N)
централен ъгъл yg на дъгата към всяка страна на многоъгълника: yg=360/N
дължина на страна b в многоъгълник изразена чрез радиус на вписана/описана окръжност
b = 2 * R * sim ( yg/2 ), където R е радиус на описаната окръжност
b = 2 * r * tg( yg/2 ), където r е радиус на вписаната окръжност
многоъгълник - брой диагонали
Имате изпъкнал N-ъгълник, където N е броят върхове - естествено число от интервала [4..104]. Да се състави програма, чрез която по въведено естествено число N се извежда максималния брой неповтарящи се диагонали в многоъгълника. Пример: 4 Изход: 2
Алгоритъм
Всички възможни отсечки в многоъгълника, свързващи всеки два върха са комбинация на n елемента от 2-ри клас - n*(n -1 )/2. От тази стойност трябва да извадим броя страни n, така броя възможни диагонали в такъв многоъгълник е n*(n-3)/2 за всяко n>3. Изключенията с: 0 - няма обект, 1 - данни за точка; 2 - данни за права.
Следващата примерна програма дава решена задача за брой диагонали в многоъгълник:
#include <iostream>
using namespace std;
void broi(int N)
{int m=N*(N-3)/2;
switch (N)
{//nachalo na operatora
case 0: cout<<"Nqma danni za obekta.\n";break;
case 1: cout<<"Dannite sa za tochka. \n"; break;
case 2: cout<<"Dannite sa za prawa\n"; break;
case 3: cout<<"Dannite sa za triygylnik\n"; break;
default: cout<<"Broj wyzmovni diagonali: "<<m<<endl; // towa se izpylnqwa
}//kraj na switch
}//broj
int main()
{//nachalo na programata
int N;//deklarirane na promenliwata
char ose;
cout<<"Imate izpyknal N-ygylnik, w kojto trqbwa da se izchertaqt wsichki\n";
cout<<"wyzmovni diagonali w mnogoygylnika, no bez powtorenie.\n";
cout<<"Da se systawi programa, koqto po wywevedeno estestweno chislo w\n";
cout<<"interwala [4..104] se izchislqwa maksimalniq broj diagonali bez\n";
cout<<"powtoreniq w mnogoygylnika.\n";
cout<<"Primer 4 Izhod 2.\n";
do {
cout<<"Wywedete broj wyrhowe: ";cin>>N;
//realno se izchertawat wsichki diagonali ot edin i syshi wryh bes 2-ta sysedni
//t.e. mogat da se izchertaqt ot edin wryh naj-mnogo N-3 diagonala
broi(N);cout<<endl;
cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
}while (ose=='y');
return 0;/
}//kraj na programata
многоъгълник - апотема
Имаме правилен многоъгълник, за който са въведени n - брой страни и m - дължина на страна. Да се изчислят апотемата в този многоъгълник, както и радиуса на описаната окръжност.
Алгоритъм
Апотема в правилен многоъгълник е най-късото разстояние между страна от многоъгълника и центъра на вписаната в същия многоъгълник окръжност, т.е. апотемата съвпада с радиуса на вписаната в многоъгълника окръжност.
При дадени окръжност и хорда апотемата е перпендикулярът от центъра на окръжността към средата на хордата.
m - страна на правилния многоъгълник
n - брой страни в многоъгълника
R - радиус на описаната окръжност
Дължина на апотема a в правилен многоъгълник: a = m /(2*tan(pi/n)
радиус на описаната около правилен многоъгълник окръжност R =a/ cos(pi/n)
#include <iostream>
#include <cmath>
using namespace std;
double pi=3.141592;
int main ()
{ int n;
double m,a,R;
cout<<"Imame prawilen n-ygylnik, kydeto n e estestweno chislo ot \n";
cout<<"interwala [3..101] i predtswlqwa broq wyrhow w mnogoygylnika.\n";
cout<<"Dylvinata na wsqka ot stranite w mnogoygylnika e m.\n";
cout<<"Po wywedeni n i m da se izchisli apotemata a i radiusa na \n";
cout<<"opisanata okolo mnogoygylnika okryvnost.\n";
cout<<"Primer n=6; m=5 Izhod a= 4.33013; R=5 \n";
do {
cout<<"Wywedete broq strani w mnogoygylnika [3..101]: ";cin>>n;
} while (n<3);//zashita po whod
cout<<"Wywedete dylvina na stranata: ";cin>>m;
a = m /(2*tan(pi/n));
cout<<"Dylvina na apotemata w mnogoygylnika: "<<a<<endl;
R = a/ cos(pi/n);
cout<<"Radius na opisanata okryvnost: "<<R<<endl;
system ("pause");
return 0;
}//kraj na programata
многоъгълник - периметър
За всеки триъгълник от равнината е валидно твърдението - дължината на най-голямата страна е по-малка от сумата на дължините на останалите страни. Това правило важи и за многоъгълник. Да разгледаме примерна задача за периметър на многоъгълник. Имаме многоъгълник с N броя страни не непременно равни. Дължините на страните са естествени числа. Да се състави програма, чрез която се въвеждат дължините на страните в този многоъгълник и се извежда неговия периметър или съобщение, че тези страни не формират многоъгълник.
АлгоритъмВъвеждаме N - брой страни в многоъгълника.
В цикъл с брой стъпки N въвеждаме дължината на всяка от страните в този многоъгълник.
Събираме последователно дължината на всяка една страна - натрупваме стойност за периметър.
Последователно проверяваме дали това не е най-голямата страна в многоъгълника.
След края на цикъла проверяваме дали удвоенатта дължина на най-дългата страна е по-малка от изчислената стойност на периметъра в този многоъгълник.
В зависимост от резултата се връща стойността на периметъра или 0 - не е формиран затворен многоъгълник.
Следващата програма дава решена задача за периметър на многоъгълник:
#include <iostream>
#include <cmath>
using namespace std;
double const pi=3.141592;
int polygon (int N);
int main()
{ int N,P;
char ose;
cout<<"Imame izpyknal mnogoygylnik s broj strani N - estestweno chislo >2.\n";
cout<<"Wywedeni sa N estestweni chisla za dylvini na strani.\n";
cout<<"Dylvinite na wsqka ot stanite prinadlevi na interwala [1..101].\n";
cout<<"Da se systawi programa, chrez koqto se wywevdat stranite i se\n";
cout<<"izwevda perimetyra na mnogoygylnika, ako toj e izpyknal.\n";
cout<<"Primer: N=5; 1,2,3,4,8 Izhod: 18\n";
do {
cout<<"Wywedete broj strani: ";cin>>N;
P = polygon (N); //izchislqwa perimetyr na mnogoygylnik
if (P)
cout<<"perimetyr na mnogoygylnik "<<P<<endl;
else cout<<"wywedenite strani ne formirat izpyknal mnogoygylnik!\n";
cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
} while (ose=='y');
system("pause");
return 0;
}//kraj na programa mnogoygylnik
int polygon (int N)
{int i, p, ma_x, strana , perimetyr =0 ;
cout<<"Wywedete dylvina na strana: ";cin>>strana;
ma_x = p = strana ; //nachalna inicializaciq - izbor na maksimalen element
for (i=1;i<N;i++)
{ cout<<"Wywedete dylvina na strana: ";cin>>strana;
if (ma_x<strana) ma_x=strana;// naj-dylga strana w mnogoygylnik
p+=strana; // danni za perimetyr
} // broj strani w mnogoygylnik
if (p>2*ma_x) perimetyr = p; //perimetyr > 2 * naj-dylgata strana w mnogoygylnik
return perimetyr ;
} // kraj polygon
Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.