* Saat ini, Anda sudah memiliki fungsi detectTriangle yang berguna

Berikut ini adalah pertanyaan dari saepul115 pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas

* Saat ini, Anda sudah memiliki fungsi detectTriangle yang berguna untuk* mendeteksi jenis segitiga berdasarkan nilai argumen.
* Contoh:
* - 1, 1, 1 -> Segitiga sama sisi
* - 4, 4, 2 -> Segitiga sama kaki
* - 3, 4, 6 -> Segitiga sembarang
*
* Namun fungsi detectTriangle belum berjalan dengan baik karena
* bila ada argumen fungsi yang bukan number, alih-alih error, ia akan mengembalikan "Segitiga sembarang".
* Contoh:
* - 1, false, 1 -> Segitiga sembarang
* - 'a', 3, 5 -> Segitiga sembarang
* - 12, 2, null -> Segitiga sembarang
* Kondisi yang diharapkan:
* - 1, false, 1 -> Argumen kedua harus number
* - 'a', 3, 5 -> Argumen pertama harus number
* - 12, 2, null -> Argumen ketiga harus number
*
* Tugas Anda adalah memperbaiki fungsi detectTriangle agar berjalan dengan kondisi yang diharapkan.
* Pastikan Anda menggunakan teknik Throwing dan Handling Error yah.
*
* TODO 1:
* - Buatlah class ValidationError yang merupakan custom error dengan spesifikasi berikut:
* - Turunan dari class Error
* - Memiliki constructor(message)
* - this.name harus bernilai "ValidationError"
*
* TODO 2:
* - Buatlah fungsi validateNumberInput yang memvalidasi 3 buah input (argumen) dengan spesifikasi berikut:
* - Menerima 3 argumen
* - Bila argumen pertama bukan number:
* - throw ValidationError dengan pesan 'Argumen pertama harus number'
* - Bila argumen kedua bukan number:
* - throw ValidationError dengan pesan 'Argumen kedua harus number'
* - Bila argumen ketiga bukan number:
* - throw ValidationError dengan pesan 'Argumen ketiga harus number'
*
* TODO 3:
* - Panggil fungsi validateInputNumber di dalam fungsi detectTriangle untuk memvalidasi nilai argumen a, b, dan c.
* - pastikan Anda memanggil validaateInputNumber menggunakan try .. catch.
* - bila block catch terpanggil, kembalikan fungsi detectTriangle dengan pesan error yang dibawa fungsi validateInputNumber.
*/


// TODO 1

// TODO 2


const detectTriangle = (a, b, c) => {
// TODO 3

if (a === b && b === c) {
return 'Segitiga sama sisi';
}

if (a === b || a === c || b === c) {
return 'Segitiga sama kaki';
}

return 'Segitiga sembarang';
};

module.exports = { ValidationError, validateNumberInput, detectTriangle };

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

Jawaban:

// TODO 1

class ValidationError extends Error {

   constructor(message) {

       super(message);

       this.name = "ValidationError";

   }

}

// TODO 2

function validateNumberInput(a,b,c){

 try{

   if(typeof (a) !== 'number'){

     throw new ValidationError("Argumen pertama harus number");

   }

   if(typeof (b) !== 'number'){

     throw new ValidationError("Argumen kedua harus number");

   }

   if(typeof (c) !== 'number'){

     throw new ValidationError("Argumen ketiga harus number");

   }

 }catch(error){

   return `${error.message}`

 }

}

const detectTriangle = (a, b, c) => {

 // TODO 3

 try{

   const checkPoint = validateNumberInput(a,b,c)

   if(checkPoint === '' || checkPoint === undefined || checkPoint === null){

     if (a === b && b === c) {

       return 'Segitiga sama sisi';

     }

     if (a === b || a === c || b === c) {

       return 'Segitiga sama kaki';

     }

     return 'Segitiga sembarang';

   }else{

     const isi = validateNumberInput(a,b,c);

   return isi;

   }

 }catch(error){

   const isi = validateNumberInput(a,b,c);

   return isi;

 }

};

console.log(detectTriangle(1,false,1));

console.log(detectTriangle('a', 3, 5));

console.log(detectTriangle(12,2,null));

Penjelasan:

Semoga dengan pertanyaan yang sudah terjawab oleh ITBunis dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.

Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact

Last Update: Mon, 09 Aug 21