Lab 1 : 23/2/99
Ubahsuai class Date untuk melaksanakan pemeriksaan sintak ke atas nilai awal ahli data month, day dan year. Juga tambah ahli fungsi nextDay untuk menambahkan day dengan 1. Object Date mesti sentaiasa dalam keadaan konsisten. Tulis satu main aturcara yang menguji fungsi nextDay yang akan mencetak tarikh sepanjang gelungan. Ujian anda mestilah berdasarkan perkara berikut :
Gabungkan class Time yang telah diubahsuai( dari assignment 3)
dan class Date yang telah diubahsuai (dari soalan di atas ) dengan
menambahkan satu kelas iaitu DateAndTime. Ubahsuai fungsi tick
supaya boleh panggil fungsi nextDay jika masa ditambah kepada hari
berikutnya. Ubahsuai fungsi printStandard dan printMilitary
untuk mencetak tarikh yang mempunyai penambahan masa. Tulis satu main aturcara
untuk menguji kelas baru DateAndTime. Khususkan ujian anda terhadap
penambahan masa kepada hari berikutnya (next day).
Lab 1 dihantar setelah
anda.
#include
<iostream.h>
//simple Date class
class Date {
public :
Date( int =1, int = 1, int = 1990 )
// default constructor
void print();
private :
int month;
int day;
int year;
};
//
simple Date constructor with no range checking
Date :: Date( int m, int d, int y ){
month = m;
day = d;
year = y;
}
//
Print the Date in the form mm-dd-yyyy
void Date :: print(){
cout << month << '-' << day << '-' << year;
}
main()
{
Date d1(7, 4, 1993), d2; // d2 defaults to 1/1/1990
cout << "d1=";
d1.print();
cout << "\nd2 = ";
d2.print();
d2 = d1;
// assignment by memberwise copy
cout << "\n\nAfter default memberwise copy, d2= ";
d2.print();
cout << endl;
return 0;
}
//Member
function definitions for Time class
#include "time3.h"
#include <iostream.h>
//constructor function to initialize private data
//calls member function setTime to set variables
//Default values are 0 (see class definition).
Time::Time(int ht, int min, int sec)
{ setTime(hr,min, sec);}
//Set the values of hour, minute, and second
void Time::setTime(int h, int m, int s)
{
setHour(h);
setMinute(m);
setSecond(s);
}
//Set the hour value
void Time::setHour(int h)
{ hour = (h >= 0 && h < 24) ? h :0;}
//Set the minute value
void Time::setMinute(int m)
{minute = (m >= 0 && m < 60) ? m : 0;}
//Set the second value
void Time::setSecond(int s)
{second = (s >= 0 && s< 60) ? s:0;}
//Get the hour value
int Time::getHour() { return hour;}
//Get the minute value
int Time::getMinute() {return minute;}
//Get the second value
int Time::getSecond() {return second;}
//Print time is military format
void Time::printMilitary()
{
cout<< (hour < 10 ? "0" : "" ) << hour <<
":"
<< (minute < 10 ? "0" : "") << minute;
}
//Print time in standard format
void Time::printStandard()
{
cout << (( hour ==0 || hour == 12)?12 : hour %12)
<< ":" << (minute < 10 ? "0" : "") <<
minute
<< ":" << (second < 10 ? "0" : "") <<
second
<< (hour < 12 ? " AM" : " pm" );
}
===================================================
//Demonstrating the Time class set and get functions
#include <iostream.h>
#include "time3.h"
void incrementatMinutes( Time &, const int );
int main()
{
Time t;
t.setHour(17);
t.setMinute(34);
t.setSecond(25);
cout << "Result of setting all valid values:\n"
<< " Hour: " << t.getHour()
<< " Minute: " << t.getMinute()
<< " Second: " << t.getSecond();
t.setHour(234); //invalid hour set to 0
t.setMinute(43);
t.setSecond(6374); //invalid second set to 0
cout << "\n\nResult of attempting to set invalid hour and
"
<< " second:\n Hour: " << t.getHour()
<< " Minute: " << t.getMinute()
<< " Second: " << t.getSecond() << "\n\n";
t.seTime(11,58,0);
incrementMinute(t,3);
return 0;
}
void incrementMinutes( Time &tt, const int count)
{
cout << "incrementing minute " << count
<< " time:\nStart time: ";
tt.printStandard();
for (int i=0; i < count; i++) {
tt.setMinute( (tt.getMinute() + 1) % 60);
if (tt.getMinute() ==0)
tt.setHour(( tt.getHour() + 1) % 24);
cout << "\nminute + 1: ";
tt.printStandard();
}
cout << endl;
}