凯撒cyphor加密问题。

775(30天)
玛雅ghugretkar
玛雅ghugretkar 2019年6月12日
回答: 齐亚•拉赫曼2022年8月28日
凯撒密码是最简单的加密算法。它增加了一个固定的值,每个字符的ASCII (unicode)值的文本。换句话说,它转变角色。解密文本只是转移回相同的量,也就是说,它从字符减去相同的值。编写一个函数 凯撒 接受两个参数:第一个是特征向量是加密的,而第二个是转移数量。函数返回输出参数 编码 加密的文本。该函数需要使用的所有可见的ASCII字符空间~。这些都是32到126年的ASCII码。如果将代码在这个范围之外,它应该环绕。例如,如果我们改变~ 1,结果应该空间。如果我们改变空间1,结果应该是~。
代码的第一部分…这是
函数编码=凯撒(n),
char_set = char (32): char (126)
编码= char (+ n);
结束
但是如果我想保持32和126 ....之间的范围也包装around the same values as asked in later half of question , it doesnt work
函数编码=凯撒(n),
char_set = char (32): char (126)
< = char_set
编码= char (+ n);
结束
结束
请帮我关注代码建筑....(预计一种简单的方法,因为我心仪)
这些输出测试
凯撒(“ABCD”,1)
ans =
“BCDE”
凯撒(“xyz ~”,1)
ans =
“yz {!”
凯撒(“xyz ~”,1)
ans =
“wxy ~}”%这些代码是正确的答案
16条评论
里克
里克 2020年9月28日
代码@Danial,你在说什么?Sonu已经提到他们的代码不工作。

登录置评。

接受的答案

通刘
通刘 2019年8月24日
编辑:通刘 2019年8月24日
函数编码=凯撒(M, n)
num =双(M);%将字符串转换成双
num2 = num;
N = N - 95 *修复(N / 95);
i = 1:长度(num);
如果num (i) + N < 32%如果ASCII值低于32
num2 (i) = 126 - (31 - num (i) - N);
elseifnum(我)+ N > 126%如果ASCII值超出126
num2 (i) = 32 + (num(我)+ N -127);
其他的
num2 (i) = num (i) + N;%如果ASCII值是正常的
结束
编码= char (num2);
结束
我花了半小时的解决这个问题,有点困难。
这是正确的代码。希望它可以帮助。
30的评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年8月14日
字符(32)字符(126)126 - 32 + 1 = 95的可能性。如果你向前移动,如果原始值足够大,然后转变是足够大的,总可以大于126。例如,
“z”+ 23
ans = 145
当这种情况发生时,当你数从原来的信,当你到达126,下一个值之后,应该不是127,而是应该32,你会继续计数。
但这种转变,用户可以请求是不受限制;例如,用户可以请求转移1000人。你必须计算到126年,32岁,33岁的……126年,32岁,33岁的……126、32、33 . .好几次了。
现在,你 可以 写一个循环,
shift_count > 0
current_characters = current_characters + 1;
shift_count = shift_count - 1;
current_characters (current_characters = = 127) = 32;
结束
但这并不是有效率。你可以先写更有效率
shift_count > 95
shift_count = shift_count - 95;
结束
转变的计数(比方说)200相当于转变计数95紧随其后的转变计数数的10 95后跟一个转变,但数95年离开一切的转变,以便转移数200相当于转变计数10:每组95年转变的“包装”开始。
但使用循环减少转移的数量是不像它应该是有效的。相反,你应该能够计算多少会遗留在你删除了所有95的倍数。这是一个计算,国防部():国防部(shift_count, 95)问“多少你删除后剩下的倍数95 ?”:这就是国防部()函数用于计算后的余数删除数的整数倍。
所以:国防部()用于删除“包装”的效果结束过去的char(126)结束。事实证明,你可以用它来计算端点:
减去32的基础。计算国防部(characters_minus_32 + shift_count, 95)。添加回32,你有你所需要的结果。

登录置评。

更多的答案(38)

Marilou
Marilou 2019年10月17日
函数编码=凯撒(字符串,转变)
值=字符串+转变;
i = 1:长度(值)
值(我)< 32
价值(我)=价值(我)+ 95;
结束
值(i) > 126
价值(我)=价值(i) -95;
结束
结束
编码= char(值);
15个评论

登录置评。


帕维尔Radko
帕维尔Radko 2020年8月11日
编辑:帕维尔Radko 2020年8月13日
感谢一个人告知 circshift 函数。我已经试过几个小时来解决这个任务没有这种功能。
我终于通过了所有测试。和最终的代码更短和优雅的像我在今天的早上)
它只有4线包括“结束”。
主要的思想是将字符表,但不输入的符号。
%写一个函数“凯撒”,使用“数组”——数组作为输入
%的ASCII字符表,和“转变”——的价值(整数)将“数组”元素
%通过ASCII表(从32到126)
函数编码=凯撒(数组,转变)
shifted_array = circshift (char(32:126)转变);
%我们转变(卷)ASCII字符从32到126年的“转变”
%注意,我们使用“转移”,但不是因为我们转变角色表
%的角色在我们的“数组”
%作为输出我们得到所有的ASCII字符从32到126年但转移(滚)
编码= shifted_array(双(数组)-31)
%的两倍(数组)——对应于ASCII字符数组的数字
%的表
%(-31年双(数组))——这个数字输出数组caracter指数
%转移到-31年
%“-31”,因为我们使用“shifted_array”不是ASCII字符从1到31日
% shifted_array()——使用数组括号里的数字作为转移表
%指数和输出相应的字符
结束
8的评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年7月18日
这段代码可能会失败如果x是一个矢量,这是预期的情况。考虑例如
压缩空气蓄能(char (124:126), 1)
双(char (124:126)) (124、125、126)。加1,得到c = (125、126、127)。现在你测试
如果c > 126
但c是一个矢量,(125 126)的部分 大于126,所以 如果 将会失败,因为测试会产生假的,假的,真正的和 如果 需要所有非零的值,测试成功。

登录置评。


Wilver桑切斯
Wilver桑切斯 2020年2月7日
函数编码=凯撒(文本、amound)
n = amound - 95 *修复(amound / 95);
v =双(文本)+ n;
v (v < 32) = 126 - (31 v (v < 32));
v (v > 126) = 32 + (-127 + v (v > 126));
编码= char (v);
结束
2的评论
Raffael Leobino
Raffael Leobino 2022年3月26日
天才的举动

登录置评。


Guillaume
Guillaume 2019年6月12日
使用 国防部 快速眼动 约束值介于0和最大,wrap-around.e.g:
> >国防部(0:51,26)
ans =
1到21
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
22日通过42
21日22日23日24日25日0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
通过52 43
16 17 18 19 20 21日22日23日24日25
你可以看到值26日27日,…回到0,1,……
加/减一些补偿32:126做同样的值的范围
5个评论
曼努埃尔·罗德里格斯弗洛
你好,我试过了,但一些向量中的值时停止出现或改变到另一个行输出。我会很感激任何建议。的代码是:
函数编码=凯撒(v,米)
v =双(v);
v = v + m;
r = 1:尺寸(v, 2)%我试着解决字符消失
v (1 r) =国防部(v (1 r), 95);
结束
编码= char (v);
结束

登录置评。


泽源曹
泽源曹 2020年2月7日
我想出了一个方法,使用if语句的逻辑索引而不是
函数编码=凯撒(str, n)
str1 =双(str);
地板(n / m = n - 95 * 95);
codedstr1 = str1 + m;
codedstr1 (codedstr1 > = 127) = codedstr1 (codedstr1 > = 127) -127 + 32;
编码= char (codedstr1);
结束
1评论
Sahil聊
Sahil聊 2020年3月19日
伙计这只有一半的解决方案你错过了”消息+ n < 32”条件
函数编码=凯撒(消息,n)
味精=双(消息);
m =国防部(n, 95);
coded_msg =味精+ m;
coded_msg (coded_msg > 126) = coded_msg (coded_msg > 126) - 127 + 32;
coded_msg (coded_msg < 32) = coded_msg (coded_msg < 32) + 127 -32;
编码= char (coded_msg);
结束

登录置评。


Sahil聊
Sahil聊 2020年3月19日
函数编码=凯撒(消息,n)
味精=双(消息);
m =国防部(n, 95);%这contricts关键在范围之内
coded_msg =味精+ m;
coded_msg (coded_msg > 126) = coded_msg coded_msg > 126 - 95;
coded_msg (coded_msg < 32) = coded_msg (coded_msg < 32) + 95;
编码= char (coded_msg);
结束
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年7月22日
阅读问题描述:
“函数需要使用的所有可见的ASCII字符空间~。这些都是32到126年的ASCII码”
现在计算:
长度(32:126)
ans = 95

登录置评。


赛勒斯(David Pastelero
赛勒斯(David Pastelero 2020年7月8日
编辑:赛勒斯(David Pastelero 2020年7月8日
%,这是我的方式。
函数num编码=凯撒(arr)
大小= strlength (arr);
编码+ num的arr =
i = 1:大小
编码(我)> 126
编码(i) = (i) - 95编码;
结束
编码(i) < 32
编码(i) =编码(i) + 95;
结束
结束
编码= char(编码);
结束
1评论
Santhosh库马尔
Santhosh库马尔 2020年12月11日
为什么我们要用+或- 95代码?

登录置评。


CCF2017麻省理工学院
CCF2017麻省理工学院 2019年7月2日
编辑:CCF2017麻省理工学院 2019年7月2日
这个问题是问你将字符变量由给定元素n
包装这个词意味着,如果你的角色的ASCII代码超过32或126你需要圆回来。
例如
如果ASCII代码是97,n(转移变量)是45所以ASCII代码是142,超过126。所以你需要从126减142
142 - 126,并将结果添加到31日。
你需要开.....做所有使用调用的函数 circshift
我定义了一个字符数组从32到126年所需的ascii范围
ch = char (32:126)
这些字符。
ch =
”! " # $ % &’()* +,”/ 0123456789:< = > ? @ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^_”abcdefghijklmnopqrstuvwxyz {|} ~
当我使用 circshift 命令
ch_shift_pos = circshift (ch, 2)
ch_shift_pos =
}~ ! " # $ % &’()* +,”/ 0123456789:< = > ? @ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^_”abcdefghijklmnopqrstuvwxyz {|
ch_shift_neg = circshift (ch, 2)
ch_shift_neg =
" # $ % &’()* +,”/ 0123456789:< = > ? @ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^_”abcdefghijklmnopqrstuvwxyz {|} ~!”
注意角色的转变 2的位置 你无须手动保持在其范围内。
现在,如果我想找一个性格和其相应的加密/我只是转移转移价值 指数 因为ch和ch_shift都 相同 大小
举个例子:如果我想找到加密的字符,我第一次发现ch的数组的索引,并将它存储在一个变量x
x = strfind (ch,“一个”)
x =
66年
然后我使用索引来查找加密在移位的数组中
ch_shift_pos (x)
ans =
“_”
ch_shift_neg (x)
ans =
“c”
在那里!这就是你的答案。那么简单。但是我不得不绞尽脑汁。:P
3评论
Guillaume
Guillaume 2019年7月2日
我已经解释了如何在各种评论。我不确定我能如何解释更没有给出解决方案。
在一个评论,我写道,所需要的是: “一个整数减法,国防部,相同的整数的加法” (和一个转换 字符 之后)。
你的消息有一组数字(字符)a和b两个值之间。转变这组数字0和b之间。添加你的凯撒的转变。这可能下溢0或溢出b。应用 国防部 所以它包裹在0和b之间。扭转原来的转变,数字一次又在a和b之间。

登录置评。


拉胡尔Gulia
拉胡尔Gulia 2019年7月22日
编辑:Guillaume 2019年7月22日
函数编码=凯撒(str, n)
num1 =双(str);%将字符串转换为双定义的转变
i = 1:长度(num1)
如果num1(我)+ n > 126%如果ASCII值超出126
m = num1 (i) -126 + n;
p = 31 + m;
num1 (i) = p;
elseifnum1 (i) + n < 32%如果ASCII值低于32
m = 32 - num1 + n(我);
p = 126米;
num1 (i) = p;
其他的m = num1 + n(我);%在正常状态
num1 (i) = m;
结束
代码(i) = num1 (i);
结束
编码= char(代码);
我写了这段代码。谁能请expain是错误的吗?我知道我犯了一个错误。但是我不能够算出来。
提前谢谢。
5个评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年7月12日
假设n = 1000,特征向量的“97(十进制)。num1将成为97年。num1(1) + 1000 > 126,所以m = 97 - 126 + 1000 = 971。然后p = 31 + 971给出了p = 1002。这是 期望的结果。
代码需要调整num1 + n是32和126年之间(包容)

登录置评。


shreyansh pitroda
shreyansh pitroda 2020年3月30日
% %通过转移函数编码代码由用户指定
函数(编码)=凯撒(代码,转变)% %取两个值的代码和数量的变化
一个=双(代码);
x = 1;
z =长度(一个);
z = z + 1;
转变=转变- 95 *(修复(变化/ 95));
(1:结束)=代码(1:结束)+转变;
x ~ = z% %使用while循环提供计数
如果代码(1,x) < 32% %如果价值低于32
(1,x) = (1, x) - 32;
(1,x) = (1, x) +转变;
(1,x) = (1, x) + 127;
elseif(代码(x) > 32) & &(代码(x) < 127)% %如果值是32和127年之间
(1,x) = (1, x) +转变;
其他的% %值大于127
(1,x) = (1, x) - 127;
(1,x) = (1, x) +转变;
(1,x) = (1, x) + 32;
结束
x = x + 1;
结束
编码=字符(A);% %代码打印
结束

Washida神灵
Washida神灵 2020年3月31日
%使用国防部函数
函数txt =凯撒(txt,键)
txt =双(txt) +键;
第一次=双(' ');
去年=双(“~”);
%利用mod转变角色——注意到+ 1
%这是一个常见的错误,导致的变化
% 1
txt = char (mod (txt -首先,最后——第一个+ 1)+第一);
结束
%使用circshift函数
函数y = caesar2 (ch,键)
v =' ':“~”;
(~,loc) = ismember (ch, v);
v2 = circshift (v,关键);
y = v2 (loc);
结束
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年8月20日
首先假设txt = =,然后txt-first是0,和国防部(0)= 0。现在假设你有你提出的第一个,那么结果将会是第一个。显然,然而,最意义的计算让你第一个最后一个范围内,而不是之前的范围。

登录置评。


顾磊杰(Rajat蒙贾尔
顾磊杰(Rajat蒙贾尔 2020年4月13日
函数编码=凯撒(ctbe sa)
dd =双(ctbe)
如果dd > = 32 & dd < = 126
党卫军= dd + sa
党卫军(ss < 32) =快速眼动(党卫军(ss < 32) -32), 95) + 127
党卫军(ss > 126) =快速眼动((党卫军(ss > 126) -126), 95年)+ 31
编码= char (ss);
结束
结束
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年4月13日
dd =双(ctbe)
char ctbe将是一个向量,所以弟弟将矢量双。
如果dd > = 32 & dd < = 126
dd > = 32 & dd < = 126将会是一个逻辑向量。当你测试一种基本 如果 ,这被认为是真的 所有 项目正在测试的非零(真正的)。即使不在这个范围内的一个条目然后整个测试会被认为是错误的…和你没有 其他的 所以不会被分配条件 编码

登录置评。


Olel应接不暇
Olel应接不暇 2020年4月30日
编辑:Olel应接不暇 2020年4月30日
短代码逻辑索引的使用:
函数编码=凯撒(字符串,转变)
mod_str =字符串+转变;
i = 1:长度(mod_str)
mod_str (mod_str < 32) = mod_str (mod_str < 32) + 95;
mod_str (mod_str > 126) = mod_str (mod_str > 126) -95;
结束
编码= char (mod_str);

Omkar Kadam
Omkar Kadam 2020年5月9日
函数编码=凯撒(V, N)
ascii = char (32:126);
coded1 =(双(V) + N - 31);
发现= false;
2 = 1;
coded2 = [];
~(发现)
如果2 <长度(coded1) + 1
j = coded1 (ii);
2 = 2 + 1;
j < 32
j = + 126 - 31;
结束
j >长度(ascii)
j = j -长度(ascii);
结束
coded2 = abs ([coded2 j]);
其他的
发现= true;
打破;
结束
结束
编码= ascii (coded2);% 100%工作代码。

GAURAV拉吉
GAURAV拉吉 2020年5月10日
帮我在这。我写了这段代码,但我得到错误请告诉我有什么问题
函数y =凯撒(a, b)
q =双(a);
i = 1:长度(a)
d (i) =问(我)+ b;
如果d(我)> = 32;
e (i) =快速眼动(d (i), 126);
其他的
e (i) = 95 + d(我);
结束
如果e(我)> = 32;
y (i) = char (e (i));
elseife (i) = = 0;
y (i) = char (126);
其他的
e (i) = e(我)+ 31;
y (i) = char (e (i));
结束
结束
结束
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年5月11日
假设b是-200,q是(A) = 65的两倍。
d = 65 - 200 > d = -135
-135 > = 32是假的,所以
e = 95 + -135 = -40
-40 > = 32是错误的
-40 = = 0是错误的
e (i) = -40 + 31 = 9
y (i) =字符一样(9)字符(0)

登录置评。


阿拉法特打出行云流水
函数编码=凯撒(c, s)
n =国防部(年代,95);
sc = c + n;
l =长度(sc);
w = [];
i = 1: l
如果sc(我)> 126
p = 31 + (sc (i) -126);
elseifsc (i) < 32
p = 126 - abs (sc (i) -31);
其他的
p = sc(我);
结束
w = [w p];
结束
编码= char (w);
结束

Shandilya Kiran Bhatt
Shandilya Kiran Bhatt 2020年5月12日
编辑:沃尔特·罗伯森 2020年5月12日
下面的代码是一个漫长但使用while循环和如果你读它,它是一个简单的随机变化是正确的。
函数编码=凯撒(n),
一个=双(a);
z = + n;
i = 1:长度(a)
如果z (i) > 126
b = z (i) - 126;
如果b < = 95
z (i) = 31 + b;
其他的
b > 95
b = b - 95;
结束
z (i) = 31 + b;
结束
结束
如果z (i) < 32
c = 32 - z(我);
如果c < = 95
z (i) = 127 - c;
其他的
c > 95
c = c - 95;
结束
z (i) = 127 - c;
结束
结束
结束
encrypted_code = z;
编码= char (encrypted_code);
结束

SAMARTH MAHESHKUMAR GEMLAWALA
这段代码相当lenghty,但是我使用非常简单明白的逻辑
函数编码=凯撒(n),
=双(a)
避署=大小(一个)
i = 1:避署(1、2)
如果n > = 0
j = 1: n
(我)= (1)+ 1;
如果(我)> 126
(我)= 32;
结束
结束
结束
如果n < 0
j = 1: abs (n)
(我)=(我)1;
如果(我)< 32
(我)= 126;
结束
结束
结束
结束
编码=字符(a);
结束

朱利安Veran
朱利安Veran 2020年5月18日
函数编码=凯撒(M, n)
num =双(M);%将字符串转换成双
num2 = num;
N = N - 95 *修复(N / 95);
i = 1:长度(num);
如果num (i) + N < 32%如果ASCII值低于32
num2 (i) = 126 - (31 - num (i) - N);
elseifnum(我)+ N > 126%如果ASCII值超出126
num2 (i) = 32 + (num(我)+ N -127);
其他的
num2 (i) = num (i) + N;%如果ASCII值是正常的
结束
编码= char (num2);
结束
1评论
塔蒂阿娜Suaza万利拉
塔蒂阿娜Suaza万利拉 2020年12月19日
这就跟你问声好!抱歉为不便,但请您能解释为什么我们需要将字符串转换为双吗?

登录置评。


朱利安Veran
朱利安Veran 2020年5月18日
(使用国防部函数)
函数txt =凯撒(txt,键)
txt =双(txt) +键;
第一次=双(' ');
去年=双(“~”);
%利用mod转变角色——注意到+ 1
%这是一个常见的错误,导致的变化
% 1
txt = char (mod (txt -首先,最后——第一个+ 1)+第一);
结束
(使用保监会摘要函数)
函数y = caesar2 (ch,键)
v =' ':“~”;
(~,loc) = ismember (ch, v);
v2 = circshift (v,关键);
y = v2 (loc);
结束
2的评论
里克
里克 2020年8月15日
你读过的文档吗 国防部 函数?
医生国防部

登录置评。


蒂莫西·西蒙·托马斯
蒂莫西·西蒙·托马斯 2020年5月19日
% %凯撒SIPHER
%凯撒(消息、代码):encripted消息的消息
%表示ASCII代码转变
%包装总是启用
函数编码=凯撒(信息,代码)
(代码> 95)
代码=代码- 95;
结束
<(代码-95)
代码=代码+ 95;
结束
消息=消息+代码;%基本情况
消息(消息> 126)= char(双(-95年消息(消息> 126)))%过度
消息(消息< 32)= char(双(消息(消息< 32))+ 95)%脱靶
编码= char(消息);
结束

塔伊夫·艾哈迈德BIpul
塔伊夫·艾哈迈德BIpul 2020年5月21日
函数编码=凯撒(v, n)
x =双(v) + n;
q = x (x < 32);
p = x (x > 126);
q < 32;
x (x < 32) = x (x < 32) + 95;
q = x (x < 32);
结束
p > 126;
x (x > 126) = x (x > 126) -95;
p = x (x > 126);
结束
编码= char (x);
结束

yazan ziyad
yazan ziyad 2020年5月29日
在这里你去
函数(编码)=凯撒(转变)
m =双(a)
codedd = m +转变;
i = 1: abs(转变)
codedd (codedd < 32) = 127 - (32-codedd (codedd < 32));
codedd (codedd > 126) = 31 + (codedd (codedd > 126) -126)
编码= char (codedd)
结束
结束

SONU尼噶的
SONU尼噶的 2020年5月29日
函数编码=凯撒(char_vec shift_amount)
char_value = char_vec + shift_amount;
2 = 1:长度(char_value)
如果char_value > 126
编码= char (char_value - 95);
elseifchar_value < 32
编码= char (char_value + 95);
其他的
编码= char (char_value);
结束
结束
结束
我得到正确的输出但作业当我运行这个程序显示错误……我错了我没注意到,如果任何人都可以解释我然后请帮助我。

Soroush sa
Soroush sa 2020年5月30日
我是初学者,我写了这段代码。由expaining任何人能帮我,有什么问题吗?
函数编码=凯撒(字符串,转变)
double_A =双(string);
位置= double_A +转变;
2 = 1:长度(位置)
如果位置> 126
new_position = - 95位置;
elseif位置< 32
new_position =位置+ 95;
其他的
new_position =位置;
结束
结束
编码= char (new_position);
结束
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年5月30日
考虑会发生什么如果转变(比方说)450 ?

登录置评。


苏米特·库马尔·夏尔马
函数编码=凯撒(a, b)
x =双(a);
k =国防部(b, 95);
q = [];
j = 1:长度(x)
p = x (j) + k;
如果p < = 126 & & p > = 32
q = (qp);
elseifp > 126
r = p - 95;
q = [q r];
elseifp < 32
s = p + 95;
q = [q s];
结束
结束
编码= char (q);
结束

Vistasp Edulji
Vistasp Edulji 2020年6月22日
更短的可能的解决方案是使用逻辑数组。
函数编码=凯撒(str, n)
编码= str + n;
(和(编码> = 127)> 0 | |总和(编码< = 31)> 0)
编码(> = 127)编码= 31 +(编码(编码> = 127)-126);
编码(编码< = 31)= 127 - (32-coded(编码< = 31));
结束
编码= char(编码);
while循环条件简单地确保每一轮修正后没有溢出
重要的是你应该是一个字符串输出

Alankriti Mallick
Alankriti Mallick 2020年7月26日
函数编码=凯撒(v, s)
v = v + s;
v (v > 126) =快速眼动(v (v > 126), 95);
v (v < 32) = 127 -快速眼动(32 v (v < 32), 95);
编码= char (v);

辛格Ankit chauhan
辛格Ankit chauhan 2020年8月16日
编辑:沃尔特·罗伯森 2020年8月16日
函数云=凯撒(m, n)
和=双(m + n);
i = 1:长度(总和)
如果n > 0
如果((我)和< 127)
云(i) = char (sum (i));
elseif(我)> 126
商店= (i) -126;
国标= mod(商店,95);
如果停止了= = 0
s = 126;
云(i) = char (s + sto);
其他的
s = 32;
云(i) = char (s + sto-1);
结束
结束
其他的
如果n < 0
如果(和(我)> = 32)
云(i) = char (sum (i));
其他的
如果(i)和< 32
商店= 32-sum(我);
国标= mod(商店,95);
云(i) = char(126 -停+ 1);
结束
结束
结束
结束
结束
结束

胡安·塞巴斯蒂安Hincapie蒙特斯
函数(编码)=凯撒(v, sa)
秘密=双(v);
代码= 1(1、长度(v));
2 = 1:长度(秘密)
如果秘密(ii) + sa > 126%大于126
剩余=快速眼动(sa), 95);
如果余数+秘密(ii) > 126%如果双+其余大于32
代码(ii) = 31 +(余数(126 -秘密(ii)));
其他的
代码(ii) =剩余+秘密(ii);%如果双+其余不大于32
结束
elseif秘密(ii) + sa < 32%低于32
剩余= abs (rem (sa), 95));
如果秘密(ii)剩余< 32%如果双+其余低于32
剩余代码(2)= 127 -(-(-32年秘密(ii)));
其他的
代码(ii) =秘密(2)剩余;%如果双+其余部分不低于32
结束
其他的
代码(ii) = sa +秘密(ii);%都是正常的
结束
结束
编码= char(代码);
结束

马蒂斯著名Somp
马蒂斯著名Somp 2020年10月5日
简单和快速
函数编码=凯撒(txt, nr)
char_set = char (32): char (126);
char_set3 = [char_set char_set char_set];
编码= char_set3 (txt + 64 + nr-floor (nr / 95) * 95);
结束
4评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年10月6日
加法和减法和除法和地板和连接数组索引和char和结肠运营商,都是现成的函数。

登录置评。


Dhinesh库马尔
Dhinesh库马尔 2020年10月11日
函数txt =凯撒(txt,键)
txt =双(txt) +键;
第一次=双(' ');
去年=双(“~”);
%利用mod转变角色——注意到+ 1
%这是一个常见的错误,导致的变化
% 1
txt = char (mod (txt -首先,最后——第一个+ 1)+第一);
结束
这还有助于解决这个问题。试一试

欣怡蔡
欣怡蔡 2021年3月15日
谁能帮助解释ismember函数提供解决方案在这个工作吗?为什么它返回双而不是字符串?提前谢谢。
2的评论
欣怡蔡
欣怡蔡 2021年3月15日
谢谢你!我明白了

登录置评。


Raghav Arvind Thirumurugan
Raghav Arvind Thirumurugan 2021年5月29日
编辑:沃尔特·罗伯森 2022年3月21日
函数编码=凯撒(c, n)
x =双(c);
l =长度(x);
b = 1: l
x (b) = x (b) + n;
结束
一个= 1:l
x(一)< 32 | | x (a) > 126
如果x(一)< 32
(一)= x (a) + 95;
其他的x (a) > 126
(一)= x (a) -95;
结束
结束
结束
编码= char (x);
结束

塞尔曼Baysal
塞尔曼Baysal 2022年1月2日
我同意 @Wilver桑切斯 的解决方案。我强烈建议避免使用“循环”(这不是错误的方式,但它有时会增加处理时间;也许不是这段代码)。
%,而不是使用
2 = 1:长度(unicodeMessage)
如果秘密(ii) < 32
结束
结束
%更复杂的方式
秘密(秘密< 32)=
然后,我的解决方案是:
函数编码=凯撒(M s)
%为其他类型的代码,最高和最低的值可以改变。
最高= 126;%马克斯ASCII代码
最低= 32;%分钟ASCII代码
代码=最高,最低+ 1;%的数量在ASCII码
n =修复(s /(代码));%多少次代码将被包装
res = s -编码* n;%多少的代码将转移(res:剩余)
unicodeMessage =双(M);
秘密= unicodeMessage + res;
秘密(秘密< 32)= 126 -(31 -秘密(秘密< 32));
秘密的秘密>(126)= 32 +(秘密(秘密> 126)- 127);
编码= char(秘密);
结束

Lokeswar Reddy
Lokeswar Reddy 2022年7月10日
函数=凯撒(m, n) m =双(m) + n;m =国防部(m, 95);m (> 126) = m (> 126) -126 + 31;米(m < 32) = m (m < 32) -32 + 127;= char (m);

默罕默德
默罕默德 2022年8月1日
%帮助需要
函数编码=凯撒(X, Y)
X = char (X);
代码= (X) + Y两倍;
如果代码> = 126
代码=代码- 95;
编码=流(' % s '、代码);
elseif代码< = 32
代码=代码+ 95;
编码=流(' % s '、代码);
其他的
代码= (X) + Y两倍;
编码=流(' % s '、代码);
结束
5个评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年8月1日
阅读的文档字符()

登录置评。


齐亚•拉赫曼
齐亚•拉赫曼 2022年8月28日
嗨,伙计们,
我写这段代码中,这是工作正常的问题。
需要进一步改进如果有老年人在编码和MATLAB我很菜鸟。几乎花了90分钟来解决。
函数编码=凯撒(a, b)
%移除';'所以你可以看到它是如何工作的输出
c =双(a)%将给定的字符(串)转换成双(数字)
d = c + b%添加smount转向加密
l =长度(d)%测量长度作为我们需要遍历所有元素,以检查是否它在于限制(32:126)
e = 1: l%应用循环检查每个元素如果它在于限制
d (e) > 126%使用时如果我们用“如果”声明它将只执行一次,但是我们需要执行直到价值的极限
d (e) = d -95 (e)%如果数量大于126环绕通过添加(126 - 32 + 1 = 95)我们使用+ 1作为下一个号码不一样的数字
结束
d (e) < 32%使用时如果我们使用if语句只会执行一次,但我们需要执行直到价值的极限
d (e) = d + 95 (e)%如果数量小于32所以环绕减去(126 - 32 + 1 = 95)我们使用+ 1作为下一个号码不一样的数字
结束
结束
编码= char (d)根据极限% d现在已更新
% =字符编码(双(a) + b)
结束

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!