Why the function doesnt work with('1234')??!

function coded=caesar(str,shift) a=double(str); counter=1; coded=zeros(1,length(str)); for i=[1:length(str)] if a(1,couner)+shift>126||a(1,counter)+shift<32%j while a(1,couner)+shift>126 coded(1,counter)=a(1,counter)+shift-95; counter=counter+1; end while a(1,counter)+shift<32 coded(1,counter)=a(1,counter)+shift+95; counter=counter+1; end else coded(1,counter)=a(1,counter)+shift; counter=counter+1; end end coded=char(coded) end

7 个评论

Are you failing to pass in the shift as well?
I tried 'ABCD' with shift=3 And it worked but it didn't work with '1234'and shift=96
Please post your code in readable form. Use "smart indent" in the MATLAB editor first. Then here, click on the '>' button in the 'CODE' section of the editing toolbar, and copy and paste your code.
function coded=caesar(str,shift)
a=double(str);
counter=1;
coded=zeros(1,length(str));
for i=[1:length(str)]
if a(1,couner)+shift>126||a(1,counter)+shift<32
while a(1,couner)+shift>126
coded(1,counter)=a(1,counter)+shift-95;
counter=counter+1;
end
while a(1,counter)+shift<32
coded(1,counter)=a(1,counter)+shift+95;
counter=counter+1;
end
else
coded(1,counter)=a(1,counter)+shift;
counter=counter+1;
end
end
coded=char(coded)
end
Have a closer look at your lines 6 and 7: you use a variable named couner
Wow how stupid of me!! Thank you very much
I tried it now but it seems like it's not working yet,I got this message...Index in position 2 exceeds array bounds (must not exceed 4).
Error in caesar (line 7) while a(1,counter)+shift>126 Please help!!

请先登录,再进行评论。

回答(1 个)

solution:
save it :
function coded=caesar(str,shift)
a=double(str);
counter=1; coded=zeros(1,length(str));
for i=[1:length(str)]
if a(1,counter)+shift>126||a(1,counter)+shift<32%j
while a(1,couner)+shift>126
coded(1,counter)=a(1,counter)+shift-95;
counter=counter+1;
end
while a(1,counter)+shift<32
coded(1,counter)=a(1,counter)+shift+95;
counter=counter+1;
end
else
coded(1,counter)=a(1,counter)+shift;
counter=counter+1;
end
end
coded=char(coded);
end
and type it in the Command Window :
caesar('1234',2)

4 个评论

JESUS DAVID ARIZA ROYETH: we discourage people from providing complete solutions for homework assignments.
Simpler than lots of loops: use mod.
Walter Roberson sorry but it is not my solution is the same function provided by Marco Nashaat
So it is, compete with the user of couner as a variable at one point.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Mathematics 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by