第九周实验报告二
2012-05-07 19:05
363 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 鲍增凯
* 完成日期: 2012 年 5 月 7 日
* 版 本 号:
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 鲍增凯
* 完成日期: 2012 年 5 月 7 日
* 版 本 号:
01.#include<iostream.h> 02. 03.//using namespace std; 04. 05.class CTime 06.{ 07.private: 08. 09. /*unsigned short */int hour; 10. 11. /*unsigned short */int minute; 12. 13. /*unsigned short */int second; 14. 15.public: 16. 17. CTime(int h = 0, int m =0, int s = 0); 18. 19. friend istream& operator >> (istream&, CTime&);//运算符重载为友元函数 20. 21. friend ostream& operator << (ostream&, CTime&);//运算符重载为友元函数 22. 23. //比较运算符(二目)的重载 24. 25. bool operator > (CTime &t); 26. 27. bool operator < (CTime &t); 28. 29. bool operator >= (CTime &t); 30. 31. bool operator <= (CTime &t); 32. 33. bool operator == (CTime &t); 34. 35. bool operator != (CTime &t); 36. 37. //二目运算符的重载 38. 39. CTime operator+(CTime &c);//返回c所规定的时·分·秒后的时间 40. 41. CTime operator-(CTime &c); 42. 43. CTime operator+(int s); 44. 45. CTime operator-(int s); 46. 47. //一目运算符的重载 48. 49. CTime operator ++(int);//后置++,下一秒 50. 51. CTime operator ++();//前置++,下一秒,前置与后置返回值不一样 52. 53. CTime operator --(int);//后置--,前一秒 54. 55. CTime operator --();//前置--,前一秒 56. 57. //赋值运算符的重载 58. 59. CTime operator +=(CTime &c); 60. 61. CTime operator -=(CTime &c); 62. 63. CTime operator +=(int s); 64. 65. CTime operator -=(int s); 66.}; 67. 68.istream& operator >> (istream& input, CTime& c) 69.{ 70. char f1, f2; 71. 72. while(1) 73. { 74. cout << "请输入需要操作的时间(格式:(小时:分钟:秒钟)):"; 75. 76. input >> c.hour >> f1 >> c.minute >> f2 >> c.second; 77. 78. if(c.hour > 24 || c.hour < 0 || c.minute > 60 || c.minute < 0 || c.second > 60 || c.second < 0 ) 79. { 80. cout << "输入时间有误!!!"<< endl; 81. } 82. 83. else 84. { 85. if(f1 != ':' || f2 != ':') 86. cout << "输入格式有误!!!" << endl; 87. 88. else 89. break; 90. } 91. } 92. 93. return input; 94.} 95. 96.ostream& operator << (ostream& output, CTime& c) 97.{ 98. output << c.hour << ":" << c.minute << ":" << c.second <<endl; 99. 100. return output; 101.} 102. 103.CTime::CTime(int h , int m, int s) 104.{ 105. hour = h; 106. 107. minute = m; 108. 109. second = s; 110.} 111. 112.bool CTime::operator >(CTime &t) 113.{ 114. if(hour > t.hour) 115. { 116. return true; 117. } 118. else 119. { 120. if(minute > t.minute) 121. { 122. return true; 123. } 124. else 125. { 126. if(second > t.second) 127. { 128. return true; 129. } 130. else 131. { 132. return false; 133. } 134. } 135. } 136.} 137. 138.bool CTime::operator <(CTime &t) 139.{ 140. if(hour < t.hour) 141. { 142. return true; 143. } 144. else 145. { 146. if(minute < t.minute) 147. { 148. return true; 149. } 150. else 151. { 152. if(second < t.second) 153. { 154. return true; 155. } 156. else 157. { 158. return false; 159. } 160. } 161. } 162.} 163. 164.bool CTime::operator >=(CTime &t)//{if(*this < t)return false; else return true;} 165.{ 166. if(hour < t.hour) 167. { 168. return false; 169. } 170. else 171. { 172. if(minute < t.minute) 173. { 174. return false; 175. } 176. else 177. { 178. if(second < t.second) 179. { 180. return false; 181. } 182. } 183. } 184.} 185. 186.bool CTime::operator <=(CTime &t)//{if(*this > t)return false; else return true;} 187.{ 188. if(hour > t.hour) 189. { 190. return false; 191. } 192. else 193. { 194. if(minute > t.minute) 195. { 196. return false; 197. } 198. else 199. { 200. if(second > t.second) 201. { 202. return false; 203. } 204. } 205. } 206.} 207. 208.bool CTime::operator ==(CTime &t) 209.{ 210. if(hour != t.hour) 211. { 212. return false; 213. } 214. else 215. { 216. if(minute != t.minute) 217. { 218. return false; 219. } 220. else 221. { 222. if(second != t.second) 223. { 224. return false; 225. } 226. } 227. } 228.} 229. 230. 231.bool CTime::operator !=(CTime &t) 232.{ 233. if(hour != t.hour) 234. { 235. return true; 236. } 237. else 238. { 239. if(minute != t.minute) 240. { 241. return true; 242. } 243. else 244. { 245. if(second != t.second) 246. { 247. return true; 248. } 249. else 250. { 251. return false; 252. } 253. } 254. } 255.} 256. 257.CTime CTime::operator +(CTime &c) 258.{ 259. CTime c1; 260. 261. c1.hour = hour + c.hour; 262. 263. c1.minute = minute + c.minute; 264. 265. c1.second = second + c.second; 266. 267. if(c1.second >= 60) 268. { 269. c1.second = c1.second - 60; 270. 271. c1.minute = c1.minute + 1; 272. } 273. 274. if(c1.minute >= 60) 275. { 276. c1.minute = c1.minute - 60; 277. 278. c1.hour = c1.hour + 1; 279. } 280. 281. if(c1.hour >= 24) 282. { 283. c1.hour = c1.hour -24; 284. } 285. 286. return c1; 287.} 288. 289.CTime CTime::operator -(CTime &c) 290.{ 291. CTime c1; 292. 293. c1.hour = hour - c.hour; 294. 295. c1.minute = minute - c.minute; 296. 297. c1.second = second - c.second; 298. 299. if(c1.second < 0) 300. { 301. c1.second = 60 + c1.second; 302. 303. c1.minute = c1.minute - 1; 304. } 305. 306. if(c1.minute < 0) 307. { 308. c1.minute =60 + c1.minute; 309. 310. c1.hour = c1.hour -1; 311. } 312. 313. if(c1.hour < 0) 314. { 315. c1.hour = 24 + c1.hour; 316. } 317. 318. return c1; 319.} 320. 321.CTime CTime::operator +(int s) 322.{ 323. CTime c1; 324. 325. c1.hour = hour; 326. 327. c1.minute = minute; 328. 329. c1.second = second + s; 330. 331. if(c1.second >= 60) 332. { 333. c1.minute = c1.minute + (c1.second / 60); 334. 335. c1.second = c1.second % 60; 336. } 337. 338. if(c1.minute >= 60) 339. { 340. c1.hour = c1.hour + (c1.minute / 60); 341. 342. c1.minute = c1.minute % 60; 343. } 344. 345. if(c1.hour >= 24) 346. { 347. c1.hour = c1.hour % 24; 348. } 349. 350. return c1; 351.} 352. 353.CTime CTime::operator -(int s) 354.{ 355. CTime c1; 356. 357. c1.hour = hour; 358. 359. c1.minute = minute; 360. 361. c1.second = second - s; 362. 363. if(c1.second < 0) 364. { 365. c1.minute = c1.minute - 1 - (-c1.second / 60); 366. 367. c1.second = 60 + c1.second % 60; 368. } 369. 370. if(c1.minute < 0) 371. { 372. c1.hour = c1.hour - 1 - (-c1.minute / 60); 373. 374. c1.minute = 60 + c1.minute % 60; 375. } 376. 377. if(c1.hour < 0) 378. { 379. c1.hour = 24 + c1.hour; 380. } 381. 382. return c1; 383.} 384. 385.CTime CTime::operator ++(int)//定义后置自增运算符 "++"重载函数 386.{ 387. CTime temp(* this); 388. 389. second ++; 390. 391. if(second >= 60) 392. { 393. second = second -60; 394. 395. ++ minute; 396. } 397. if(minute >= 60) 398. { 399. minute = minute - 60; 400. 401. ++ hour; 402. } 403. if(hour >= 24) 404. { 405. hour = hour - 24; 406. } 407. 408. return temp; 409.} 410. 411.CTime CTime::operator ++()//定义前置自增运算符"++"重载函数 412.{ 413. if(++ second >= 60) 414. { 415. second = second -60; 416. 417. ++ minute; 418. 419. if(minute >= 60) 420. { 421. minute = minute -60; 422. 423. ++ hour; 424. 425. if(hour >= 24) 426. { 427. hour = hour - 24; 428. } 429. } 430. } 431. 432. return * this; 433.} 434. 435.CTime CTime::operator --(int)//定义后置自减运算符 "--"重载函数 436.{ 437. CTime temp(* this); 438. 439. second --; 440. 441. if(second < 0) 442. { 443. second = 60 + second; 444. 445. -- minute; 446. } 447. 448. if(minute < 0) 449. { 450. minute = 60 + minute; 451. 452. -- hour; 453. } 454. 455. if(hour < 0) 456. { 457. hour = 24 + hour; 458. } 459. 460. return temp; 461.} 462. 463.CTime CTime::operator --()//定义前置自减运算符"--"重载函数{*this = *this -1; return *this;} 464.{ 465. if(-- second <= 0) 466. { 467. second = 60 + second; 468. 469. -- minute; 470. } 471. 472. if(minute < 0) 473. { 474. minute = 60 + minute; 475. 476. -- hour; 477. } 478. 479. if(hour < 0) 480. { 481. hour = 24 + hour; 482. } 483. 484. return * this; 485.} 486. 487.CTime CTime::operator +=(CTime &c)//{*this = *this + c;return *this;} 488.{ 489. 490. 491. hour = hour + c.hour; 492. 493. minute = minute + c.minute; 494. 495. second = second + c.second; 496. 497. if(second >= 60) 498. { 499. second = second - 60; 500. 501. minute = minute + 1; 502. } 503. 504. if(minute >= 60) 505. { 506. minute = minute - 60; 507. 508. hour = hour + 1; 509. } 510. 511. if(hour >= 24) 512. { 513. hour = hour -24; 514. } 515. 516. return * this;//从定义前置"++" 来的灵感··int 517.} 518. 519.CTime CTime::operator -=(CTime &c) 520.{ 521. hour = hour - c.hour; 522. 523. minute = minute - c.minute; 524. 525. second = second - c.second; 526. 527. if(second < 0) 528. { 529. second = 60 + second; 530. 531. minute = minute - 1; 532. } 533. 534. if(minute < 0) 535. { 536. minute =60 + minute; 537. 538. hour = hour -1; 539. } 540. 541. if(hour < 0) 542. { 543. hour = 24 + hour; 544. } 545. 546. return * this; 547.} 548. 549.CTime CTime::operator +=(int s) 550.{ 551. hour = hour; 552. 553. minute = minute; 554. 555. second = second + s; 556. 557. if(second >= 60) 558. { 559. minute = minute + (second / 60); 560. 561. second = second % 60; 562. } 563. 564. if(minute >= 60) 565. { 566. hour = hour + (minute / 60); 567. 568. minute = minute % 60; 569. } 570. 571. if(hour >= 24) 572. { 573. hour = hour % 24; 574. } 575. 576. return * this; 577.} 578. 579.CTime CTime::operator -=(int s) 580.{ 581. hour = hour; 582. 583. minute = minute; 584. 585. second = second - s; 586. 587. if(second < 0) 588. { 589. minute = minute - 1 - (-second / 60); 590. 591. second = 60 + second % 60; 592. } 593. 594. if(minute < 0) 595. { 596. hour = hour - 1 - (-minute / 60); 597. 598. minute = 60 + minute % 60; 599. } 600. 601. if(hour < 0) 602. { 603. hour = 24 + hour; 604. } 605. 606. return * this; 607.} 608. 609.int main() 610.{ 611. CTime c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c0, c00, c000,c0000; 612. 613. cout << "1,实现时间与具体秒数的相减" << endl; 614. 615. cin >> c1; 616. 617. cout << "c1 = " << c1; 618. 619. c000 = c1 - 240; 620. 621. cout << "c1 - 240 = " << c000 ; 622. 623. cout << "2,实现时间与具体秒数的相加" << endl; 624. 625. cin >> c2; 626. 627. cout << "c2 = " << c2; 628. 629. c0000 = c2 + 234; 630. 631. cout << "c2 + 234 = " << c0000 ; 632. 633. cout << "3.实现两时间的各种比较" << endl; 634. 635. cout << "c1 > c2" << (c1.operator >(c2)?" 成立":" 不成立") << endl; 636. 637. cout << "c1 >= c2" << (c1.operator >=(c2)?" 成立":" 不成立") << endl; 638. 639. cout << "c1 == c2" << (c1.operator ==(c2)?" 成立":" 不成立") << endl; 640. 641. cout << "4.实现两时间的各种比较" << endl; 642. 643. cin >> c3; 644. 645. cout << "c3 = " << c3; 646. 647. cin >> c4; 648. 649. cout << "c4 = " << c4; 650. 651. cout << "c3 < c4" << (c3.operator <(c4)?" 成立":" 不成立") << endl; 652. 653. cout << "c3 <= c4" << (c3.operator <=(c4)?" 成立":" 不成立") << endl; 654. 655. cout << "c3 != c4" << (c3.operator !=(c4)?" 成立":" 不成立") << endl; 656. 657. cout << "5.实现两时间的相加减" << endl; 658. 659. cin >> c5; 660. 661. cout << "c5 = " << c5; 662. 663. c0 = c1 + c5; 664. 665. cout << "c1 + c5 = " << c0 ; 666. 667. c00 = c1 - c5; 668. 669. cout << "c1 - c5 = " << c00 ; 670. 671. cout << "6.实现时间的后置自加运算" << endl; 672. 673. cin >> c6; 674. 675. cout << "c6 = " << c6; 676. 677. c6 ++; 678. 679. cout << "c6++ = " << c6; 680. 681. cout << "7.实现时间的前置自加运算" << endl; 682. 683. cin >> c7; 684. 685. cout << "c7 = " << c7; 686. 687. ++ c7; 688. 689. cout << "++c7 = " << c7; 690. 691. cout << "8.实现时间的后置自减运算" << endl; 692. 693. cin >> c8; 694. 695. cout << "c8 = " << c8; 696. 697. c8 --; 698. 699. cout << "c8-- = " << c8; 700. 701. cout << "9.实现时间的前置自减运算" << endl; 702. 703. cin >> c9; 704. 705. cout << "c9 = " << c9; 706. 707. -- c9; 708. 709. cout << "--c9 = " << c9; 710. 711. cout << "10.实现时间与时间的+=运算" << endl; 712. 713. cin >> c10; 714. 715. cout << "c10 = " << c10; 716. 717. cin >> c11; 718. 719. cout << "c11 = " << c11; 720. 721. c10 += c11; 722. 723. cout << "(c10 += c11) = " << c10; 724. 725. cout << "11.实现时间与时间的-=运算" << endl; 726. 727. cin >> c12; 728. 729. cout << "c12 = " << c12; 730. 731. cin >> c13; 732. 733. cout << "c13 = " << c13; 734. 735. c12 -= c13; 736. 737. cout << "(c12 -= c13) = " << c12; 738. 739. cout << "12.实现时间与具体秒数的+=运算" << endl; 740. 741. cin >> c14; 742. 743. cout << "c14 = " << c14; 744. 745. c14 += 18; 746. 747. cout<< "(c14 += 18) = " << c14; 748. 749. cout << "13.实现时间与具体秒数的-=运算" << endl; 750. 751. cin >> c15; 752. 753. cout << "c15 = " << c15; 754. 755. c15 -= 15; 756. 757. cout << "(c15 -= 15) = " << c15; 758. 759. //system("pause"); 760. 761. return 0; 762.}
相关文章推荐
- 第九周实验报告任务1
- 第九周实验报告任务3 定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 第九周实验报告任务三
- 第九周实验报告 任务二
- 《C++第九周实验报告2-1》---接第8周任务2,定义Time类中的<<和>>运算符重载,实现时间的输入输出
- 第九周实验报告4
- 第九周实验报告(三)定义分数类中的<<、>>运算符的重载。
- 第九周实验报告(二)
- 第九周实验报告 任务三
- 《C++第九周实验报告3-1》----接第8周任务3,定义分数类中<<和>>运算符重载,实现分数的输入输出
- 第九周实验报告5
- 第九周实验报告(任务五)【二维数组】
- 第九周实验报告4
- 第九周实验报告(四)
- 第九周实验报告三
- 第九周实验报告3
- 第九周实验报告2
- 第九周实验报告1.0
- 第九周实验报告 任务五
- 第九周实验报告3