943,445 Members | Top Members by Rank

Ad:
  • C Discussion Thread
  • Unsolved
  • Views: 2849
  • C RSS
Jun 16th, 2004
1

program help

Expand Post »
Hi
i'm having a few problems..i'm trying to do a time class
that holds the hr, min , and meridian( am or Pm).
this is what i have so far. For the void set how would i set the char mer[] to am or pm.
class Time
{
long hr, min;
char meridian[5];

public:

void Set(long h, long m, char mer[]);
void Set(char string_time[]);

}
Similar Threads
Reputation Points: 11
Solved Threads: 0
Newbie Poster
mike3x1 is offline Offline
1 posts
since Jun 2004
Jun 17th, 2004
1

Re: program help

Quote originally posted by mike3x1 ...
...
For the void set how would i set the char mer[] to am or pm.
...
The sprintf function should work for that:
  1. #include <stdio.h>
  2.  
  3. void Set(char string_time[])
  4. {
  5. sprintf(meridian, string_time);
  6. }
If you do this with string_time larger than meridian, it will crash and burn horribly.

I recommend that you don't store and manipulate that value as a char array. If it's only going to ever have two distinct values, it's a lot easier to handle if you use a simpler type, like an int, for example. Just decide on a meaning for the simpler variable, e.g. a zero int value means "AM" and nonzero means "PM". If you're writing C++, then a bool is even better--it only has two possible values. The only time you need text is when you're displaying the time for a human being, which can be done in a separate function that interprets the numeric values and prints out the textual meaning. This will make your code simpler and easier to work with.
Reputation Points: 182
Solved Threads: 71
Posting Pro in Training
gusano79 is offline Offline
475 posts
since May 2004
Jun 18th, 2004
1

Re: program help

There is a time structure you know-- see gettime() : :lol:
Reputation Points: 16
Solved Threads: 0
Light Poster
Fili is offline Offline
34 posts
since Jun 2004
Jun 18th, 2004
0

Re: program help

There certainly is... Using the library functions as much as possible is good (code reuse, more sleep)--but it can be quite educational to write your own as well. It builds character, puts hair on your eyeballs, that sort of thing.
Reputation Points: 182
Solved Threads: 71
Posting Pro in Training
gusano79 is offline Offline
475 posts
since May 2004
Jun 18th, 2004
0

Re: program help

It depends on what you want to DO with this class, of course, but if it were me I'd either make meridian stored as a bool or just store the time as 24 hour time.

Say your class was like this:

class ATimeOfDay
{
int hours, minutes;
bool AM;

public:

// meridian had better be "am" or "pm" or "AM" or "PM" or the like!
// hours can be 0..12, minutes 0..59.
// anything else returns false.
bool SetTime( int hours, int minutes, const char* meridian );

// here hours can be 0..23 and minutes 0..59.
// hours >= 12 implies 'pm'
bool Set24HourTime( int hours, int minutes );

// initialize in constructor
ATimeOfDay();
};

So, the advantage of a bool for AM means you don't have to constantly test against some string. You can say:

if (AM) printf("It is the morning\n");

rather than

if (strcmp(meridian,"am")==0) printf("It is the morning\n");

Just a suggestion!
Reputation Points: 36
Solved Threads: 11
Posting Pro in Training
Chainsaw is offline Offline
436 posts
since Jun 2004
Jun 24th, 2004
0

Re: program help

Quote originally posted by mike3x1 ...
Hi
i'm having a few problems..i'm trying to do a time class
that holds the hr, min , and meridian( am or Pm).
this is what i have so far. For the void set how would i set the char mer[] to am or pm.
  1. class time
  2. {
  3. private:
  4. int hour, minute;
  5. public:
  6. void set(int h, int m, bool am);
  7. void display();
  8. };
  9.  
  10. void time::set(int h, int m, bool am)
  11. {
  12. minute = m;
  13. if am
  14. hour=h;
  15. else
  16. hour=h+12;
  17. }
  18. void time::display()
  19. {
  20. if(hour<13)
  21. cout<<hour<<":"<<minute<<" am"<<endl; //or whatver output function you use
  22. else
  23. cout<<hour-12<<":"<<minutes<<" pm"<<endl;
  24. }
K-1
Reputation Points: 12
Solved Threads: 0
Newbie Poster
K-1 is offline Offline
6 posts
since Jun 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C Forum Timeline: How to use alloc's memory allocation functions?
Next Thread in C Forum Timeline: Recursive prime number f(x)





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC