fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Diem {
  5. int x, y;
  6. };
  7.  
  8. class Bai2 {
  9. private:
  10. Diem* arr;
  11. int sl;
  12. public:
  13. ~Bai2() {
  14. delete[] arr;
  15. sl = 0;
  16. arr = nullptr;
  17. }
  18. Bai2(int s = 0) {
  19. sl = s;
  20. arr = new Diem[sl];
  21. }
  22. void Nhap() {
  23. cin >> sl;
  24. arr = new Diem[sl];
  25. for (int i = 0; i < sl; i++) {
  26. cin >> arr[i].x >> arr[i].y;
  27. }
  28. }
  29. void Xuat() {
  30. for (int i = 0; i < sl; i++) {
  31. cout << "(" << arr[i].x << "," << arr[i].y << ")" << "\n";
  32. }
  33. }
  34. void DienTich_XacDinhChieu() {
  35. double tong = 0;
  36. for (int i = 0; i < sl; i++) {
  37. if (i + 1 == sl) tong += arr[i].x * arr[0].y - arr[0].x * arr[i].y;
  38. else tong += arr[i].x * arr[i + 1].y - arr[i + 1].x * arr[i].y;
  39. }
  40. cout << "Dien tich da giac: " << 0.5 * abs(tong) << "\n";
  41. if (tong > 0) cout << "Chieu cua da giac là chieu nguoc chieu kim dong ho!\n";
  42. else cout << "Chieu cua da giac là chieu cung chieu kim dong ho!\n";
  43. }
  44. void LoiHayLom() {
  45. bool duong = false;
  46. bool am = false;
  47. for (int i = 0; i < sl; i++) {
  48. Diem p1 = arr[(i - 1 + sl) % sl];
  49. Diem p2 = arr[i];
  50. Diem p3 = arr[(i + 1) % sl];
  51. int vectorX1 = p2.x - p1.x;
  52. int vectorY1 = p2.y - p1.y;
  53. int vectorX2 = p3.x - p2.x;
  54. int vectorY2 = p3.y - p2.y;
  55. int tch = vectorX1 * vectorY2 - vectorX2 * vectorY1;
  56. if (tch < 0) am = true;
  57. if (tch > 0) duong = true;
  58. }
  59. if (duong && am) cout << "Da giac nay la da giac lom!\n";
  60. else cout << "Da giac nay la da giac loi!\n";
  61. }
  62. };
  63.  
  64. int main() {
  65. Bai2 a;
  66. a.Nhap();
  67. a.Xuat();
  68. a.DienTich_XacDinhChieu();
  69. a.LoiHayLom();
  70. return 0;
  71. }
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
Dien tich da giac: 0
Chieu cua da giac là chieu cung chieu kim dong ho!
Da giac nay la da giac loi!