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 comentarios

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

Iniciar sesión para comentar.

Respuestas (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 comentarios

Walter Roberson
Walter Roberson el 5 de Feb. de 2020
JESUS DAVID ARIZA ROYETH: we discourage people from providing complete solutions for homework assignments.
Stephen23
Stephen23 el 5 de Feb. de 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 el 6 de Feb. de 2020
So it is, compete with the user of couner as a variable at one point.

Iniciar sesión para comentar.

Categorías

Más información sobre Mathematics en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 5 de Feb. de 2020

Comentada:

el 7 de Feb. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by