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