- ъглополовяща-бисектриса
- Криви
- Разстояние между две точки
- ъгъл градуси радиан
- две окръжности
- диаметър на окръжност
- периметър
- височина, перпендикуляр
- триъгълник - Талес
- триъгълник - Херон
- триъгълник - Питагор
- правоъгълен триъгълник
- успоредник
- правоъгълник
- ромб
- трапец
- правоъгълен трапец
- многоъгълник
- дъга - хорда, ъгъл и радиус
- окръжност
- цилиндър
- конус
- призма
- пирамида
правоъгълник - страни, диагонали, периметър и лице
лице и периметър на правоъгълник
най-голям триъгълник в правоъгълник
ъгъл между диагонали в правоъгълник
най-голямо лице на правоъгълник
два вместени правоъгълника
периметър на правоъгълник – лице и съотношение на страни
Двуизмерна геометрична фигура с четири равни вътрешни ъгъла ще наричаме правоъгълник. Правоъгълникът е частен случай на успоредник с прав ъгъл. В един правоъгълник всяка двойка срещулежащи страни са успоредни, а всяка двойка прилежащи страни сключват прав ъгъл. Квадратът е частен случай на правоъгълник с равни прилежащи страни. Във всеки правоъгълник: срещулежащите ъгли са равни, срещуположните страни са равни, диагоналите са равни и се разполовяват от пресечната си точка. Тази точка е и център на описаната окръжност. Вписана окръжност, която има допирна точка с всяка от страните е възможна само при частния случай на правоъгълник - квадрата. Максималната вписана окръжност в един правоъгълник има диаметър по-малката страна на същия правоъгълник. От определението за правоъгълник следва, че всяка от страните в един правоъгълник се явява и негова височина. Диаметър на описана около правоъгълник окръжност: d = sqrt (a*a +b*b) Диаметър на описана около квадрат окръжност: d = a * sqrt (2) Диаметър на вписана в квадрат окръжност: d = a
лице и периметър на правоъгълник
Дадени са две прилежащи страни a,b от правоъгълник – естествени числа от интервала [1..101]. Търсим периметър P и лице S и радиус на описаната окръжност R за същия правоъгълник.
Алгоритъм:
P = 2*(a+b)
S = a*b
R = 0.5* sqrt(a*a + b*b) – от теоремата на Питагор
Следващата примерна програма дава решена задача за лице и периметър на правоъгълник.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ double a,b,P, S,d;
char ose;
cout<<"Imate prawoygylnik s wywedeni dylvini na stranite a,b - realni\n";
cout<<"chisla ot interwala [1..101]. Tyrsim lice S, perimetyr P i \n";
cout<<"diametyr d na opisanata okolo prawoygylnika okryvnost.\n";
cout<<"Da se systawi programa, chrez koqto se wywevdat stranite\n";
cout<<"a,b i se izchislqwa lice perimetyr na prawoygylnik.\n";
cout<<"Primer: 3,4 Izhod: P=14, S=12, R=5 \n";
do {
cout<<"Wywedete dylvina na stranata a: ";cin>>a;
cout<<"Wywedete dylvina na stranata b: ";cin>>b;
P=2*(a+b);
cout<<"Perimetyr na prawoygylnika: "<<P<<endl;
S=a*b;
cout<<"Lice na prawoygylnika: "<<S<<endl;
d=sqrt(a*a + b*b);
cout<<"Diametyr na opisanata okolo prawoygylnika okryvnost: "<<d<<endl;
cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
} while (ose=='y');
system("pause");
return 0;
}//kraj na programa prawoygylnik
най-голям триъгълник в правоъгълник
Дадени са две прилежащи страни a,b от правоъгълник – естествени числа от интервала [1..101]. Страните на правоъгълника са успоредни на координатните оси, върховете са ABCD. Дадени са и координати на точка M(x,y), принадлежаща на този правоъгълник. Координатите на точката са въведени като относителни спрямо началния връх А в същия правоъгълник. Точката M е свързана с всеки от върховете в правоъгълника като са формирани следните триъгълници AMB, BMC, CMD, DMA. Търсим триъгълника с най-голямо лице.
Алгоритъм:
А) Можем да използваме ориентирано лице за всеки от триъгълниците, като координатите за отделните точки са:
A - x=0, y=0
B - x=a; y=0
C - x=a, y=b
D - x=0, y=b
M - x=Mx; y=My
Последователно изчисляваме лицето на всеки от триъгълниците и определяме най-голямото лице чрез алгоритъм за търсене на максимална стойност в редица.
Б) Последователно изчисляваме лицата на всеки от триъгълник (страна по височина към нея) и записваме стойностите в масив:
0 – Samb=a*My/2
1 – Sbmc = b*(a-Mx)/2
2 – Scmd = a*(b-My)/2
3 – Sdma = b*Mx/2
Определяме най-голямото лице чрез алгоритъм за търсене на максимална стойност в редица.
Следващата примерна програма дава решена задача за най-голям триъгълник в правоъгълник:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ double a,b,Mx,My, Smax,mas[4];
int i, nom;
char ime[4][5]={"AMB", "BMC", "CMD", "DMA"};
char ose;
cout<<"Imate prawoygylnik s wywedeni dylvini na stranite a,b - realni\n";
cout<<"chisla ot interwala [1..101]. W prawoygylnika e wpisana tochka\n";
cout<<"M s koordinati Mx, My, kydeto 0<Mx<a, 0<My<b. Tochkata M se \n";
cout<<"swyrzwa s wseki ot wyrhowete na prawoygylnika ABCD kato\n";
cout<<"obrazuwa triygylnicite AMB, BMC, CMD, DMA. Tyrsim triygylnika\n";
cout<<"s naj-golqmo lice.\n";
cout<<"Da se systawi programa, chrez koqto se wywevdat stranite a,b, \n";
cout<<"Mx, My i se izwevda triygylnika s maksimalno lice.\n";
cout<<"Primer: a=10, b=12, Mx=2, My=3 Izhod: BMC=48 \n";
do {
cout<<"Wywedete dylvina na stranata a: ";cin>>a;
cout<<"Wywedete dylvina na stranata b: ";cin>>b;
cout<<"Wywedete koordinata za Mx: ";cin>>Mx;
cout<<"Wywedete koordinata za My: ";cin>>My;
mas[0] = a*My/2; //- Samb
mas[1] = b*(a-Mx)/2;//- Sbmc
mas[2] = a*(b-My)/2;//- Scmd
mas[3] = b*Mx/2;//- Sdma
nom=0;Smax=mas[0];//inicializaciq
for (i=1;i<4;i++)
{if (mas[i]>Smax) {nom=i; Smax=mas[i];}
}
cout<<"Triygylnikyt "<<ime[nom]<<" e s naj-golqmoto lice: "<<Smax<<endl;
cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
} while (ose=='y');
system("pause");
return 0;
}//kraj na programa prawoygylnik
ъгъл между диагонали в правоъгълник
Дадени са две прилежащи страни a,b от правоъгълник – естествени числа от интервала [1..101]. Ще означим с ABCD върховете на правоъгълника. В страната AB има точка N, разделяща я на отсечки с дължина p и q – AN=p, BN=q. Диагоналът в правоъгълника DB се пресича с отсечката CN в точка M. Търсим ъгъл NMB.
Алгоритъм:
Ще изчислим последователно ъглите NBD,BNC, NMB=180-( NBD+BNC)
Формулата за ъгъла е дадена в градуси, но резултатът ще бъде изведен в радиани.
Разглеждаме правоъгълния триъгълник BAD. Ъгъл ABD = atan(b/(p+q)). Ъгъл NBM=ABD – като общ ъгъл
Разглеждаме правоъгълния триъгълник NBC. Ъгъл BNC = atan(b/q).
NMB=3.141592- ( NBD + BNC )
Следващата примерна програма дава решена задача за ъгъл между диагонали в правоъгълник:
#include <iostream>
#include <cmath>
using namespace std;
double pi=3.141592;
int main()
{double p,q,b, ABD, BNC, NMB;
cout<<"W prawoygylnik ABCD sys strana AD=b ima otsechka CN, delqsha\n";
cout<<"stranata AB na otsechki s dylvina AN=p i BN=q. Diagonalyt BD\n";
cout<<"se presicha s CN w tochka M. Izchislete ygyl NMB w radiani.\n";
cout<<"Primer: AN=2, BN=6, AD=8 Izhod: 1.4289\n";
cout<<"Wywedete dylvina na AN: ";cin>>p;
cout<<"Wywedete dylvina na BN: ";cin>>q;
cout<<"Wywedete dylvina na stranata b: ";cin>>b;
ABD = atan(b/(p+q));
BNC = atan(b/q);
NMB = pi - ( ABD + BNC );//triygylnikyt ima 180 gradusa ili pi radiana
cout<<"Izchislen ygyl NMB w radiani: "<<NMB<<endl;
system("pause");
return 0;
}//kraj na programa prawoygylnik
най-голямо лице на правоъгълник
Даден е правоъгълник с въведени дължини на прилежащите му страни. Дължините на страните са естествени числа от интервала [1..101]. Търсим друг правоъгълник, който има същия периметър както началния, но е с възможно най-голямото лице.
Алгоритъм:От всички правоъгълници с равен периметър квадратът е с най-голямо лице.
Въвеждаме страните на началния правоъгълник a и b.
Изчисляваме периметъра P на началния правоъгълник P=2*(a+b).
Изчисляваме лицето S на правоъгълника S=a*b.
Страната на търсения квадрат е с дължина 1/4 от изчисления периметър на началния правоъгълник kwad=P/4.
Двата периметъра на началния правоъгълник и на квадрата са равни.
Изчисляваме лицето на квадрата S=kwad*kwad.
#include <iostream>
#include <cmath>
using namespace std;
int main ()
{ int a,b;
double kwad,P;
char ose;
cout<<"Imame prawoygylnik s dylvini na prilevashite strani a,b - estestweni\n";
cout<<"chisla ot interwala [1..101]. Tyrsim takyw prawoygylnik, kojto ima\n";
cout<<"syshiq perimetyr, no naj-golqmo wyzmovno lice.\n";
cout<<"Primer: 4, 9 Izhod: 42.25\n";
do {
cout<<"Wywedete strana a: ";cin>>a;
cout<<"Wywedete strana b: ";cin>>b;
P=2*(a + b);//perimetryr na prawoygylnik i kwadrat
kwad=P/4;//stranata na kwadrata
cout<<"Liceto na prawoygylnika e: "<<a*b<<", a perimetyra: "<<P<<endl;
cout<<"Liceto na kwadrata e: "<<kwad*kwad<<", a perimetyra: "<<4*kwad<<endl;
cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
} while (ose=='y');
system("pause");
return 0;
}//kraj na programa prawoygylnik
два вместени правоъгълника
Дадени са два правоъгълника съответно със страни a1,b1 и a2, b2. Трябва да се извърши проверка дали единия правоъгълник може изцяло да се вмести в другия правоъгълник.
АлгоритъмПоследователно се въвеждат лицата на двата правоъгълника a1,b1; a2, b2.
Два правоъгълника могат да се вместят изцяло един в друг ако са изпълнение едновременно и двете условия:
а) по-малката страна на по-малкия по размери правоъгълник е по-малка или равна на по-малката страна на другия правоъгълник;
б) по-голямата страна на по-малкия по размери правоъгълник е по-малка или равна на по-голямата страна на другия правоъгълник.
В задачата се изисква проверка дали единия правоъгълник може да се вмести в другия правоъгълник без да се уточнява дали първия във втория или обратно.
Възможни са няколко подхода:
1) Подреждаме и двете страни във всеки правоъгълник примерно във възходящ ред и после ги сравняваме;
2) извършваме проверка на всеки от 4-те възможни случая.
#include <iostream>
#include <cmath>
using namespace std;
int main ()
{ int a1,b1, a2,b2;
char ose;
cout<<"Imate 2 prawoygylnika s dylvini na prilevashite strani a1,b1,; a2,b2.\n";
cout<<"Da se systawi programa, chrez koqto se wywevdat stranite i se izwevda\n";
cout<<"syob]enie dali ediniq prawoygylnik move izcqlo da se wmesti w drugiq.\n";
cout<<"Primer: 4,9; 10,4 Izhod: Da \n";
do {
cout<<"Wywedete strana a1: ";cin>>a1;
cout<<"Wywedete strana b1: ";cin>>b1;
cout<<"Wywedete strana a2: ";cin>>a2;
cout<<"Wywedete strana b2: ";cin>>b2;
if ( ((a1<=a2) && (b1<=b2)) || ((a1<=b2) && (b1<=a2)) || ((a1>=a2) && (b1>=b2)) || ((a1>=b2) && (b1>=a2)))
{ cout<<"Dwata prawoygylnika se wmestwat edin w drug.\n";}
else { cout<<"Dwata prawoygylnika ne se wmestwat edin w drug.\n";}
cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
} while (ose=='y');
system("pause");
return 0;
}//kraj na programa 2 prawoygylnika
Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.