Sunteți pe pagina 1din 9

#include<iostream> #include<cmath> #include<cctype> #include<iomanip>

using namespace std;

int SSS(double, double, double, double&, double&, double&); // Prototypes of functions int ASA(double, double, double, double&, double&, double&); // int SAS(double, double, double, double&, double&, double&); // double height(double, double, double); // double area(double, double, double); //

const double PI = 3.1415926; // the PI

void printmenu() { cout << "\n\n\nThe following program is created by Krunal Patel on october 15, 2011."; cout << "\nIt is capable of performing certain calculations of triangle."; cout << "\nIt gives user different types of methods to experiance."; cout << "\nThe program,itself calls functions to perform this calculations."; cout << "\n\n\nUser Please select a desire method to solve a triangle." << endl; cout << "\n\nA. Solve a triangle given the lengths of three sides."; cout << "\nB. Solve a triangle given two angles and a side."; cout << "\nC. Solve a triangle given two sides and a angle.";

cout << "\nD. Calculate the height of a triangle given three sides."; cout << "\nE. Calculate the area of a triangle given three sides."; cout << "\nF. Quit."; cout << endl << endl;

int main() { double side_A(0.0), side_B(0.0), side_C(0.0); double angle_A(0.0); double angle_B(0.0); double angle_C(0.0); while(true) { printmenu(); char choice;

cout << "User Please Enter your choice: "; cin >> choice;

switch(choice) { case 'A': case 'a': SSS(side_A, side_B, side_C, angle_A, angle_B, angle_C); break;

case 'B': case 'b': ASA(angle_A, side_B, angle_C, side_A, angle_B, side_C); break; case 'C': case 'c': SAS(side_A, angle_B, side_C, angle_A, side_B, angle_C); break; case 'D': case 'd':; break; case 'E': case 'e':; break; case 'F': case 'f': default: cout << "error" << endl; break; } }

system("pause"); return 0; }

int SSS(double side1, double side2, double side3, double& angle_A, double& angle_B, double& angle_C) { cout << "\n\nEnter the length of the first side: "; cin >> side1; cout << "Enter the length of the second side: "; cin >> side2; cout << "Enter the length of the third side: "; cin >> side3;

if( side1 <= 0 || side2 <= 0 || side3 <= 0) { cout<<"\nLengths of Sides must be greater than or equal to zero.\n"<<endl; }

if(side2 < side3) { double x = side3; side3 = side2; side2 = x; } if(side1 < side2) { double x = side2;

side2 = side1; side1 = x; }

if(side2 + side3 <= side1) { cout << "The Triangle is invalid!!\n" << endl; cout << "Try Agin!!\n" << endl; }

angle_A = acos((pow(side2,2) + pow(side3,2) - pow(side1,2))/(2*side3*side2)); angle_B = asin((side2/side1) * sin(angle_A)); angle_C = asin((side3/side1) * sin(angle_A));

cout << "\nSIDE \t OPPOSING ANGLE"; cout << "\n==== \t ==============" << endl; cout << "(Length) (Radians) (Degrees)" << endl; cout << setprecision(4) << endl; cout << fixed << setw(3) << endl; cout << side1 << "\t " << angle_A << " " << (angle_A) * (180/3.1415) << endl; cout << side2 << "\t " << angle_B << " " << (angle_B) * (180/3.1415) << endl; cout << side3 << "\t " << angle_C << " " << (angle_C) * (180/3.1415) << endl;

system("pause");

exit(1) ; }

int ASA(double angle_1, double side_2, double angle_3, double& side_1, double& angle_2, double& side_3) { cout << "\n\nPlease Enter your angles in degrees!\n" << endl; cout << "Enter the first angle: "; cin >> angle_1; cout << "Enter the side between first and second angles: "; cin >> side_3; cout << "Enter the second angle: "; cin >> angle_2;

if(angle_1 <= 0 || angle_2 <= 0 || angle_3 <= 0) { cout << "Angles must be greater than zero.\n" << endl; }

if(angle_1 + angle_2 > 180) { cout << "The Triangle is invalid!!\n" << endl; cout << "Try Agin!!\n" << endl; }

angle_3 = 180 - angle_1 - angle_2; side_1 = side_3 * (sin(angle_1*PI/180) / sin(angle_3*PI/180)); side_2 = side_3 * (sin(angle_2*PI/180) / sin(angle_3*PI/180));

cout << "\nOPPOSING ANGLE \t\t SIDE"; cout << "\n============== \t\t ====" << endl; cout << "(Degrees) (Radians) (Length)" << endl; cout << setprecision(4) << endl; cout << fixed << setw(3) << endl; cout << angle_1 << "\t " << angle_1*PI/180 <<"\t"<< side_1 << endl; cout << angle_2 << "\t " << angle_2*PI/180 <<"\t"<< side_2 << endl; cout << angle_3 << "\t " << angle_3*PI/180 <<"\t"<< side_3 << endl;

system("pause"); exit(1); }

int SAS(double side_1, double angle_2, double side_3, double& angle_1, double& side_2, double& angle_3) {

cout << "\n\nPlease Enter your angle in degrees!\n" << endl; cout << "Enter the first side: "; cin >> side_1; cout << "Enter the angle between first and third sides: "; cin >> angle_2;

cout << "Enter the third side: "; cin >> side_3;

if(angle_1 <= 0 || angle_2 <= 0 || angle_3 <= 0) { cout << "Angles must be greater than zero.\n" << endl; }

if(angle_1 + angle_3 > 180) { cout << "The Triangle is invalid!!\n" << endl; cout << "Try Agin!!\n" << endl; }

side_2 = pow(pow(side_1, 2)+pow(side_3, 2) - 2 * side_1 * side_3 * cos(angle_2*PI/180),(0.5)); angle_1 = (asin((side_1) * (sin(angle_2*PI/180)/side_2)))*180/PI; angle_3 = 180 - angle_1 - angle_2;

cout << "\nSIDE \t OPPOSING ANGLE"; cout << "\n==== \t ==============" << endl; cout << "(Length) (Degrees) (Radians)" << endl; cout << setprecision(4) << endl; cout << fixed << setw(3) << endl; cout << side_1 << "\t " << angle_1 << " " << (angle_1) * (3.1415/180) << endl; cout << side_2 << "\t " << angle_2 << " " << (angle_2) * (3.1415/180) << endl;

cout << side_3 << "\t " << angle_3 << " " << (angle_3) * (3.1415/180) << endl;

system("pause"); exit(0); }

S-ar putea să vă placă și