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 Comments

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!!

Sign in to comment.

Answers (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 Comments

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.

Sign in to comment.

Categories

Find more on Mathematics in Help Center and File Exchange

Asked:

on 5 Feb 2020

Commented:

on 7 Feb 2020

Community Treasure Hunt

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

Start Hunting!