 <p>It's not clear what you mean by "issues distinguishing between AM and PM". Is it that you enter a time in the afternoon, e.g. 12pm, then add minutes and it becomes am? That's because minutesAdded() is using the number of minutes to determine whether it's the morning or evening. You would be better off calculating the time -- meaning the whole time, hours and minutes, not just minutes -- before printing out the time. You have made a start with</p> <pre><code>nTime = minutes + addedMinutes; </code></pre> <p>but don't stop there. As long as the accumulated minutes value is >= 60, you have to take off 60 minutes and bump the hours up by one. Not just once. If you add 122 minutes, you have to take TWO lots of 60 minutes off. Does that sound like a while loop? No, not unless you want the teacher to laugh at your code! Look up the operators for division and remainder. You're trying to do the calculation and the output in one step. That's difficult. Work out the value first, then print it afterwards.</p> <p>Oh, and by the way, don't forget about what happens if you add 200 minutes to 23:00...</p> <p>When you are working out the time after adding the minutes, why do you not use the hours and minutes variables? If you add some minutes to your time, the time should be changed, meaning the minutes and/or hours members should be updated. </p> <p>You should have a method to add the minutes -- not to read the amount to be added, and then print out the time with the minutes added, just a method to add the minutes.</p> <pre><code>void Time::incrementMinutes(int nMinutes) { ...the code to update hours and minutes variables correctly is left as an exercise... } </code></pre> <p>Then after you have got addedMinutes from cin, call</p> <pre><code>incrementMinutes(addedMinutes); </code></pre> <p>Then you could make a method to print the time, printTime() which sends the time to cout. That would then be used by minutesAdded() and by militaryClock(), so you don't have to worry in BOTH places about all the conditions for whether it's AM or PM. You only have to get that right in printTime().</p> <p>Now, about the structure of your program.</p> <p>First, the constructor should construct the object, set everything in it. It gets called automatically when an instance is constructed, to set up the whole instance. It's not the way to just set one field. Please write a different method to set the minutes to 0 if you are not constructing a Time object. </p> <p>Maybe setMinutes was to have been that method. But setMinutes() is</p> <pre><code>void Time::setMinutes() { this -&gt; minutes = minutes; } </code></pre> <p>That doesn't do anything. Within the method of an object, the member name refers to the member of the object (unless overridden by the same name in a closer scope). So within this function, 'minutes' means the same as 'this->minutes'. </p> <p>Maybe you intended something like this instead?</p> <pre><code>void Time::setMinutes(int newMinutes) { minutes = newMinutes; } </code></pre> <p>That would at least set this->minutes to a certain value. Then, to set minutes to 0, you don't call Time(), you call setMinutes(0).</p> <p>Finally, you can tell cout to use 2 characters for minutes, by piping setw(2) before the number; you can tell it to use the value '0' for the extra character by piping in setfill('0'). You have to #include to get this stuff. So </p> <pre><code>#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { cout &lt;&lt; setfill('0') &lt;&lt; setw(2) &lt;&lt; 1 &lt;&lt; ":" &lt;&lt; setw(2) &lt;&lt; 2 &lt;&lt; endl; } </code></pre> <p>will output 01:02 The setfill('0') means any padding will be done with '0'; the setw(2) means the single next thing output will be padded to 2 chars.</p> <p>Hope that helps... without doing your homework for you...</p>