Успоредник - страни, периметър, лице, диагонали

лице на успоредник по две страни и ъгъл
лице на успоредник по диагонали и ъгъл
ориентирано лице на успоредник
лице на успоредник - остър ъгъл
ромб с остър ъгъл 60 градуса - лице и периметър
периметър на успоредник по две височини

Четириъгълник, на който срещулежащите страни са две по две успоредни и равни ще наричаме успоредник. Друго название за успоредник е ромбоид. Срещулежащите му страни са успоредни и равни. Друг вид успоредник е ромб - срещулежащите страни са успоредни и всички страни са равни. Свойства на успоредник: срещулежащите ъгли са равни. Сборът от прилежащите ъгли към всяка страна е равен на 180 градуса; двойките срещуположни страни са успоредни и равни; диагоналите в успоредник взаимно се разполовяват.

лице на успоредник a*ha

Разглеждаме успоредник ABCD със страни a,b, височина ha и ъгъл A срещу височината ha.
Лице на успоредник: S = a * ha = b*hb = a*b*cos(A).
Периметър на успоредник: P=2*(a+b).
Отношение между диагонали AC, BD и страни AB, BC в успоредник: AC*AC + BD*BD = 2*(AB*AB +BC*BC)

лице на успоредник b*hb

лице на успоредник по две страни и ъгъл

Даден е успоредник ABCD с въведени дължини на страните AB, BC, както и ъгъла между тях. Търсим лице и периметър на същия успоредник.

Алгоритъм:
P=2*(AB+BC) - периметър на успоредника
Sabcd=AB*BC*sin(YGbac) - лице на успоредника
Дължини на диагонали по въведени две прилежащи страни ъгъл между тях можем да изчислим чрез косинусовата теорема:
d1=sqrt(a*a + b*b - 2*a*b*cos(A) ) - по-късия диагонал
d2=sqrt(a*a + b*b + 2*a*b*cos(A) )

Следващата примерна програма дава решена задача за лице и периметър на успоредник по въведени прилежащи страни ъгъл между тях
#include <iostream>
#include <cmath>

using namespace std;
double const pi=3.141592;

void parallelogram (double AB,  double BC, double yg)
{ double YGbac, ha, hb, Sabcd, P;
    YGbac =yg*pi/180;//ygyl w radiani
    ha=BC*sin(YGbac);//wisochinata kym stranata AB
    cout<<"Wisochina kym stranata AB: "<<ha<<endl;  
    hb=AB*sin(pi-YGbac);//wisochinata kym stranata AB  
    cout<<"Wisochina kym stranata BC: "<<hb<<endl;     
    P=2*(AB+BC);
    cout<<"Perimetyr na usporednika: "<<P<<endl;    
    Sabcd=AB*ha;
    cout<<"Lice na usporednika: "<<Sabcd<<endl;    
}//void parallelogram

int main ()
{ double AB,BC, yg;
  cout<<"Imate usporednik ABCD, za kojto sa wywedeni dylvini na dwe\n";
  cout<<"sysedni strani AB, BC, kakto i ygyla mevdu tqh. Tyrsim lice S,\n";
  cout<<"perimetyr P i dwete wisochinai na usporednika ABCD.\n";
  cout<<"Primer: AB=10; BC=20; yg=30 Izhod: S=100; P=60; \n";
  cout<<"Wywedete strana AB: ";cin>>AB;
  cout<<"Wywedete diagonal BC: ";cin>>BC;
  cout<<"Wywedete ygyl mevdu stranite BAC: ";cin>>yg;
  parallelogram (AB, BC, yg);
system("pause");
return 0;
}//kraj na programata usporednik 

Начало на страницата

лице на успоредник по диагонали и ъгъл

Имаме успоредник ABCD и точка M в него - пресечна точка на диагоналите. Въведени са: дължина на диагонали AC, BD и ъгъл AMB между тях. Търсим стойности за: лице S и периметър P на този успоредник.

лице на успоредник по диагонали и ъгъл

Алгоритъм
Транслираме диагонала BD в посока DC. Ще отбележим тази отсечка с CF.
За триъгълника ACF знаем дължини на страните Dac, Dcf - двата диагонала, както и ъгъла ACF = AMB.
По косинусовата теорема: c=sqrt(a*a+b*b - 2*a*b*cos(C))
изчисляваме страната AF
AF = sqrt(Dac*Dac+Dcf*Dcf - 2*Dac*Dcf*cos(acf))
Основа на успоредник AB = AF/2
Изчисляваме лицето на триъгълника AFC по формулата на Херон - Safc
p = (AF+Dac+Dcf)/2 - полупериметър;
Safc=sqrt(p*(p-AF)*(p-Dac)*(p-Dcf))
Спускаме от връх C на успоредника височина CH към страната AF.
Hch =(2*Safc) / AF
За триъгълника AFC отсечката BC е медиана към страната AF, но също е и страна на успоредника.
BC =sqrt(2*Dac*Dac + 2*Dcf*Dcf - AF*AF)/2
Pabcd = 2*(AB+BC) - периметър на успоредник;
Sabcd = Hch*AB - лице на успоредник.

Следващата примерна програма дава решена задача за лице и периметър на успоредник:

#include <iostream>
#include <cmath>
using namespace std;
double const pi=3.141592;

int main ()
{ double a,b, Dac,  Dcf, Sacf, Sabcd, Pabcd, AF, YGacf ,h ,p,yg;
  cout<<"Imate usporednik ABCD, za kojto sa wywedeni dylvini na\n";
  cout<<"diagonalite, kakto i ygyla mevdu tqh - sreshulevash na AB.\n";
  cout<<"Tyrsim lice S, perimetyr P na usporednika ABCD.\n";
  cout<<"Primer: Dac=30; Dcf=40; ACF=90 Izhod: S=600; P=100;  \n";
  cout<<"Wywedete diagonal AC: ";cin>>Dac;
  cout<<"Wywedete diagonal BD: ";cin>>Dcf;
  cout<<"Wywedete ygyl mevdu diagonalite: ";cin>>yg;

    YGacf=yg*pi/180;//ygyl w radiani
    AF= sqrt(Dac*Dac +Dcf*Dcf - 2*Dac*Dcf*cos(YGacf));
    a=AF/2;//strana AB na usporednika
    cout<<"Strana AB: "<<a<<endl;
    p=(Dac+Dcf+AF)/2;//poluperimetyr
    Sacf=sqrt(p*(p-Dac)*(p-Dcf)*(p-AF));//formula na Heron
    h=2*Sacf/AF; // liceto na triygylnika Sacf=2*a*h/2  
    cout<<"Wisochina kym stranata AB: "<<h<<endl;
    b =sqrt(2*Dac*Dac + 2*Dcf*Dcf - AF*AF)/2; //mediana CB w triygylnika ACF 
    cout<<"Strana BC: "<<b<<endl;
    Pabcd = 2*(a+b); //perimetyr na usporednika
    cout<<"Peimetyr na usporednika: "<<Pabcd<<endl;
    Sabcd = h*a;// lice na usporednik
    cout<<"Lice na usporednika: "<<Sabcd<<endl;
system("pause");
return 0;
}//kraj na programa lice na usporednik 

Начало на страницата

ориентирано лице на успоредник

Въведени са координати на 3 последователни върха ABC на успоредник. Търсим лицето на същия успоредник.

Алгоритъм
Въвеждаме данните за върхове на успоредника в двумерен масив: 3 реда за върхове и 2 колони за абсциса, ордината.
Съставяме и изчисляваме матрицата за формиране векторно произведение:
x1, y1, 1
x2, y2, 1
x3, y3, 1
където с индексите 1,2,3 са означени поредните номера на връх от успоредника.
S = abs(x1*y2 + x3*y1 + x2*y3 - x3*y2 - x1*y3 - x2*y1)
Знакът на резултата зависи и от посоката на обхождане на върховете - взема се абсолютната стойност на изчисленото лице на успоредник.

Следващата примерна програма дава решена задача за ориентирано лице на успоредник:
#include <iostream>
#include <cmath>
using namespace std;
int const N=3;//broj wywedeni wyrhowe ot usporednik 

float orientirano_lice(int mas[][2])
{float S;
  S = mas[0][0]*mas[1][1]; 
  S+= mas[2][0]*mas[0][1];
  S+= mas[1][0]*mas[2][1];
  S-= mas[2][0]*mas[1][1];
  S-= mas[0][0]*mas[2][1];
  S-= mas[1][0]*mas[0][1];
  return fabs(S);
}//orientirano lice na usporednik

void vhod( int mas[][2], int i)
{  cout<<"Wywedete koordinati po abscisa za wryh "<<char(65+i)<<": ";
   cin>>mas[i][0];
   cout<<"Wywedete koordinati po ordinata za wryh "<<char(65+i)<<": ";
   cin>>mas[i][1];
}//vhod

int main()
{int i, mas[N][2]={ {1,3}, {4,3}, {1,10}};//koordinati na wyrhowe w usporednik 
   char ose;
   float S;
   cout<<"Imame danni za koordinati na 3 posledowatelni wyrha ot usporednik.\n";
   cout<<"Koordinaite sa estestweni chisla  ot interwala [1..101].\n";
   cout<<"Tyrsim orientiranoto lice na tozi usporednik.\n"; 
   cout<<"Primer: 1,3; 4,3; 4,10 Izhod 21\n";   
   do {
    for (i=0;i<N;i++)   vhod(mas,i);//wywevda danni za koordinati na wyrhowe
    S=orientirano_lice(mas);// absoliutnata stojnost na weche izchislenoto lice
    cout<<" lice na usporednik  "<<S<<endl;
    cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
  } while (ose=='y');             
 system("pause");
return 0;
}//kraj na programa lice na usporednik 

Начало на страницата

лице на успоредник - остър ъгъл

Даден е успоредник и два диагонала в него. Въведени данни: P - периметър на успоредник, Q - разлика в периметрите на двойката прилежащи триъгълници, както S - лице на успоредник. Търсим острия ъгъл yg на този успоредник.

лице на успоредник - остър ъгъл

Алгоритъм
От пресечната точка на двата диагонала в успоредника са образувани 4 триъгълника.
Разглеждаме едната двойка прилежащи триъгълника, чиято сума от лица е половината от лицето на целия успоредник.
Ще означим страните на успоредника с a,b, периметър P, разлика в периметрите на триъгълниците Q, диагонали в успоредника d1, d2.
Двата диагонала в този успоредник взаимно се разполовяват. Така d1 = 2 * m, d2 = 2 * n
Ще означим с P1, P2 периметрите на двата триъгълника
P1 = a + m + n
P2 = b + m + n
Q = P1 - P2 = a - b
P = 2 * (a + b)
От горната система извеждаме поотделно всяка от страните в този успоредник
страна a = (0.5 * P + Q)/2
страна b = (0.5 * P - Q)/2
лице на успоредник S = a * b * sin(yg)

Следващата примерна програма съдържа решена задача за лице на успоредник - остър ъгъл:

#include <iostream>
#include <cmath>
using namespace std;
double pi=3.141592;

double parallelogram(double P, double Q, double S)
{double a,b,yg;
 /*    
  P1 = a + m + n 
  P2 = b + m + n
  Q = P1 - P2 = a - b
  P = 2 * (a + b)
*/
  a = (0.5 * P + Q)/2;
  b = (0.5 * P - Q)/2;
  yg=asin(S/( a * b)); //funkciq arcus sinus   
  return yg; 
} // parallelogram

int main()
{double P,Q,S,yg;
  char ose;
  cout<<"Imate usporednik s wywedeni danni za: perimetyr P i lice S.\n";
  cout<<"Razlikata mevdu perimetrite na dwa sysedni triygylnika e Q\n";
  cout<<"Da se izchisli ostriq ygyl na tozi usporednik.\n";
  cout<<"Primer: P=70, Q=5; S=150 Izhod: yg=30\n";
   do {
  cout<<"Wywedete perimetyr na usporednik ";cin>>P;
  cout<<"Wywedete razlika w perimetrite na triygylnicite: ";cin>>Q;
  cout<<"Wywedete lice na usporednik ";cin>>S;
   yg = parallelogram( P, Q, S);
   cout<<"Ygyl w desetichni gradusi: "<<yg*180/pi<<endl;
   cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
  } while (ose=='y');
 system("pause");
 return 0;
} //kraj na programa ygyl na usporednik 


Начало на страницата

ромб с остър ъгъл 60 градуса - лице и периметър

Особен случай на успоредник е ромб. За него са валидни следните твърдения: Четирите страни на ромба са равни, като две по две са успоредни, а срещуположните ъгли на ромба са равни. Особености на диагонали в ромб - те са взаимно перпендикулярни, явяват се ъглополовящи и се разполовяват от пресечната си точка. Да разгледаме следната примерна задача за ромб: Имаме успоредник с остър ъгъл 60 градуса и въведена дължина на по-късия диагонал. Търсим периметър и лице на този ромб.

ромб с остър ъгъл 60 градуса - лице и периметър

Алгоритъм:
От условието по-късият диагонал разделя на два равностранни триъгълника този ромб. Така:
страна на ромб a = d
височина на ромб = a*sqrt(3)/2
Периметър на ромб p = 4*d
Лице на ромб S = 2 * (a*a*sqrt(3)) / 4 = a*a*sqrt(3) / 2

Следващата примерна програма дава решена задача за лице и периметър на ромб:

#include <iostream>
#include <cmath>
using namespace std;

double a;
#define  romb a*a*sqrt(3)/2
#define perimetyr 4*a

int main ()
{ double d,P,S;
  cout<<"Imame usporednik s ostyr ygyl 60 gradusa, za kojto e wyweden \n";
  cout<<"d - po-kysiq diganol w romba. \n";
  cout<<"Tyrsim S - lice i P - perimetyr w tozi romb.\n";
  cout<<"Pirmer: d=10 Izhod S= 86.6025; P=40 \n";
  cout<<sqrt(3)<<endl;
  cout<<"Wywewedete po-kysiq diagonal w romb: ";cin>>d;
  a=d;//stranata na tozi romb e rawna na po-kysiq diagonal 
  S = romb ;
  P = perimetyr ;
  cout<<"lice na romb : "<<S<<endl;   
  cout<<"perimetyr na romb : "<<P<<endl;
  system("pause");
  return 0;
}//kraj na programa usporednik  -  romb 

Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.

Начало на страницата

 
Размер на шрифта
Increase Font Size Option 3 Reset Font Size Option 3 Decrease Font Size Option 3
Bulgarian Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish
Търсене в сайта: