Advertisement
Guest User

Untitled

a guest
Mar 28th, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1.  
  2. Time
  3.  
  4. Skrifið klasann Time sem hægt er að prófa með aðalforritinu sem fylgir hér fyrir neðan. Með því að skoða aðalforritið eigið þið að geta fundið út hvaða smiði (e. constructors), meðlimaföll (e. member functions) og vinaföll (e. friend functions) klasinn þarf á að halda.
  5.  
  6. Gildi á hlut af taginu Time samanstendur af tilteknum földa af klukkutímum (sjálfgefið gildi 0), mínútum (sjálfgefið gildi 0) og sekúndum (sjálfgefið gildi 0). Gildi Time hlutar, sem lesið er inn með >>, er ávallt gefið upp sem þrjár pósitívar heiltölur: fyrsta fyrir klukkutíma, önnur fyrir mínútur og þriðja fyrir sekúndur.
  7.  
  8. Hægt er að gefa Time hlut gildi á sveigjanlegan hátt, t.d. með því að gefa aðeins upp fjölda sekúndna, "0 0 14655" (sem samsvarar tímanum 04:04:15), eða t.d. blöndu af mínútum og sekúndum, "0 104 323" (sem samsvarar tímanum 01:49:23). Þetta þýðir að klasinn þarf að sjá um að "staðla" (e. normalize) meðlimabreytur sínar þannig að gildi hlutar sé ávallt sett fram sem tiltekinn fjöldi klukkutíma, mínútna og sekúndna.
  9.  
  10. Sjáið til þess að klasinn ykkar sé hugrænt gagnatag (e. Abstract Data Type).
  11.  
  12. Private fallið normalize() og main() er gefið:
  13.  
  14. void Time::normalize()
  15. {
  16. int s = seconds;
  17. int m = minutes;
  18. int h = hours;
  19.  
  20. while(s < 0)
  21. {
  22. s += 60;
  23. m--;
  24. }
  25.  
  26. while(m < 0)
  27. {
  28. m += 60;
  29. h--;
  30. }
  31.  
  32. while(h < 0)
  33. {
  34. h = h + 24;
  35. }
  36.  
  37. seconds = s % 60;
  38. minutes = (m + s/60) % 60;
  39. hours = (h + m/60 + s/3600) % 24;
  40. }
  41.  
  42. int main()
  43. {
  44. Time t1, t2, t3, t4;
  45. cin >> t1;
  46. cin >> t2;
  47. cin >> t3;
  48.  
  49. cout << "Time1: " << t1;
  50. cout << "Time2: " << t2;
  51. cout << "Time3: " << t3;
  52.  
  53. t4 = t1 + t2;
  54. cout << "Time4: " << t4;
  55.  
  56. t1 = t3 - t4;
  57. cout << "Time1: " << t1;
  58.  
  59. if (t1 < t3)
  60. cout << "Time1 < Time3" << endl;
  61. else
  62. cout << "Time3 >= Time1" << endl;
  63.  
  64. Time t5 = t2 + Time(0,0,1);
  65. if (t5 < t2)
  66. cout << "Time5 < Time2" << endl;
  67. else
  68. cout << "Time5 >= Time2" << endl;
  69.  
  70.  
  71. cout << "Almost midnight: " << Time(0,0,0) - Time(0,0,1) << endl;
  72.  
  73. return 0;
  74. }
  75. Example
  76. 0 0 14655
  77. 0 104 323
  78. 1 1 1
  79. Time1: 04:04:15
  80. Time2: 01:49:23
  81. Time3: 01:01:01
  82. Time4: 05:53:38
  83. Time1: 19:07:23
  84. Time3 >= Time1
  85. Time5 >= Time2
  86. Almost midnight: 23:59:59
  87. Fyrstu þrjár línurnar að ofan eru inntak, hinar eru úttak.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement