Да се създаде програма с функции, улесняващи решаването на геометрични задачи:
- Функция за проверка дали една един правоъгълник е квадрат
- Функция за проверка дали 3 числа са валидни страни на триъгълник
- * Функция за проверка вида на триъгълник – равнобедрен, равностранен, правоъгълен, друг
- Функции за пресмятане на лице и обиколка на квадрат, правоъгълник, кръг, триъгълник
- Функция, която получава параметрите на правоъгълник и извежда пълната информация за него: дали е квадрат и лицето и обиколката му
- Функция, която получава три числа и извежда пълната информация: дали са страни на триъгълник, видът му и и лицето и обиколката му
Напишете програма, която демонстрира тези функции.


#include <iostream> using namespace std; // dali e kvadrat? void kvadrat_li (int a, int b) { if (a==b) { cout<<"yes"<<endl; } else { cout<<"no"<<endl; } } // dali e triugulnik? void triugulnik_li (int a, int b, int c) { if ((a+b>c)or(b+c>a)or(c+a>b)) { cout<<"yes"<<endl; } else { cout<<"no"<<endl; } } int main(int argc, char** argv) { int a, b, c; cin>>a>>b>>c; //dali e kvadrat kvadrat_li(a,b); //dali e tiugulnik triugulnik_li(a,b,c); return 0; }#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char** argv) { // dali edin pravougulnik e kvadrat { int a, b; a=2; b=2; if (a==b) cout << "kvadrat e" <<endl; else cout << "ne e kvadrat"<<endl; } // dali 3 chisla sa validni strani na triugulnik { int a, b,c; a=2; b=5; c=10; if ((a+b>c) and (a+c>b) and (b+c>a)) cout<<"cislata sa validni strani"; else cout<<"chislata ne sa validini strani"; }#include <cstdlib> #include <iostream> #include <math.h> using namespace std; //namirane na vida na triugulnika void kakuv_e (int a,int b,int c){ if ((a==b)&&(b==c)){ cout<<"triugulnika e ravnostranen"<<endl; } else if ((a!=b)&&(b!=c)&&(a!=c)){ cout<<"triugulnika e raznostranen"<<endl; } else if (((a=b)!=c)||((a=c)!=b)||((b=c)!=a)){ cout<<"triugulnika e ravnobedren"<<endl; } if (((c*c)==(a*a)+(b*b))||((a*a)==(c*c)-(b*b))||((b*b)==(c*c)-(a*a))){ cout<<"triugulnika e pravougulen"<<endl; } } int main(int argc, char** argv) { double a,b,c; cin>>a>>b>>c; kakuv_e(a,b,c); //ot Alex, Veli, Kalo :D return 0; }Браво, много добре!
#include <iostream> #include <cstdlib> #include <iostream> #include <cmath> using namespace std; bool proverkaKvadrat(double a,double b){ if(a==b) return true; else return false; } bool provekraTriugulnik(double a,double b,double c){ if ((a+b>c)&&(a+c>b)&&(b+c>a)) return true; else return false; } double proverkaAllTrigulnik(double a,double b,double c){ if ((c*c==(a*a)+b*b)||(a*a==(c*c)-b*b)||(b*b==(c*c)-a*a)){ cout<<"Pravougulen triugulnik!"; } if ((a==b)||(b==c)||(c==a)){ cout<<"Ravnobedren triugulnik!"; } if (a==b==c){ cout<<"Ravnostranen triugulnik"; } } double daliEKvadrat(double a,double b){ if (a==b) cout<<"Kvadrat s lice S="<<a*a<<" i obikolka P="<<4*a; else cout<<"Pravougulnik s lice S="<<a*b<<" i obikolka P="<<2*(a+b); } double proverkaTri(double a,double b,double c){ double p; p=a+b+c; if ((a+b>c)&&(a+c>b)&&(b+c>a)){ if ((a==b)||(b==c)||(c==a)) cout<<"Ravnobedren triugulnik s lice S="<<(sqrt((c/2)*(c/2)+b*b)*c)/2<<" i obikolka P="<<p; if(a==b==c) cout<<"Ravnostranen triugulnik s lice S="<<(a*sqrt(3))/2<<" i obikolka P="<<p; else cout<<"Raznostranen triugulnik s lice S="<<sqrt((p/2)*(p/2-a)*(p/2-b)*p/2-c)<<" i boikolka P="<<p; } else { cout<<"Ne e triugulnik!"; } } int main(){ if(proverkaKvadrat(1,4)){ cout<<"Kvadrat e!"; }else { cout<<"Ne e kvadrat!"; } if (provekraTriugulnik(2,7,8)){ cout<<"Triugulnik e!"; }else { cout<<"Ne e triugulnik"; } return 0; }Много добре! Но си огледай типа на връщания резултат.
Fixed
#include <iostream> #include <cstdlib> #include <iostream> #include <cmath> using namespace std; //------------------------------------------------------------ bool proverkaKvadrat(double a,double b){ if(a==b) return true; else return false; } //------------------------------------------------------------ bool provekraTriugulnik(double a,double b,double c){ if ((a+b>c)&&(a+c>b)&&(b+c>a)) return true; else return false; } //------------------------------------------------------------ void proverkaAllTrigulnik(double a,double b,double c){ if ((c*c==(a*a)+b*b)||(a*a==(c*c)-b*b)||(b*b==(c*c)-a*a)) { cout<<"Pravougulen triugulnik!"; } if ((a==b)||(b==c)||(c==a)) { cout<<"Ravnobedren triugulnik!"; } if (a==b==c) { cout<<"Ravnostranen triugulnik"; } } //------------------------------------------------------------ void daliEKvadrat(double a,double b){ if (a==b) cout<<"Kvadrat s lice S="<<a*a<<" i obikolka P="<<4*a; else cout<<"Pravougulnik s lice S="<<a*b<<" i obikolka P="<<2*(a+b); } //------------------------------------------------------------ void proverkaTri(double a,double b,double c){ double p; p=a+b+c; if ((a+b>c)&&(a+c>b)&&(b+c>a)) { if ((a==b)||(b==c)||(c==a)) cout<<"Ravnobedren triugulnik s lice S="<<(sqrt((c/2)*(c/2)+b*b)*c)/2<<" i obikolka P="<<p; if(a==b==c) cout<<"Ravnostranen triugulnik s lice S="<<(a*sqrt(3))/2<<" i obikolka P="<<p; else cout<<"Raznostranen triugulnik s lice S="<<sqrt((p/2)*(p/2-a)*(p/2-b)*p/2-c)<<" i boikolka P="<<p; } else { cout<<"Ne e triugulnik!"; } } int main(){ if(proverkaKvadrat(1,4)) { cout<<"Kvadrat e!"; }else { cout<<"Ne e kvadrat!"; } if (provekraTriugulnik(2,7,8)) { cout<<"Triugulnik e!"; }else { cout<<"Ne e triugulnik"; } return 0; }Много добре, Марти, но помисли няма ли как в proverkaTri() да използваш другите функции, които си направил, вместо да дублираш код.
#include <cstdlib> #include <iostream> using namespace std; //proverqva dali e kvadrat void kvadrat_li_e (int a, int b) { if (a==b) { cout<<"yes"<<endl; } else { cout<<"no"<<endl; } } //proverqva dali dadenite 3 strani obrazuvat triugulnik void triugulnik_li (int a, int b, int c) { if ((a+b>c)or(b+c>a)or(c+a>b)) { cout<<"yes"<<endl; } else { cout<<"no"<<endl; } } //informaciq za pravougulnik void pravougulnik (int x, int y) { if (x==y) { cout<<"kvadrat"<<endl; } else if (x!=y) { cout<<"pravougulnik"<<endl; } int S=x*y; int P=x+y; cout<<"S="<<S<<endl; cout<<"P="<<P<<endl; } //vid na triugulnika void triugulnik (int a, int b, int c) { if ((a==b)or(a==c)or(b==c)) { cout<<"ravnobedren"<<endl; } if ((a==b)and(b==c)) { cout<<"ravnostranen"<<endl; } if ((a!=b)and(b!=c)) { cout<<"raznostranen"<<endl; } } int main(int argc, char** argv) { int x, y,z; cin>>x>>y; kvadrat_li_e(x,y); triugulnik_li(x,y,z); pravougulnik(x,y); triugulnik(x,y,z); return 0; }Браво, Иви, супер! Но помисли има ли как в pravougulnik () да използваш kvadrat_li_e (), а в triugulnik() – triugulnik_li ().
#include <iostream> #include<cmath> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; double okrujnost(double a){ double pi=3.14; double P=2*pi*a; double S=a*a*pi; cout<<"Obikolkata na okrujnostta e: "<<P<<endl; cout<<"liceto na okrujnostta e: "<<S<<endl; } double kakuv_e_triugulnika (int a,int b,int c){ if ((a==b)&&(b==c)){ cout<<"triugulnika e ravnostranen"<<endl; int P=a+b+c; int S=(a*a+sqrt(3))/2; cout<<"P="<<P<<endl; cout<<"S="<<S<<endl; } else if ((a!=b)&&(b!=c)&&(a!=c)){ cout<<"triugulnika e raznostranen"<<endl; int P=a+b+c; int p=(a+b+c)/2; int S=sqrt(p*(p-a)*(p-b)*(p-c)); cout<<"P="<<P<<endl; cout<<"S="<<S<<endl; } else if (((a=b)!=c)||((a=c)!=b)||((b=c)!=a)){ cout<<"triugulnika e ravnobedren"<<endl; int P=((2*a)+b)||((2*c)+a)||((2*b)+c); int p=(a+b+c)/2; int S=sqrt(p*(p-a)*(p-b)*(p-c)); cout<<"P="<<P<<endl; cout<<"S="<<S<<endl; } if (((c*c)==(a*a)+(b*b))||((a*a)==(c*c)-(b*b))||((b*b)==(c*c)-(a*a))){ cout<<"triugulnika e pravougulen"<<endl; int S=(a*b)/2; int P=a+b+c; cout<<"S="<<S<<endl; cout<<"P="<<P<<endl; } } double daliEKvadrat(double a,double b){ if (a==b){ cout<<"kvadrat e "<<endl; int P=4*a; int S=a*a; cout<<"P="<<P<<endl; cout<<"S="<<S<<endl; } else{ cout<<"pravougulnik e "<<endl; int P=2*(a+b); int S=a*b; cout<<"P="<<P<<endl; cout<<"S="<<S<<endl; } } double Usporednik(double a, double b, double h){ if(a!=b){ cout<<"usporednik e"<<endl; int P=2*(a+b); int S=a*h; cout<<"P="<<P<<endl; cout<<"S="<<S<<endl; } } int main(int argc, char** argv) { double a,b,c,h; cout<<"vavedete stoinosti za a,b,c,h"<<endl; cin>>a>>b>>c>>h; kakuv_e_triugulnika(a,b,c); okrujnost(a); daliEKvadrat(a,b); Usporednik(a,b,h); return 0; }Алекс, много изчерпателно и добре оформено, но пробвай функциите от първите 4 точки не да отпечатват стойността, а да я връщат като резултат. Например отделна функция за лице на квадрат и отделна за обиколка и т.н. И после да използваш тези стойности във функциите от 5-та и 6-та точка, като извикаш първите функции.