How could I fix my script?
16 次查看(过去 30 天)
显示 更早的评论
If I am using the function rotatedText=rot(text,n). First things for say, I have to make sure that my script should apply a Caesar cipher encryption with a shift to n to input string text. The function should shift uppercase letters to uppercase letters and lowercase letters to lowercase letters. If the string text contains numbers or special characters it should leave them the same. The function should work for negative shifts and shifts greater than 26 or less than -26.
function rotatedText=rot(text,n);
n=mod(n,26)
for i=1:length(text)
ascii=double(txt(i));
if ascii>=65 && ascii<90
rotatedText(i)=char(ascii+n);
elseif ascii>=97 && ascii<=122
rotatedText(i)=char(ascii+n)
else ascii>=33 && ascil<=65 || ascii>=90 && ascii<97 || ascii>=122 &&
ascii<=126;
rotatedText(i)=char(ascii);
end
end
3 个评论
采纳的回答
Walter Roberson
2018-10-8
Decide which range you are in. If it is one of the two ranges to be affected, record the character that is the beginning of the range and calculate the distance of the character from the beginning of the range. Add the shift to the distance. Take mod 26. Add the recorded beginning of the range, and convert to char and save. Otherwise save unchanged. Repeat for all characters.
... You can vectorize this in at most two cases.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!