home *** CD-ROM | disk | FTP | other *** search
/ PC Extra Super CD 1998 January / PCPLUS131.iso / INTROCPP / PROG5-4.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-12-01  |  2.0 KB  |  105 lines

  1. /*
  2.    prog5-4.cpp
  3.  
  4.    En enkel klass för klockslag, nu med stöd för ut- och inmatning 
  5.    via iostream.
  6.  
  7. */
  8.  
  9. #include <iostream.h>
  10.  
  11. class time
  12. {
  13.    private:
  14.  
  15.       int h, m;
  16.  
  17.    public:
  18.  
  19.       // konstruktor med förvalda argument
  20.       time(int = 0, int = 0);
  21.  
  22.       // ändra klockslag
  23.       void set(int, int);
  24.  
  25.       // hämta minut
  26.       int getminute() const { return m; }
  27.  
  28.       // hämta timme
  29.       int gethour() const { return h; }
  30.  
  31.       // skriv ut klockslag
  32.       friend ostream& operator<<(ostream&,const time&);
  33.  
  34.       // mata in klockslag
  35.       friend istream& operator>>(istream&,time&);
  36. };
  37.  
  38. // konstruktor
  39. time::time(int hour, int minute)
  40. {
  41.    h = hour;
  42.    m = minute;
  43. }
  44.  
  45. // ändra klockslag
  46. void time::set(int hour, int minute)
  47. {
  48.    h = hour;
  49.    m = minute;
  50. }
  51.  
  52. // skriv ut klockslag
  53. ostream& operator<<(ostream& o,const time& t)
  54. {
  55.    // mata ut timme och tecknet ':'
  56.    o << t.gethour() << ':';
  57.    
  58.    // för att göra utmatningen lite snyggare, använder vi
  59.    // medlemsfunktionerna width och fill så att minuterna
  60.    // alltid skrivs ut med två siffror och fylls ut med 
  61.    // nollor (gör att 12:00 skrivs ut istället för 12:0).
  62.    o.width(2);
  63.    o.fill('0');
  64.  
  65.    // mata ut minut
  66.    return o << t.getminute();
  67. }
  68.  
  69. // mata in klockslag
  70. istream& operator>>(istream& i,time& t)
  71. {
  72.    char c;
  73.  
  74.    // läs in timme
  75.    i >> t.h; 
  76.  
  77.    // läs in separationstecken (':' eller '.')
  78.    i >> c; 
  79.  
  80.    // läs in minut
  81.    return i >> t.m; 
  82. }
  83.  
  84. // testa klassen time
  85. main()
  86. {
  87.    time in,lunch,back,out;
  88.  
  89.    cout << "Ange dina tider (hh:mm):\n";
  90.    cout << "In>       ";
  91.    cin >> in;
  92.    cout << "Lunch>    ";
  93.    cin >> lunch;
  94.    cout << "Tillbaka> "; 
  95.    cin >> back;
  96.    cout << "Ut>       ";
  97.    cin >> out;
  98.    cout << "Jaha, du kom " << in << ", hade lunch mellan " << lunch;
  99.    cout << " och " << back << ", och gick klockan " << out << ".\n";
  100.    cout << "Kallar du det en arbetsdag?\n";
  101.  
  102.    return 0;
  103. }
  104.  
  105.