Шифр цезаря на js
Пытаюсь написать Шифр Цезаря, но не понимаю как искать символы моего сообщения
Выводит undefined из количества символов в сообщении
var ru = ['А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я']
var eng = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
shift = prompt("Выберите сдвиг")
var msg = prompt("Сообщение для зашифровки")
var total = 'Результат :'
lang = prompt("Enter the lang Eng/RU")
if(lang == 'RU'){
for(i in ru){
place = ru.indexOf(i)
new_place = place + shift
if(i in ru){
total += ru[new_place]
}
else{
total += 1;
}
}
}
else if(lang == 'ENG'){
for(i in msg){
place = eng.indexOf(i)
new_place = place + shift
if(i in eng){
total += eng[new_place]
}
else{
total += 1
}
}
}
alert(total)
Ответы (1 шт):
Автор решения: Andrey Semykin
→ Ссылка
Там ошибок просто немеряно. Переменные надо объявлять, типы приводить и т.д. Сделал рабочий вариант для английского.
var ru = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я']
var eng = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
let shift = +prompt("Выберите сдвиг");
let msg = prompt("Сообщение для зашифровки");
console.log(msg);
let total = 'Результат :'
let lang = 'ENG' /*prompt("Enter the lang Eng/RU")
if (lang == 'RU') {
for (let i of msg) {
let place = ru.indexOf(i);
console.log(i, 'place=', place);
let new_place = place + shift;
console.log(new_place);
if (i in ru) {
total += ru[new_place]
} else {
total += 1;
}
}
} else */if (lang == 'ENG') {
for (let i of msg) {
let place = eng.indexOf(i);
console.log(i, 'place=', place);
let new_place = place + shift;
console.log(new_place);
if (eng.includes(i)) {
total += eng[new_place]
} else {
total += 1
}
}
}
alert(total)