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

Шифр цезаря на js

МГ Знаток (354), открыт 7 часов назад
Имеется код:
 function caesar(text, shift, alf) { 
let total = '';
for (let i of text) {
let place = alf.indexOf(i);
let new_place = place + shift;
if (alf.includes(i)) {
total.value += alf[new_place];
} else {
total.value += alf[place];
}
}
alert(total.value);
return total.value;
}
Он осуществляет шифр Цезаря. В 12 строчке вместо получившегося слова выходит "undefined".
На js я программирую недавно, поэтому прошу помочь найти ошибку
1 ответ
Раиса Орлова Гуру (4842) 6 часов назад
function caesar(text, shift, alf) {
let total = '';
for (let i of text) {
let place = alf.indexOf(i);
let new_place = (place + shift)%alf.length;
if (alf.includes(i)) {
total += alf[new_place];
} else {
total += alf[place];
}
}
alert(total);
return total;
}
caesar('text', 0, [...'abcdefghijklmnopqrstuvwxyz'])// text
МГЗнаток (354) 6 часов назад
работает неверно:
 caesar('abcde', 1, [...'abcdefghijklmnopqrstuvwxyz']) 
выводит "blvfp" вместо "bcdef"
Раиса ОрловаГуру (4842) 6 часов назад
Интересно. А остальные 25 смещений что дают? Такой тест запуститься?
 for (let i=0; i<26; i++)document.writeln(caesar('abcde', i, [...'abcdefghijklmnopqrstuvwxyz'])+'<br>'); 
Похожие вопросы