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 commentaires

Walter Roberson
Walter Roberson le 5 Fév 2020
Are you failing to pass in the shift as well?
Marco Nashaat
Marco Nashaat le 5 Fév 2020
I tried 'ABCD' with shift=3 And it worked but it didn't work with '1234'and shift=96
Walter Roberson
Walter Roberson le 5 Fév 2020
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.
Marco Nashaat
Marco Nashaat le 6 Fév 2020
Modifié(e) : Walter Roberson le 6 Fév 2020
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
Walter Roberson
Walter Roberson le 6 Fév 2020
Have a closer look at your lines 6 and 7: you use a variable named couner
Marco Nashaat
Marco Nashaat le 7 Fév 2020
Wow how stupid of me!! Thank you very much
Marco Nashaat
Marco Nashaat le 7 Fév 2020
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!!

Connectez-vous pour commenter.

Réponses (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 commentaires

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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Mathematics dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by