Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Надо каждое чётное число заменить на "Х". Пишу условие и программа виснет.

Владимир Псай Просветленный (28618), закрыт 4 года назад
Что не так делаю?

function func_9(a, b){
let i = a,
res = '';
while(i <= b){
res += `${i} `;
i++;
if(i % 2 === 0){
i = "X";
}
}
return res;
}
console.log(`Task_9: ${func_9(1, 10)}`);

В дебагере не могу прогнать цикл, что бы посмотреть как он работает, ибо зависает
----------------------------------------------------
код здесь:
codepen.io/vvv7220/pen/ExxxWjZ?editors=0011
Лучший ответ
Лоэнрон Профи (883) 4 года назад
Можно поточнее, что должна возвращать функция?
P.S. а зависает, потому что уходит в бесконечный цикл, т. к. вы присваиваете в i строку, и потом сравниваете строку с числом.
Даже не так. Я вообще не понимаю что происходит. "X" это вообще что? Строка "X", какое-то иное заданное число?
res += `${i} `; вообще не понятно что за зверь.
если вы используете какие-то препроцессоры то нужно указывать.

P.P.S.

Короче, вот функция, которые возвращает строку состоящую из идущих подряд цифр от a до b, где каждое четное число заменено на "X"

function replaceEvenInt(a,b){

let i = a,
res = "";

while(i <= b){

if(!(i % 2)){
res += "X";
} else {
res += i;
}

i++;

}

return res;

}
Владимир ПсайПросветленный (28618) 4 года назад
1 X 3 X 5 X 7 X 9 X
Так должно быть. Четные заменены на "X"
Лоэнрон Профи (883) Между символами должны быть пробелы?
Остальные ответы
Кио Кио Просветленный (22760) 4 года назад
Ты переменной "i" типа integer присваиваешь значение X типа char. Фу таким быть, это джава, а не пайтон.
ЛоэнронПрофи (883) 4 года назад
Это JS, здесь неявно определение типа переменных.
т. е. "2" == 2 => true
Кио Кио Просветленный (22760) Тогда извиняюсь, JS я не знаю.
Elepsis Eclipse Гений (64086) 4 года назад
function func_9(a, b){
  let str = "";
  for( a; a <= b; a++ ){
    str += a % 2? a : " X ";
  }
  return str.trim();
}
console.log("Task_9: " + func_9(1, 10)); // Task_9: 1 X 3 X 5 X 7 X 9 X

______

То же, что и

while( a <= b ){
  str += a % 2? a : " X ";
  a++;
}
Привет, это Солнечный ветер Искусственный Интеллект (138067) 4 года назад
Нельзя менять значение переменной цикла внутри цикла
Молот Шотландцев Высший разум (300965) 4 года назад
У меня после ваших стараний вообще весь ноут наглухо завис, минут 40 только и делал что перезагружал )))
Если вам нужно 1X3X5X7X9X, то вот так вроде работает
function func (a,b) {
res = '';
while (a <= b) {
if (a % 2 == 0) {
res += "X";
}
else {res += a.toString();}
a++;
}
return res
}
console.log(func(1,10));
1sk7 Гуру (3950) 4 года назад
Емое, навертел-то, говнокодер
Владимир ПсайПросветленный (28618) 4 года назад
Думаешь так стоит попробовать? Пожалуй твой ответ самый конструктивный здесь. И код расписан очень понятно. Спасибо
Похожие вопросы