Menentukan Luas Segitiga Sembarang Menggunakan Bahasa Pemrograman C++ akan dibahas dalam postingan ini. Contoh program c++ ini termasuk contoh program c++ sederhana, contoh program c++ dan hasil, contoh program c++ perhitungan, contoh program c++ matematika serta contoh program c++ geometri.
Untuk menyelesaikan masalah ini, langkah-langkah yang harus dilakukan adalah:
Langkah 1. Input absis titik pertama
Langkah 2. Input ordinat titik pertama
Langkah 3. Tampilkan titik pertama
Langkah 4. Input absis titik kedua
Langkah 5. Input ordinat titik kedua
Langkah 6. Tampilkan titik kedua
Langkah 7. Input absis titik ketiga
Langkah 8. Input ordinat titik ketiga
Langkah 9. Tampilkan titik ketiga
Langkah 10. Tentukan jarak titik 1 dengan 2
Langkah 11. Tampilkan jarak titik 1 dengan 2
Langkah 12. Tentukan jarak titik 1 dengan 3
Langkah 13. Tampilkan jarak titik 1 dengan 3
Langkah 14. Tentukan jarak titik 2 dengan 3
Langkah 15. Tampilkan jarak titik 2 dengan 3
Langkah 16. Tentukan setengah keliling
Langkah 17. Tentukan luas segitiga
Langkah 18. Tampilkan luas segitiga
Liang. 2014. Introduction to Programming with C++ 3rd Edition. London: Pearson Education yang bisa diakses pada tautan berikut:
https://www.pearson.com/en-us/subject-catalog/p/Liang-Companion-Website-for-Introduction-to-Programming-with-C-Access-to-Videonotes-3rd-Edition/P200000003422/978013338026
Baris kode ini bisa diakses pada tautan berikut:
https://github.com/bayuYudhaSaputra/introduction-programming-CPP-liang/blob/main/02.19.AreaTriangle.cpp
Oleh : #bayuyudhasaputra
02.19. Menentukan Luas Segitiga Sembarang Menggunakan Bahasa Pemrograman C++
1. 02.19.AreaTriangle
Halaman 1
Programming Exercise 2.19
Geometry: Area Of a Triangle
2.19. (Geometry: area of a triangle)
Write a program that prompts the user to enter three points (x1,y1); (x2,y2);
(x3,y3) of a triangle and displays its area. The formula for computing the area
of a triangle is:
π =
π πππ1 + π πππ2 + π πππ3
2
ππππ = βπ (π β π πππ1)(π β π πππ2)(π β π πππ3)
Here is a sample run:
Enter three points for a triangle: 1.5 -3.4 4.6 5 9.5 -3.4
The area of the triangle is 33.6
2.19.01. Identifikasi Masalah
Masalah yang akan diselesaikan adalah menentukan luas segitiga yang terbentuk dari 3
titik dalam diagram cartesius yang tidak berimpit dan tidak segaris. Ketiga titik ini diinput oleh
pengguna.
2.19.02. Strategi Pemecahan Masalah
Untuk menentukan luas segitiga jika diketahui panjang ketiga sisinya, kita bisa
menggunakan rumus Heron berikut:
2. 02.19.AreaTriangle
Halaman 2
Misal, π, π dan π adalah panjang sisi segitiga maka luas segitiga (πΏ) dapat dinyatakan dalam
rumus berikut:
dengan,
Misal, panjang sisi-sisi segitiga ABC berturut-turut 5 cm, 12 cm dan 13 cm maka luas segitiga
ABC adalah:
Misal, π = 12 ππ; π = 5 ππ; dan π = 13 ππ
Jadi, luas segitiga π΄π΅πΆ dengan panjang sisi-sisi segitiga π΄π΅πΆ berturut-turut 5 cm, 12 cm dan
13 cm adalah 30 cm2
.
A B
C
a
b
c
πΏ = βπ (π β π)(π β π)(π β π)
π =
π + π + π
2
A B
C
12 cm
5 cm
13 cm
π =
π+π+π
2
=
12+ 5 + 13
2
=
30
2
= 15
πΏ = βπ (π β π)(π β π)(π β π)
πΏ = β15 β (15 β 12) β (15 β 5) β (15 β 13)
πΏ = 15 β 3 β 10 β 2
πΏ = 900
πΏ = 30 ππ2
3. 02.19.AreaTriangle
Halaman 3
Karena segitiga terbentuk dari tiga titik yang tidak berimpit dan tidak segaris maka
panjang sisi-sisi segitiga ini bisa ditentukan menggunakan rumus jarak antar titik sebagai
berikut:
Misal, π΄(π₯1 , π¦1) dan π΅(π₯2 , π¦2) adalah titik-titik dalam diagram cartesius maka jarak antara
titik A dengan B (dinyatakan oleh |π΄π΅|) adalah sebagai berikut:
Kemudian, luas segitiga ini ditentukan menggunakan rumus luas segitiga Heron.
Misal, titik π΄(1 , 1); π΅(6 , 5) dan πΆ(8 , 2) dalam diagram cartesius seperti gambar
berikut:
|π΄π΅| = β(π₯2 β π₯1)2 + (π¦2 β π¦1)2
4. 02.19.AreaTriangle
Halaman 4
membentuk segitiga π΄π΅πΆ. Untuk menentukan luas segitiga π΄π΅πΆ ini, kita harus menentukan
jarak π΄π΅ sebagai panjang sisi π΄π΅, jarak π΅πΆ sebagai panjang sisi π΅πΆ dan jarak π΄πΆ sebagai
panjang sisi π΄πΆ.
|π΄πΆ| = β(8 β 1)2 + (2 β 1)2
|π΄πΆ| = 72 + 12
|π΄πΆ| = 49 + 1
|π΄πΆ| = 50
|π΄πΆ| = 25 β 2
|π΄πΆ| = 5 2 β 7,0710678118654752440084436210485
|π΄πΆ| β 7,0710678118654752440084436210485
dibulatkan menjadi,
|π΄πΆ| β 7,071067
Sehingga, panjang sisi π΄πΆ = 5 2 β 7,071067 satuan panjang.
|π΄π΅| = β(6 β 1)2 + (5 β 1)2
5. 02.19.AreaTriangle
Halaman 5
|π΄π΅| = 52 + 42
|π΄π΅| = 25 + 16
|π΄π΅| = 41
|π΄π΅| β 6,4031242374328486864882176746218
dan dibulatkan menjadi,
|π΄π΅| β 6,40312
Sehingga, panjang sisi π΄π΅ = 41 β 6,40312 satuan panjang.
|π΅πΆ| = β(8 β 6)2 + (2 β 5)2
|π΅πΆ| = β22 + (β3)2
|π΅πΆ| = 4 + 9
|π΅πΆ| = 13 β 3,6055512754639892931192212674705
|π΅πΆ| β 3,6055512754639892931192212674705
dan dibulatkan menjadi,
|π΅πΆ| β 3,60555
Sehingga, panjang sisi π΅πΆ = 13 β 3,60555 satuan panjang.
Dengan panjang sisi-sisi |π΅πΆ| β 3,60555 , |π΄π΅| β 6,40312 dan |π΄πΆ| β 7,071067,
luas segitiga ABC dapat ditentukan dengan langkah-langkah sebagai berikut:
A B
C
3,60555
7,071067
6,40312
π =
|π΄π΅| + |π΅πΆ| + |π΄πΆ|
2
π =
6,40312 + 3,60555 + 7,071067
2
π =
17,07974
2
= 15
π = 8,53987
6. 02.19.AreaTriangle
Halaman 6
Jadi, luas segitiga π΄π΅πΆ kira-kira sama dengan 11,5 satuan luas.
2.19.03. Menyelesaikan Masalah
Untuk menyelesaikan masalah ini, langkah-langkah yang harus dilakukan adalah:
Langkah 1. Input absis titik pertama
Langkah 2. Input ordinat titik pertama
Langkah 3. Tampilkan titik pertama
Langkah 4. Input absis titik kedua
Langkah 5. Input ordinat titik kedua
Langkah 6. Tampilkan titik kedua
Langkah 7. Input absis titik ketiga
Langkah 8. Input ordinat titik ketiga
Langkah 9. Tampilkan titik ketiga
Langkah 10. Tentukan jarak titik 1 dengan 2
Langkah 11. Tampilkan jarak titik 1 dengan 2
Langkah 12. Tentukan jarak titik 1 dengan 3
Langkah 13. Tampilkan jarak titik 1 dengan 3
Langkah 14. Tentukan jarak titik 2 dengan 3
Langkah 15. Tampilkan jarak titik 2 dengan 3
Langkah 16. Tentukan setengah keliling
πΏ = βπ (π β |π΄π΅|)(π β |π΅πΆ|)(π β |π΄πΆ|)
πΏ = β8,53987 β (8,53987 β 6,40312) β (8,53987 β 3,60555) β (8,53987 β 7,071067)
πΏ β 11,5 satuan luas
7. 02.19.AreaTriangle
Halaman 7
Langkah 17. Tentukan luas segitiga
Langkah 18. Tampilkan luas segitiga
2.19.04. Mengajukan Solusi
Baris kode untuk menentukan luas segitiga adalah sebagai berikut:
1 #include <iostream>
2 #include <cmath>
3 // using namespace std;
4
5 /*
6 ================================================================
7 02.19. Area Of Triangle
8 by : #bayuyudhasaputra
9 lang : IDN (Bahasa Indonesia)
10 ----------------------------------------------------------------
11 Masalah :
12 Write a program that prompts the user to enter three points
(x1,y1);
13 (x2,y2); (x3,y3) of a triangle and displays its area.
14
15 =================================================================
16 */
17
18 int main()
19 {
20 std::cout << " =============================================== "
21 << std::endl;
22
23 // 1. Input absis titik pertama
24 double absisTitik1;
25 std::cout << " Input absis titik A (Misal. 1): ";
26 std::cin >> absisTitik1;
27 std::cout << std::endl;
8. 02.19.AreaTriangle
Halaman 8
28
29 // 2. Input ordinat titik pertama
30 double ordinatTitik1;
31 std::cout << " Input ordinat titik A (Misal. 1) : ";
32 std::cin >> ordinatTitik1;
33 std::cout << std::endl;
34
35 // 3. Tampilkan titik pertama
36 std::cout << std::endl
37 << " ----------------------------------------------- "
38 << std::endl
39 << " Anda menginput titik A"
40 << "(" << absisTitik1 << " , " << ordinatTitik1 << ")"
41 << std::endl
42 << " ----------------------------------------------- "
43 << std::endl;
44
45 // 4. Input absis titik kedua
46 double absisTitik2;
47 std::cout << " Input absis titik B (Misal, 6) : ";
48 std::cin >> absisTitik2;
49 std::cout << std::endl;
50
51 // 5. Input ordinat titik kedua
52 double ordinatTitik2;
53 std::cout << " Input ordinat titik B (Misal, 5) : ";
54 std::cin >> ordinatTitik2;
55 std::cout << std::endl;
56
57 // 6. Tampilkan titik kedua
58 std::cout << " ----------------------------------------------- "
59 << std::endl
60 << " Anda menginput titik B"
61 << "(" << absisTitik2 << " , " << ordinatTitik2 << ")"
62 << std::endl
9. 02.19.AreaTriangle
Halaman 9
63 << " ----------------------------------------------- "
64 << std::endl;
65
66 // 7. Input absis titik ketiga
67 double absisTitik3;
68 std::cout << " Input absis titik C (Misal, 8) : ";
69 std::cin >> absisTitik3;
70 std::cout << std::endl;
71
72 // 8. Input ordinat titik ketiga
73 double ordinatTitik3;
74 std::cout << " Input ordinat titik C (Misal, 2) : ";
75 std::cin >> ordinatTitik3;
76 std::cout << std::endl;
77
78 // 9. Tampilkan titik ketiga
79 std::cout << " ----------------------------------------------- "
80 << std::endl
81 << " Anda menginput titik C"
82 << "(" << absisTitik3 << " , " << ordinatTitik3 << ")"
83 << std::endl;
84
85 // 10. Tentukan jarak titik 1 dengan 2
86 double jarakTitik1Dan2;
87 jarakTitik1Dan2 = pow(pow((absisTitik2 - absisTitik1), 2) +
pow((ordinatTitik2 - ordinatTitik1), 2), 0.5);
88
89 // 11. Tampilkan jarak titik 1 dan 2
90 std::cout << " =============================================== "
91 << std::endl
92 << " Panjang sisi AB adalah "
93 << jarakTitik1Dan2 << " satuan panjang."
94 << std::endl;
95
96 // 12. Tentukan jarak titik 1 dengan 3
10. 02.19.AreaTriangle
Halaman 10
97 double jarakTitik1Dan3;
98 jarakTitik1Dan3 = pow(pow((absisTitik3 - absisTitik1), 2) +
pow((ordinatTitik3 - ordinatTitik1),2), 0.5);
99
100 // 13. Tampilkan jarak titik 1 dengan 3
101 std::cout << " Panjang sisi AC adalah "
102 << jarakTitik1Dan3 << " satuan panjang."
103 << std::endl;
104
105 // 14. Tentukan jarak titik 2 dengan 3
106 double jarakTitik2Dan3;
107 jarakTitik2Dan3 = pow(pow((absisTitik3 - absisTitik2), 2) +
pow((ordinatTitik3 - ordinatTitik2), 2), 0.5);
108
109 // 15. Tampilkan jarak titik 2 dengan 3
110 std::cout << " Panjang sisi BC adalah "
111 << jarakTitik2Dan3 << " satuan panjang."
112 << std::endl;
113
114 // 16. Tentukan setengah keliling
115 double setengahKeliling;
116 setengahKeliling = (jarakTitik1Dan2 + jarakTitik1Dan3 +
jarakTitik2Dan3) / 2;
117
118 // 17. Tentukan luas segitiga
119 double luas;
120 luas = pow((setengahKeliling
121 * (setengahKeliling - jarakTitik1Dan2)
122 * (setengahKeliling - jarakTitik1Dan3)
123 * (setengahKeliling - jarakTitik2Dan3)), 0.5);
124
125 // 18. Tampilkan luas segitiga
126 std::cout << " Luas segitiga ABC adalah "
127 << luas
128 << " satuan luas."
11. 02.19.AreaTriangle
Halaman 11
129 << std::endl
130 << " ============================================== ";
131
132 return 0;
133 }
Pada baris ke-24, 30, 46, 52, 67 dan 73, variabel dengan nama berturut-turut
absisTitik1, ordinatTitik1, absisTitik2, ordinatTitik2, absisTitik3
dan ordinatTitik3 didefinisikan untuk menampung nilai yang diinput oleh pengguna.
Nilai-nilai dalam variabel ini dengan tipe data double.
24 double absisTitik1;
30 double ordinatTitik1;
46 double absisTitik2;
52 double ordinatTitik2;
67 double absisTitik3;
73 double ordinatTitik3;
Kemudian pada baris ke-87, program menghitung panjang sisi π΄π΅ yang dibentuk dari
titik π΄ dan π΅. Hasil perhitungan ini disimpan dalam variabel jarakTitik1Dan2.
86 double jarakTitik1Dan2;
87 jarakTitik1Dan2 = pow(pow((absisTitik2 - absisTitik1), 2) +
pow((ordinatTitik2 - ordinatTitik1), 2), 0.5);
Pada kasus ini, penggunan menginput nilai variabel absisTitik1 = 1, ordinatTitik1
= 1, absisTitik2 = 6 dan ordinatTitik2 = 5. Sehingga, nilai variabel
jarakTitik1Dan2 adalah sebagai berikut:
jarakTitik1Dan2 = pow(pow((absisTitik2 - absisTitik1), 2) +
12. 02.19.AreaTriangle
Halaman 12
pow((ordinatTitik2 - ordinatTitik1), 2), 0.5);
jarakTitik1Dan2 = pow(pow((6 - 1), 2) + pow((5 - 1), 2), 0.5);
jarakTitik1Dan2 = pow(pow((5), 2) + pow((4), 2), 0.5);
jarakTitik1Dan2 = pow((25 + 16), 0.5);
jarakTitik1Dan2 = pow(41, 0.5);
jarakTitik1Dan2 = 6.40321;
Sehingga, nilai variabel jarakTitik1Dan2 adalah 6.40321.
Pada baris ke-98, program menghitung panjang sisi π΄πΆ yang dibentuk dari titik π΄ dan
πΆ. Hasil perhitungan ini disimpan dalam variabel jarakTitik1Dan3.
97 double jarakTitik1Dan3;
98 jarakTitik1Dan3 = pow(pow((absisTitik3 - absisTitik1), 2) +
pow((ordinatTitik3 - ordinatTitik1),2), 0.5);
Pada kasus ini, penggunan menginput nilai variabel absisTitik2 = 6, ordinatTitik2
= 5, absisTitik3 = 8 dan ordinatTitik3 = 2. Sehingga, nilai variabel
jarakTitik2Dan3 adalah sebagai berikut:
jarakTitik2Dan3 = pow(pow((absisTitik3 β absisTitik2), 2) +
pow((ordinatTitik3 β ordinatTitik2), 2), 0.5);
jarakTitik2Dan3 = pow(pow((8 - 6), 2) + pow((2 - 5), 2), 0.5);
jarakTitik2Dan3 = pow(pow((2), 2) + pow((-3), 2), 0.5);
jarakTitik2Dan3 = pow((4 + 9), 0.5);
jarakTitik2Dan3 = pow(13, 0.5);
jarakTitik2Dan3 = 7.07107;
Sehingga, nilai variabel jarakTitik1Dan3 adalah 7.07107.
Dan pada baris ke-106, program menghitung panjang sisi π΅πΆ yang dibentuk dari titik
π΅ dan πΆ. Hasil perhitungan ini disimpan dalam variabel jarakTitik2Dan3.
106 double jarakTitik2Dan3;
107 jarakTitik2Dan3 = pow(pow((absisTitik3 - absisTitik2), 2) +
pow((ordinatTitik3 - ordinatTitik2), 2), 0.5);
13. 02.19.AreaTriangle
Halaman 13
Pada kasus ini, penggunan menginput nilai variabel absisTitik2 = 1, ordinatTitik2
= 1, absisTitik3 = 8 dan ordinatTitik3 = 2. Sehingga, nilai variabel
jarakTitik1Dan3 adalah sebagai berikut:
jarakTitik1Dan3 = pow(pow((absisTitik3 - absisTitik1), 2) +
pow((ordinatTitik3 - ordinatTitik1), 2), 0.5);
jarakTitik1Dan3 = pow(pow((8 - 1), 2) + pow((2 - 1), 2), 0.5);
jarakTitik1Dan3 = pow(pow((7), 2) + pow((1), 2), 0.5);
jarakTitik1Dan3 = pow((49 + 1), 0.5);
jarakTitik1Dan3 = pow(50, 0.5);
jarakTitik1Dan3 = 3.60555;
Sehingga, nilai variabel jarakTitik1Dan3 adalah 3.60555.
Kemudian pada baris ke-116, program menghitung setengah dari keliling segitiga ABC.
Hasil perhitungan ini disimpan dalam variabel setengahKeliling berikut:
115 double setengahKeliling;
116 setengahKeliling = (jarakTitik1Dan2 + jarakTitik1Dan3 +
jarakTitik2Dan3) / 2;
Pada kasus ini, proses kalkulasi yang tersimpan dalam variabel setengahKeliling adalah
sebagai berikut:
setengahKeliling = (jarakTitik1Dan2 + jarakTitik1Dan3 + jarakTitik2Dan3)
/ 2;
setengahKeliling = (6.40321 + 7.07107 + 3.60555) / 2;
setengahKeliling = (17.07983) / 2;
setengahKeliling = 8.539915;
Sehingga, nilai variabel setengahKeliling adalah 8.539915.
Dan pada baris ke-120, luas segitiga ABC dihitung. Luas ini disimpan dalam variabel
dengan nama luas sebagai berikut:
119 double luas;
120 luas = pow((setengahKeliling
121 * (setengahKeliling - jarakTitik1Dan2)
14. 02.19.AreaTriangle
Halaman 14
122 * (setengahKeliling - jarakTitik1Dan3)
123 * (setengahKeliling - jarakTitik2Dan3)), 0.5);
Proses kalkulasi yang disimpan dalam variabel luas adalah sebagai berikut:
luas = pow((setengahKeliling * (setengahKeliling - jarakTitik1Dan2) *
(setengahKeliling - jarakTitik1Dan3) * (setengahKeliling -
jarakTitik2Dan3)), 0.5);
luas = pow((8.53992 * (8.53992 - 6.40321) * (8.53992 - 7.07107) * (8.53992
- 3.60555)), 0.5);
luas = pow(132.25392, 0.5);
luas = pow(132.25392, 0.5);
Sehingga, nilai variabel luas adalah 11.5. Contoh output dari program jika pengguna
menginput nilai variabel absisTitik1, ordinatTitik1, absisTitik2,
ordinatTitik2, absisTitik3 dan ordinatTitik3 berturut-turut 1, 1, 6, 5, 8 dan 2
adalah sebagai berikut:
15. 02.19.AreaTriangle
Halaman 15
2.19.05. Refleksi
Program ini masih belum sempurna karena ada beberapa batasan yang belum divalidasi.
Oleh karena itulah, beberapa perbaikan yang perlu dilakukan adalah:
1. Input dari pengguna harus divalidasi, apakah pengguna sudah menginput bilangan
double atau belum? Jika pengguna sudah menginput bilangan double maka program
akan diproses lebih lanjut. Jika pengguna belum mengiput bilangan double maka
program akan dihentikan dan pesan error ditampilkan.
16. 02.19.AreaTriangle
Halaman 16
2. Setelah pengguna menginput dan proses dijalankan, program langsung keluar. Sehingga,
program perlu diperbaiki dengan menawarkan, apakah pengguna ingin keluar dari program
atau ingin menginput nilai lain?
3. Absis dan ordinat titik-titik yang diinput pengguna belum divalidasi, apakah titik-titik ini
berimpit, segaris atau tidak keduanya? Jika titik-titik yang diinput berimpit atau segaris
maka pesan error perlu dimunculkan. Jika titik-titik yang diinput tidak berimpit dan tidak
segaris maka program akan dijalankan.
4. Nilai-nilai dalam variabel juga belum divalidasi apakah masih dalam jangkauan nilai
double atau sudah di luar jangkauan nilai double? Jika nilai-nilai dalam variabel masih
dalam jangkauan nilai double maka program akan dilanjutkan. Jika nilai-nilai yang
diinput di luar jangkauan nilai double maka program akan memunculkan nilai error.
2.19.06. Daftar Rujukan
Liang. 2014. Introduction to Programming with C++ 3rd Edition. London: Pearson Education
yang bisa diakses pada tautan berikut:
https://www.pearson.com/en-us/subject-catalog/p/Liang-Companion-Website-for-
Introduction-to-Programming-with-C-Access-to-Videonotes-3rd-
Edition/P200000003422/978013338026
Baris kode ini bisa diakses pada tautan berikut:
https://github.com/bayuYudhaSaputra/introduction-programming-CPP-
liang/blob/main/02.19.AreaTriangle.cpp