Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*DIRECTIONS Design and implement a Triangle class.
- *Code a constructor with defaults as well as get and set functions.
- ** Instantiate a vector of at least 3 valid triangles and demonstrate use of the class.
- mathew myers
- Template blank Source document*/
- #include<iostream>
- #include<string>
- #include<sstream>
- #include<cmath>
- #include<vector>
- #include<stdlib.h>
- //globals
- using namespace std;
- bool intTryparse(string s, int& i);
- bool doubleTryparse(string s, double& d);
- bool runAgain(void);
- const long double PI = 3.141592653589793238462643383279502884197169399375105820974944592307816406286;
- class triangle
- {
- private:
- double sideA;
- double sideB;
- double sideC;
- double angleA;
- double angleB;
- double angleC;
- //commented this out because im not sure if the naming will conflict with the globals and so i renamed it.
- /*double calcAngleA(double sideA,double sideB,double sideC)
- {
- return ((pow(sideB,2)+pow(sideC,2)-pow(sideA,2))/(2*sideB*sideC)) ;
- }
- double calcAngleB(double sideA,double sideB,double sideC)
- {
- return ((pow(sideA,2)+pow(sideC,2)-pow(sideB,2))/(2*sideA*sideC)) ;
- }
- double calcAngleC(double sideA,double sideB,double sideC)
- {
- return ((pow(sideB,2)+pow(sideA,2)-pow(sideC,2))/(2*sideB*sideA)) ;
- }*/
- double calcAngleA(double a,double b,double c)
- {
- return acos((pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c)) ;
- }
- double calcAngleB(double a,double b,double c)
- {
- return acos((pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c)) ;
- }
- double calcAngleC(double a,double b,double c)
- {
- return acos((pow(b,2)+pow(a,2)-pow(c,2))/(2*b*a)) ;
- }
- public:
- triangle()
- {
- sideA = 0;
- sideB = 0;
- sideC = 0;
- angleA = 0;
- angleB = 0;
- angleC = 0;
- }
- triangle(double a,double b, double c)
- {
- sideA = a;
- sideB = b;
- sideC = c;
- calcAnglesDeg();
- }
- void setSideA(double a)
- {
- sideA = a;
- }
- void setSideB(double b)
- {
- sideB = b;
- }
- void setSideC(double c)
- {
- sideC = c;
- }
- double getSideA()
- {
- return sideA;
- }
- double getSideB()
- {
- return sideB;
- }
- double getSideC()
- {
- return sideC;
- }
- double getAngleA()
- {
- return angleA;
- }
- double getAngleB()
- {
- return angleB;
- }
- double getAngleC()
- {
- return angleC;
- }
- void calcAnglesDeg()
- {
- angleA = rad2deg(calcAngleA(sideA,sideB,sideC));
- angleB = rad2deg(calcAngleB(sideA,sideB,sideC));
- angleC = rad2deg(calcAngleC(sideA,sideB,sideC));
- }
- void printTriangle()
- {
- cout<<"\nAngle A: "<< angleA <<"\nAngle B: "<< angleB<<"\nAngle C: "<< angleC<<"\nSide A: "<< sideA<<"\nSide B: "<< sideB<<"\nSide C: "<< sideC;
- }
- double rad2deg(double d)
- {
- return d*180/PI;
- }
- };
- void main()
- {
- //Declarations
- do{
- string temp = "";
- double d = 0;
- bool b = false;
- vector<triangle> triangles(2);
- triangles[1].setSideA(3);
- triangles[1].setSideB(4);
- triangles[1].setSideC(5);
- triangles[1].calcAnglesDeg();
- //inputs
- do{
- if(temp == "")
- {
- cout<<"Please enter the First side of the triangle: ";
- getline(cin,temp);
- }
- else if(d < 0)
- {
- cout<<"Please enter a positive number for the Second side of the triangle: ";
- getline(cin,temp);
- }
- else
- {
- cout<<"Please enter a number for the First side of the triangle: ";
- getline(cin,temp);
- }
- b = doubleTryparse(temp,d);
- }
- while (!(b && (d > 0)));
- triangles[0].setSideA(d);
- temp ="";
- d=0;
- do{
- if(temp == "")
- {
- cout<<"Please enter the Second side of the triangle: ";
- getline(cin,temp);
- }
- else if(d < 0)
- {
- cout<<"Please enter a positive number for the Second side of the triangle: ";
- getline(cin,temp);
- }
- else
- {
- cout<<"Please enter a number for the Second side of the triangle: ";
- getline(cin,temp);
- }
- b = doubleTryparse(temp,d);
- }
- while (!(b && (d > 0)));
- triangles[0].setSideB(d);
- temp ="";
- d=0;
- do{
- if(temp == "")
- {
- cout<<"Please enter the Third side of the triangle: ";
- getline(cin,temp);
- }
- else if(d < 0)
- {
- cout<<"Please enter a positive number for the Second side of the triangle: ";
- getline(cin,temp);
- }
- else
- {
- cout<<"Please enter a number for the Third side of the triangle: ";
- getline(cin,temp);
- }
- b = doubleTryparse(temp,d);
- }
- while (!(b && (d > 0)));
- triangles[0].setSideC(d);
- triangles[0].calcAnglesDeg();
- triangles.push_back(triangle(6,8,10));
- //outputs
- cout<<"Now we will show you your triangle and 2 others that were staticly generated.";
- for(int i = 0;3> i;i++)
- {
- cout<<"\nTriangle: "<< i+1;
- triangles[i].printTriangle();
- }
- }while( runAgain() );
- }
- bool intTryparse(string s, int& i)
- {
- char temp[11];
- int length = s.length();
- int t = 0;
- if (length <= 11)
- {
- for (int j = 0; length>j;j++)
- {
- if( (s[j] == '0') || (s[j] == '1') || (s[j] == '2') || (s[j] == '3') || (s[j] == '4') || (s[j] == '5') || (s[j] == '6') || (s[j] == '7') || (s[j] == '8') || (s[j] == '9') )
- {
- temp[t] = s[j];
- t++;
- }
- else
- {
- if((s[0] == '-' || s[0] == '+') && j == 0)
- {
- if (s[0] == '-')
- {
- temp[t] = s[0];
- t++;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- }
- if(temp[0] == '-' && t == 11) // since this is a signed int, i need to check if its between 2,147,483,647 and -2,147,483,648 cuz errors.
- {
- if (temp[1]== '0' || temp[1]== '1' || temp[1]== '2')
- {
- if (temp[2]== '0' || temp[2]== '1')
- {
- if (temp[3]== '0' || temp[3]== '1'|| temp[3]== '2' || temp[3]== '3' || temp[3]== '4')
- {
- if (temp[4]== '0' || temp[4]== '1' || temp[4]== '2' || temp[4]== '3' || temp[4]== '4' || temp[4]== '5' || temp[4]== '6' || temp[4]== '7')
- {
- if (temp[5]== '0' || temp[5]== '1' || temp[5]== '2' || temp[5]== '3' || temp[5]== '4')
- {
- if (temp[6]== '0' || temp[6]== '1' || temp[6]== '2' || temp[6]== '3' || temp[6]== '4' || temp[6]== '5' || temp[6]== '6' || temp[6]== '7' || temp[6]== '8')
- {
- if (temp[7]== '0' || temp[7]== '1' || temp[7]== '2' || temp[7]== '3')
- {
- if (temp[8]== '0' || temp[1]== '1' || temp[1]== '2' || temp[1]== '3' || temp[1]== '4' || temp[1]== '5' || temp[1]== '6')
- {
- if (temp[9]== '0' || temp[9]== '1' || temp[9]== '2' || temp[9]== '3' || temp[9]== '4' )
- {
- if (temp[10]== '0' || temp[10]== '1' || temp[10]== '2' || temp[10]== '3' || temp[10]== '4' || temp[10]== '5' || temp[10]== '6' || temp[10]== '7' || temp[10]== '8')
- {
- i = atoi(temp);
- return true;
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else if(t==10)
- {
- if (temp[0]== '0' || temp[0]== '1' || temp[0]== '2')
- {
- if (temp[1]== '0' || temp[1]== '1')
- {
- if (temp[2]== '0' || temp[2]== '1'|| temp[2]== '2' || temp[2]== '3' || temp[2]== '4')
- {
- if (temp[3]== '0' || temp[3]== '1' || temp[3]== '2' || temp[3]== '3' || temp[3]== '4' || temp[3]== '5' || temp[3]== '6' || temp[3]== '7')
- {
- if (temp[4]== '0' || temp[4]== '1' || temp[4]== '2' || temp[4]== '3' || temp[4]== '4')
- {
- if (temp[5]== '0' || temp[5]== '1' || temp[5]== '2' || temp[5]== '3' || temp[5]== '4' || temp[5]== '5' || temp[5]== '6' || temp[5]== '7' || temp[5]== '8')
- {
- if (temp[6]== '0' || temp[6]== '1' || temp[6]== '2' || temp[6]== '3')
- {
- if (temp[7]== '0' || temp[7]== '1' || temp[7]== '2' || temp[7]== '3' || temp[7]== '4' || temp[7]== '5' || temp[7]== '6')
- {
- if (temp[8]== '0' || temp[8]== '1' || temp[8]== '2' || temp[8]== '3' || temp[8]== '4' )
- {
- if (temp[9]== '0' || temp[9]== '1' || temp[9]== '2' || temp[9]== '3' || temp[9]== '4' || temp[9]== '5' || temp[9]== '6' || temp[9]== '7' )
- {
- temp[10] = ' ';
- i = atoi(temp);
- return true;
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- else
- {
- for(t;11>t;t++)//just to ensure that the array has only whitespaces at the end of it so the number isnt compramised since i didnt "zero" the array.
- {
- temp[t] = ' ';
- }
- i = atoi(temp);
- return true;
- }
- }
- else
- {
- i = 0;
- return false;
- }
- }
- bool doubleTryparse(string s,double& d)
- {
- char temp[300];
- int t = 0;
- int length = s.length();
- bool b = true;
- if (length <= 300)
- {
- for (int j = 0; length>j;j++)
- {
- if( (s[j] == '0') || (s[j] == '1') || (s[j] == '2') || (s[j] == '3') || (s[j] == '4') || (s[j] == '5') || (s[j] == '6') || (s[j] == '7') || (s[j] == '8') || (s[j] == '9') )
- {
- temp[t] = s[j];
- t++;
- }
- else
- {
- cout<< s[j]<<endl;
- if((s[j] == '-' || s[j] == '+') && j == 0)
- {
- temp[t] = s[j];
- t++;
- }
- else if(s[j] == '.' && b )
- {
- temp[t] = s[j];
- t++;
- b = false;
- }
- else
- {
- d = 0;
- return false;
- }
- }
- }
- if (t== 300)
- {
- d = atof(temp);
- return true;
- }
- else
- {
- for(t;300>t;t++)
- {
- temp[t] = ' ';
- }
- d = atof(temp);
- return true;
- }
- }
- else
- {
- d = 0;
- return false;
- }
- }
- bool runAgain(void){
- string userResponse;
- cout << "\nWould you like to run again (y or n): ";
- getline(cin,userResponse);
- if(userResponse == "y")
- return(true);
- return(false);
- }
- /* lazy copy stuff
- if()
- {
- }
- else if()
- {
- }
- else
- {
- }
- for( int i = 0; i < x;i++)
- {
- }
- switch()
- {
- case :
- break;
- case :
- break;
- default:
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment