0

Code compiles w/o error but print function does not pull data from base class. I have looked over the chapter numerous times. This is a long one, sorry

class extClockType: public clockType
{
  public:
	void getTimeZone(int& timeZone);
	void setTimeZone(int timeZone);
	void printTime() const;
	extClockType();
	extClockType(int hours, int minutes, int seconds, int timeZone);
  private:
	int tz;
};


#include <iostream>
#include "clockType.h"
#include "extClockType.h"

using namespace std;


void extClockType::setTimeZone(int timeZone)
{
	if(tz <= 12 && tz >= -12)

    tz = timeZone;

    else

    tz = 0;
}

void extClockType::getTimeZone(int& timeZone)
{
	timeZone = tz;
}

void extClockType::printTime() const
{
	clockType::printTime();
	cout << "  timezone is: ";
	if(tz >= 0)
    cout << "GMT+" << tz;
	else 
	cout <<"GMT" << tz;
}

extClockType::extClockType(int hours, int minutes, int seconds, int timeZone): clockType(hours, minutes, seconds)
{
	if(tz <= 12 && tz >= -12)

    tz = timeZone;

	else

    tz = 0;
}

extClockType::extClockType() 
{
	tz = 0;	
}

class clockType
{
public:
    void setTime(int hours, int minutes, int seconds); 
    void getTime(int& hours, int& minutes, int& seconds) const;
    void printTime() const;
    void incrementSeconds();
    void incrementMinutes();
    void incrementHours();
    bool equalTime(const clockType& otherClock) const;
    clockType(int hours, int minutes, int seconds);
    clockType();
private:
    int hr;
    int min;
    int sec;
};

#include <iostream>
#include "clockType.h"

using namespace std;

void clockType::setTime(int hours, int minutes, int seconds)
{
	if (0 <= hours && hours < 24)
	    hr = hours;
	else 
	    hr = 0;

	if (0 <= minutes && minutes < 60)
	    min = minutes;
	else 
	    min = 0;

	if (0 <= seconds && seconds < 60)
	    sec = seconds;
	else 
	    sec = 0;
}

void clockType::getTime(int& hours, int& minutes, int& seconds) const
{
	hours = hr;
	minutes = min;
	seconds = sec;
}

void clockType::incrementHours()
{
	hr++;
	if(hr > 23)
 	   hr = 0;
}

void clockType::incrementMinutes()
{
	min++;
	if (min > 59)
	{
	    min = 0;
	    incrementHours();
	}
}

void clockType::incrementSeconds()
{
	sec++;

	if (sec > 59)
	{
	    sec = 0;
	    incrementMinutes();
	}
}

void clockType::printTime() const
{
	if (hr < 10)
	    cout << "0";
	cout << hr << ":";

	if (min < 10)
	    cout << "0";
	cout << min << ":";

	if (sec < 10)
	   cout << "0";
	cout << sec;
}

bool clockType::equalTime(const clockType& otherClock) const
{
	return (hr == otherClock.hr 
		    && min == otherClock.min 
		    && sec == otherClock.sec);
}

clockType::clockType(int hours, int minutes, int seconds)
{
	if (0 <= hours && hours < 24)
		hr = hours;
	else
		hr = 0;

	if (0 <= minutes && minutes < 60)
		min = minutes;
	else
		min = 0;

	if (0 <= seconds && seconds < 60)
		sec = seconds;
	else
		sec = 0;
}

clockType::clockType()
{
	hr = 0;
	min = 0;
	sec = 0;
}

#include <iostream>
#include "clockType.h"
#include "extClockType.h"

using namespace std;

int main()
{
	int hours;
    int minutes;
    int seconds;
	int timeZone;

	clockType clockOne;
	clockType clockTwo;

    extClockType tzClock;
	extClockType tzClock2;
		
    clockOne.setTime(9, 30, 26); 
	tzClock.setTimeZone(8);
	cout << "Clock One's time is currently: ";
	tzClock.printTime();
	clockOne.printTime();
    cout << endl;  

    clockTwo.setTime(9, 30, 28);
	tzClock2.setTimeZone(7);
	cout << "Clock Two's time is currently: ";
	tzClock2.printTime();
    cout << endl;
   
    if (clockOne.equalTime(clockTwo))
        cout << "Both times are equal."
             << endl;
    else
	{
    cout << "Both times are not equal."
             << endl;
    cout << "Please, enter the current time"
		<< "(hrs, mins, secs, and timezone): ";
    cin >> hours >> minutes >> seconds >> timeZone;
    
    clockOne.setTime(hours, minutes, seconds);
	tzClock.setTimeZone(timeZone);
	cout << "The time is has been set to: ";
	tzClock.printTime();
	cout << endl;
	}

    clockOne.incrementSeconds();
    cout << "After incrementing the time by one second: ";
	tzClock.printTime();
    cout << endl;
    
    clockOne.getTime(hours, minutes, seconds);
	tzClock.getTimeZone(timeZone);
	     
    cout << "hours = " << hours 
         << ", minutes = " << minutes
         << ", seconds = " << seconds << endl;

	return 0;
}
1
Contributor
1
Reply
2
Views
11 Years
Discussion Span
Last Post by tommouse
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.