KySoto

lab10aFINAL

Nov 2nd, 2013
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.90 KB | None | 0 0
  1. /*DIRECTIONS Design and implement a Triangle class.
  2.  
  3. *Code a constructor with defaults as well as get and set functions.
  4. ** Instantiate a vector of at least 3 valid triangles and demonstrate use of the class.
  5. mathew myers
  6. Template blank Source document*/
  7.  
  8. #include<iostream>
  9. #include<string>
  10. #include<sstream>
  11. #include<cmath>
  12. #include<vector>
  13. #include<stdlib.h>
  14.  
  15. //globals
  16. using namespace std;
  17. bool intTryparse(string s, int& i);
  18. bool doubleTryparse(string s, double& d);
  19. bool runAgain(void);
  20. const long double PI = 3.141592653589793238462643383279502884197169399375105820974944592307816406286;
  21.  
  22.  
  23. class triangle
  24. {
  25. private:
  26.     double sideA;
  27.     double sideB;
  28.     double sideC;
  29.     double angleA;
  30.     double angleB;
  31.     double angleC;
  32.     //commented this out because im not sure if the naming will conflict with the globals and so i renamed it.
  33.         /*double calcAngleA(double sideA,double sideB,double sideC)
  34.         {
  35.         return ((pow(sideB,2)+pow(sideC,2)-pow(sideA,2))/(2*sideB*sideC)) ;
  36.         }
  37.  
  38.         double calcAngleB(double sideA,double sideB,double sideC)
  39.         {
  40.         return ((pow(sideA,2)+pow(sideC,2)-pow(sideB,2))/(2*sideA*sideC)) ;
  41.         }
  42.  
  43.         double calcAngleC(double sideA,double sideB,double sideC)
  44.         {
  45.         return ((pow(sideB,2)+pow(sideA,2)-pow(sideC,2))/(2*sideB*sideA)) ;
  46.         }*/
  47.         double calcAngleA(double a,double b,double c)
  48.         {
  49.         return acos((pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c)) ;
  50.         }
  51.  
  52.         double calcAngleB(double a,double b,double c)
  53.         {
  54.         return acos((pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c)) ;
  55.         }
  56.  
  57.         double calcAngleC(double a,double b,double c)
  58.         {
  59.         return acos((pow(b,2)+pow(a,2)-pow(c,2))/(2*b*a)) ;
  60.         }
  61.  
  62. public:
  63.     triangle()
  64.     {
  65.         sideA = 0;
  66.         sideB = 0;
  67.         sideC = 0;
  68.         angleA = 0;
  69.         angleB = 0;
  70.         angleC = 0;
  71.     }
  72.         triangle(double a,double b, double c)
  73.     {
  74.         sideA = a;
  75.         sideB = b;
  76.         sideC = c;
  77.         calcAnglesDeg();
  78.     }
  79.         void setSideA(double a)
  80.         {
  81.             sideA = a;
  82.         }
  83.         void setSideB(double b)
  84.         {
  85.             sideB = b;
  86.         }
  87.         void setSideC(double c)
  88.         {
  89.             sideC = c;
  90.         }
  91.         double getSideA()
  92.         {
  93.             return sideA;
  94.         }
  95.         double getSideB()
  96.         {
  97.             return sideB;
  98.         }
  99.         double getSideC()
  100.         {
  101.             return sideC;
  102.         }
  103.         double getAngleA()
  104.         {
  105.             return angleA;
  106.         }
  107.         double getAngleB()
  108.         {
  109.             return angleB;
  110.         }
  111.         double getAngleC()
  112.         {
  113.             return angleC;
  114.         }
  115.         void calcAnglesDeg()
  116.         {
  117.         angleA = rad2deg(calcAngleA(sideA,sideB,sideC));
  118.         angleB = rad2deg(calcAngleB(sideA,sideB,sideC));
  119.         angleC = rad2deg(calcAngleC(sideA,sideB,sideC));
  120.         }
  121.         void printTriangle()
  122.         {
  123.             cout<<"\nAngle A: "<< angleA <<"\nAngle B: "<< angleB<<"\nAngle C: "<< angleC<<"\nSide A: "<< sideA<<"\nSide B: "<< sideB<<"\nSide C: "<< sideC;
  124.         }
  125.         double rad2deg(double d)
  126.         {
  127.             return d*180/PI;
  128.         }
  129. }; 
  130.  
  131.  
  132. void main()
  133. {
  134. //Declarations
  135.  
  136.     do{
  137.         string temp = "";
  138.         double d = 0;
  139.         bool b = false;
  140.         vector<triangle> triangles(2);
  141.         triangles[1].setSideA(3);
  142.         triangles[1].setSideB(4);
  143.         triangles[1].setSideC(5);
  144.         triangles[1].calcAnglesDeg();
  145. //inputs
  146.         do{
  147.             if(temp == "")
  148.             {
  149.                 cout<<"Please enter the First side of the triangle: ";
  150.                 getline(cin,temp);
  151.             }
  152.             else if(d < 0)
  153.             {
  154.                 cout<<"Please enter a positive number for the Second side of the triangle: ";
  155.                 getline(cin,temp);
  156.             }
  157.             else
  158.             {
  159.                 cout<<"Please enter a number for the First side of the triangle: ";
  160.                 getline(cin,temp);
  161.             }
  162.             b = doubleTryparse(temp,d);
  163.         }
  164.         while (!(b && (d > 0)));
  165.         triangles[0].setSideA(d);
  166.         temp ="";
  167.         d=0;
  168.         do{
  169.             if(temp == "")
  170.             {
  171.                 cout<<"Please enter the Second side of the triangle: ";
  172.                 getline(cin,temp);
  173.             }
  174.             else if(d < 0)
  175.             {
  176.                 cout<<"Please enter a positive number for the Second side of the triangle: ";
  177.                 getline(cin,temp);
  178.             }
  179.             else
  180.             {
  181.                 cout<<"Please enter a number for the Second side of the triangle: ";
  182.                 getline(cin,temp);
  183.             }
  184.             b = doubleTryparse(temp,d);
  185.         }
  186.         while (!(b && (d > 0)));
  187.         triangles[0].setSideB(d);
  188.         temp ="";
  189.         d=0;
  190.                 do{
  191.             if(temp == "")
  192.             {
  193.                 cout<<"Please enter the Third side of the triangle: ";
  194.                 getline(cin,temp);
  195.             }
  196.             else if(d < 0)
  197.             {
  198.                 cout<<"Please enter a positive number for the Second side of the triangle: ";
  199.                 getline(cin,temp);
  200.             }
  201.             else
  202.             {
  203.                 cout<<"Please enter a number for the Third side of the triangle: ";
  204.                 getline(cin,temp);
  205.             }
  206.             b = doubleTryparse(temp,d);
  207.         }
  208.         while (!(b && (d > 0)));
  209.         triangles[0].setSideC(d);
  210.         triangles[0].calcAnglesDeg();
  211.         triangles.push_back(triangle(6,8,10));
  212. //outputs
  213.         cout<<"Now we will show you your triangle and 2 others that were staticly generated.";
  214.         for(int i = 0;3> i;i++)
  215.         {
  216.             cout<<"\nTriangle: "<< i+1;
  217.             triangles[i].printTriangle();
  218.         }
  219.  
  220.  
  221.     }while( runAgain() );
  222.  
  223. }
  224.  
  225. bool intTryparse(string s, int& i)
  226. {
  227.     char temp[11];
  228.     int length = s.length();
  229.     int t = 0;
  230.     if (length <= 11)
  231.     {
  232.     for (int j = 0; length>j;j++)
  233.     {
  234.         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') )
  235.         {
  236.             temp[t] = s[j];
  237.             t++;
  238.         }
  239.         else
  240.         {
  241.             if((s[0] == '-' || s[0] == '+') && j == 0)
  242.             {
  243.                 if (s[0] == '-')
  244.                 {
  245.                 temp[t] = s[0];
  246.                 t++;
  247.                 }
  248.             }
  249.             else
  250.             {
  251.                 i = 0;
  252.                 return false;
  253.             }
  254.         }
  255.     }
  256.     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.
  257.     {
  258.         if (temp[1]== '0' || temp[1]== '1' || temp[1]== '2')
  259.         {
  260.             if (temp[2]== '0' || temp[2]== '1')
  261.             {
  262.                 if (temp[3]== '0' || temp[3]== '1'|| temp[3]== '2' || temp[3]== '3' || temp[3]== '4')
  263.                 {
  264.                     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')
  265.                     {
  266.                         if (temp[5]== '0' || temp[5]== '1' || temp[5]== '2' || temp[5]== '3' || temp[5]== '4')
  267.                         {
  268.                             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')
  269.                             {
  270.                                 if (temp[7]== '0' || temp[7]== '1' || temp[7]== '2' || temp[7]== '3')
  271.                                 {
  272.                                     if (temp[8]== '0' || temp[1]== '1' || temp[1]== '2' || temp[1]== '3' || temp[1]== '4' || temp[1]== '5' || temp[1]== '6')
  273.                                     {
  274.                                         if (temp[9]== '0' || temp[9]== '1' || temp[9]== '2' || temp[9]== '3' || temp[9]== '4' )
  275.                                         {
  276.                                             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')
  277.                                             {
  278.                                                 i = atoi(temp);
  279.                                                 return true;
  280.                                             }
  281.                                             else
  282.                                                 {
  283.                                                 i = 0;
  284.                                                 return false;
  285.                                                 }
  286.                                         }
  287.                                         else
  288.                                             {
  289.                                             i = 0;
  290.                                             return false;
  291.                                             }
  292.                                     }
  293.                                     else
  294.                                         {
  295.                                         i = 0;
  296.                                         return false;
  297.                                         }
  298.                                 }
  299.                                 else
  300.                                     {
  301.                                     i = 0;
  302.                                     return false;
  303.                                     }
  304.                             }
  305.                             else
  306.                                 {
  307.                                 i = 0;
  308.                                 return false;
  309.                                 }
  310.                         }
  311.                         else
  312.                             {
  313.                             i = 0;
  314.                             return false;
  315.                             }
  316.                     }
  317.                     else
  318.                         {
  319.                         i = 0;
  320.                         return false;
  321.                         }
  322.                 }
  323.                 else
  324.                     {
  325.                     i = 0;
  326.                     return false;
  327.                     }
  328.             }
  329.             else
  330.                 {
  331.                 i = 0;
  332.                 return false;
  333.                 }
  334.         }
  335.         else
  336.         {
  337.             i = 0;
  338.             return false;
  339.         }
  340.     }
  341.     else if(t==10)
  342.     {
  343.             if (temp[0]== '0' || temp[0]== '1' || temp[0]== '2')
  344.         {
  345.             if (temp[1]== '0' || temp[1]== '1')
  346.             {
  347.                 if (temp[2]== '0' || temp[2]== '1'|| temp[2]== '2' || temp[2]== '3' || temp[2]== '4')
  348.                 {
  349.                     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')
  350.                     {
  351.                         if (temp[4]== '0' || temp[4]== '1' || temp[4]== '2' || temp[4]== '3' || temp[4]== '4')
  352.                         {
  353.                             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')
  354.                             {
  355.                                 if (temp[6]== '0' || temp[6]== '1' || temp[6]== '2' || temp[6]== '3')
  356.                                 {
  357.                                     if (temp[7]== '0' || temp[7]== '1' || temp[7]== '2' || temp[7]== '3' || temp[7]== '4' || temp[7]== '5' || temp[7]== '6')
  358.                                     {
  359.                                         if (temp[8]== '0' || temp[8]== '1' || temp[8]== '2' || temp[8]== '3' || temp[8]== '4' )
  360.                                         {
  361.                                             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' )
  362.                                             {
  363.                                                 temp[10] = ' ';
  364.                                                 i = atoi(temp);
  365.                                                 return true;
  366.                                             }
  367.                                             else
  368.                                                 {
  369.                                                 i = 0;
  370.                                                 return false;
  371.                                                 }
  372.                                         }
  373.                                         else
  374.                                             {
  375.                                             i = 0;
  376.                                             return false;
  377.                                             }
  378.                                     }
  379.                                     else
  380.                                         {
  381.                                         i = 0;
  382.                                         return false;
  383.                                         }
  384.                                 }
  385.                                 else
  386.                                     {
  387.                                     i = 0;
  388.                                     return false;
  389.                                     }
  390.                             }
  391.                             else
  392.                                 {
  393.                                 i = 0;
  394.                                 return false;
  395.                                 }
  396.                         }
  397.                         else
  398.                             {
  399.                             i = 0;
  400.                             return false;
  401.                             }
  402.                     }
  403.                     else
  404.                         {
  405.                         i = 0;
  406.                         return false;
  407.                         }
  408.                 }
  409.                 else
  410.                     {
  411.                     i = 0;
  412.                     return false;
  413.                     }
  414.             }
  415.             else
  416.                 {
  417.                 i = 0;
  418.                 return false;
  419.                 }
  420.         }
  421.         else
  422.         {
  423.             i = 0;
  424.             return false;
  425.         }
  426.     }
  427.     else
  428.     {
  429.         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.
  430.         {
  431.             temp[t] = ' ';
  432.         }
  433.     i = atoi(temp);
  434.     return true;
  435.     }
  436.     }
  437.     else
  438.     {
  439.         i = 0;
  440.         return false;
  441.     }
  442.    
  443. }
  444.  
  445. bool doubleTryparse(string s,double& d)
  446. {
  447.     char temp[300];
  448.     int t = 0;
  449.     int length = s.length();
  450.     bool b = true;
  451.     if (length <= 300)
  452.     {
  453.     for (int j = 0; length>j;j++)
  454.     {
  455.         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') )
  456.         {
  457.             temp[t] = s[j];
  458.             t++;
  459.  
  460.         }
  461.         else
  462.         {
  463.             cout<< s[j]<<endl;
  464.             if((s[j] == '-' || s[j] == '+') && j == 0)
  465.             {
  466.                 temp[t] = s[j];
  467.                 t++;
  468.             }
  469.             else if(s[j] == '.' && b )
  470.             {
  471.                 temp[t] = s[j];
  472.                 t++;
  473.                 b = false;
  474.             }
  475.             else
  476.             {
  477.                 d = 0;
  478.                 return false;
  479.             }
  480.         }
  481.     }
  482.     if (t== 300)
  483.     {
  484.     d = atof(temp);
  485.     return true;
  486.     }
  487.     else
  488.     {
  489.         for(t;300>t;t++)
  490.         {
  491.             temp[t] = ' ';
  492.         }
  493.             d = atof(temp);
  494.         return true;
  495.     }
  496.     }
  497.     else
  498.     {
  499.         d = 0;
  500.         return false;
  501.     }
  502.    
  503. }
  504.  
  505. bool runAgain(void){
  506.     string userResponse;
  507.  
  508.     cout << "\nWould you like to run again (y or n): ";
  509.     getline(cin,userResponse);
  510.  
  511.     if(userResponse == "y")
  512.         return(true);
  513.  
  514.     return(false);
  515. }
  516. /* lazy copy stuff
  517. if()
  518.     {
  519.     }
  520. else if()
  521.     {
  522.     }
  523. else
  524.     {
  525.     }
  526.  
  527. for( int i = 0; i < x;i++)
  528.     {
  529.     }
  530. switch()
  531.     {
  532.         case :
  533.         break;
  534.         case :
  535.         break;
  536.         default:
  537.     }
  538. */
Advertisement
Add Comment
Please, Sign In to add comment