Latihan 1 - Hint 2
Selanjutnya kita perlu menentukan apakah input berupa angka / operator.
Kemudian simpan angka / operator tersebut di variable masing-masing, untuk selanjutnya dikalkulasi saat input operator selanjutnya.
Hasil kalkulasi kemudian disimpan pada variable yang ditampilkan di akhir setelah user input =.
Untuk menentukan apakah suatu input (string) berupa angka akan berbeda-beda setiap bahasa.
Misalkan di javascript kita dapat menggunakan fungsi isNaN() yg akan mengembalikan true bila input bukan angka.
Di bahasa lain yang tidak memiliki fungsi khusus untuk hal tersebut, kita dapat melakukan konversi dari string ke int.
Misalkan untuk ruby menggunakan to_f untuk men-konversi string ke float. Bila konversi tersebut menghasilkan error, maka dapat dipastikan input bukan merupakan angka, bila konversi tidak menghasilkan error (seperti ruby to_f) maka kita dapat men-konversi balik hasil konversi ke string dan dibandingkan dengan nilai awal. Contoh:
input = gets
input == input.to_f.to_sMelanjutkan kode dari Hint 1:
let input
let nums = []
let operator = null
do {
input = prompt()
if(!isNaN(input)) { // input angka
nums.push(Number(input))
} else { // input bukan angka
operator = input
}
} while (input !== '=')Kita juga perlu melakukan pengecekan pada operator untuk memastikan input merupakan operator yg didukung:
const validOperators = ['+', '-', '/', '*', '=']
let input
let nums = []
let operator = null
do {
input = prompt()
if(!isNaN(input)) { // input angka
nums.push(Number(input))
} else if(validOperators.indexOf(input) >= 0) { // input operator
operator = input
} else { // input tidak valid
alert('input tidak valid')
}
} while (input !== '=')