overload the "+" operator so that several angles, in the format degrees minutes seconds, can be added directly. : Plus « Overload « C++






overload the "+" operator so that several angles, in the format degrees minutes seconds, can be added directly.

  
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;

int totaldegrees, totalminutes, totalseconds;

class angle_value {
 int degrees, minutes, seconds;
 
 public:
 angle_value() {degrees=0,minutes=0, seconds=0;}  // constructor
 angle_value(char *);
 angle_value operator +(angle_value);
};

angle_value::angle_value(char *angle_sum)
{
 degrees=atoi(strtok(angle_sum,"d"));
 minutes=atoi(strtok(0,"m"));
 seconds=atoi(strtok(0,"s"));
}
  
angle_value angle_value::operator+(angle_value angle_sum){
 angle_value ang;
 ang.seconds=(seconds+angle_sum.seconds)%60;
 ang.minutes=((seconds+angle_sum.seconds)/60+ minutes+angle_sum.minutes)%60;
 ang.degrees=((seconds+angle_sum.seconds)/60+ minutes+angle_sum.minutes)/60;
 ang.degrees+=degrees+angle_sum.degrees;
 totaldegrees=ang.degrees;
 totalminutes=ang.minutes;
 totalseconds=ang.seconds;
 return ang;
}

main()
{
 char str1[] = "37d 15m 56s";
 angle_value angle1(str1);   
 
 char str2[] = "10d 44m 44s";
 angle_value angle2(str2);
 
 char str3[] = "75d 17m 59s";
 angle_value angle3(str3);
  
   char str4[] = "130d 32m 54s";
 angle_value angle4(str4);
 
 angle_value sum_of_angles;

 sum_of_angles=angle1+angle2+angle3+angle4;
 cout << "The sum of the angles is " << totaldegrees << "d "
      << totalminutes << "m " << totalseconds << "s"  << endl;

 return (0);
}
  
    
  








Related examples in the same category

1.Overload the + relative to MyClass.Overload the + relative to MyClass.
2.Overload + for 'ob + int' as well as 'ob + ob'.Overload + for 'ob + int' as well as 'ob + ob'.
3.String class with custom +/- operator
4.additional meanings for the + and = operations
5.Friendly operator+
6.overloaded '+' operator adds two Distances
7.overloaded '+' operator concatenates strings
8.+ is overloaded for three_d + three_d and for three_d + int.
9.Define operator +(plus) and cast to double operator
10.Overloading the + (or any other binary operator) using a friend allows a built-in type to occur on the left or right side of the operator.
11.friend overloaded + operator