Дано натуральное число. Если в нем есть цифры а и b, то определить, какая из них расположена в числе правее. Если одна или обе эти цифры встречаются в числе несколько раз, то должны быть рассмотрены последние из одинаковых цифр.
Вот код, который имеется, но
<script type="text/javascript">
let s = prompt("Enter number");
let a = prompt("Enter a");
let b = prompt("Enter b");
function index(s, c){
let ic=0;
for (let i=0; i< s.length; i++){
if (s[i]==c)
ic = i;
}
return ic;
}
if (index(s,a)>index(s,b))
alert("a is to the right");
else if (index(s,a)<index(s,b))
alert("b is to the right");
else
alert("a is equal to b");
</script>
function check(x, a, b) {
if (a === b) {
for (; x; x = Math.floor(x / 10)) {
if (x % 10 === a) {
return "equal"
}
}
return "none"
}
for (; x; x = Math.floor(x / 10)) {
if (x % 10 === a) {
for (; x; x = Math.floor(x / 10)) {
if (x % 10 === b) {
return "right"
}
}
return "only a"
}
if (x % 10 === b) {
for (; x; x = Math.floor(x / 10)) {
if (x % 10 === a) {
return "left"
}
}
return "only b"
}
}
return "none"
}
console.log(check(1234567, 5, 5))
console.log(check(1234567, 4, 6))
console.log(check(1234567, 6, 4))
console.log(check(1234554789, 4, 5))
console.log(check(1234567, 3, 9))
console.log(check(1234567, 9, 3))
console.log(check(1234567, 8, 9))
console.log(check(1234567, 8, 8))
.as-console-wrapper.as-console-wrapper { max-height: 100vh }
Он не совсем корректно работает...
Нигде не проверяется, а встречается ли вообще цифра.
prompt = function() {
return (1e9 + Math.random() * 1e9) | 0;
// удобнее будет тестить, не заморачиваясь со вводом.
};
alert = console.log;
/***/
let num = prompt("Enter number");
let a = 4; // prompt("Enter a");
let b = 1; // prompt("Enter b");
console.log(num, a, b);
let a_index = right_index(num, a);
let b_index = right_index(num, b);
if (a === b) {
alert("Цифры равны, индекс: " + a_index);
} else if (a_index == -1) {
alert("Цифра " + a + " не встречается.");
} else if (b_index == -1) {
alert("Цифра " + b + " не встречается.");
} else if (b_index < a_index) {
alert("Цифра a(" + a + ") правее.");
} else if (a_index < b_index) { // можно просто else.
alert("Цифра b(" + b + ") правее.");
}
/***/
function right_index(str, char) {
str = "" + str; // Конвертация в строку, если прилетит число вместо строки.
for (let i = str.length - 1; i >= 0; i--) {
if (str[i] == char) return i;
// Цикл справа налево. Если нашелся - сразу возвращает.
}
return -1; // Не нашлось.
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей