Bir ifadem olduğunu söyle:
9 * 8 + 1 - 4
Bu ifade, operatör önceliğine bağlı olarak altı farklı şekilde yorumlanabilir:
(((9 * 8) + 1) - 4) = 69 (* + -)
((9 * 8) + (1 - 4)) = 69 (* - +)
((9 * (8 + 1)) - 4) = 77 (+ * -)
(9 * ((8 + 1) - 4)) = 45 (+ - *)
((9 * 8) + (1 - 4)) = 69 (- * +)
(9 * (8 + (1 - 4))) = 45 (- + *)
Bir geliştirici olduğumu ve öncelik tablolarını vb. Ezberlemek istemiyorum, bu yüzden sadece tahmin edeceğim.
Bu durumda, en büyük hata marjı 45-77 olacaktır, bu 32'nin farkıdır.
Meydan okuma
Sayı ve aşağıdakilerden oluşan bir ifade verilen +
, -
, *
, /
(tamsayı bölme) ve %
operatörlerin öncelik göre, çıktı o ifadesi için en büyük ve en küçük değerin mutlak fark.
Özellikler
- Giriş ifadesi parantez içermez ve her operatör sola dayalıdır.
- Giriş ifadesi yalnızca negatif olmayan tam sayılar içerecektir. Bununla birlikte, alt ifadeler negatifleri değerlendirebilir (örneğin
1 - 4
). - İfadeyi herhangi bir makul formatta alabilirsiniz. Örneğin:
"9 * 8 + 1 - 4"
"9*8+1-4"
[9, "*", 8, "+", 1, "-", 4]
[9, 8, 1, 4], ["*", "+", "-"]
- Giriş en az 1 ve en fazla 10 operatör içerecektir.
- 0'a bölünen veya modulo içeren ifadeler dikkate alınmamalıdır.
- Moduloya negatif operandlar verilmeyeceğini varsayabilirsiniz.
Test Kılıfları
9 * 8 + 1 - 4 32
1 + 3 * 4 3
1 + 1 0
8 - 6 + 1 * 0 8
60 / 8 % 8 * 6 % 4 * 5 63
%
operatör negatif sayılarla nasıl çalışır? C veya Python ya da başka bir şey gibi mi?
%
İkinci örneğinizde iki farklı önceliğe sahipmiş gibi davranıyorsunuz .