Mega Code Archive

 
Categories / C++ / Overload
 

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); }