MATLAB project to decrypt messages

  • Context: MATLAB 
  • Thread starter Thread starter G'mo
  • Start date Start date
  • Tags Tags
    Matlab Project
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 3K views
G'mo
Messages
3
Reaction score
0
Hi everyone. I have a MATLAB project to decrypt messages using only uppercase characters and spaces(i.e no punctuation). The problem is that my program is working but does not print spaces, instead of a space it prints 7. If anyone can help, I'll be very greatful.Here is my program:

a1 = input('Please enter a sentence: ','s');
p = upper(a1); % Change the text to uppercase
double(p); % String to ASCII codes

for i = 1:numel(p) % Iterate as long as there are characters
% in the string
if (p(i) ~= 32) & (p(i) > 67)
p(i) = p(i) - 3;
elseif (p(i) <= 67)
p(i) = p(i) + 23;
else
* (p(i) == 32)
end
end
disp(p)

* This part seems to be useless.
If the user inputs: khoor pb iulhqg
output: HELLO7MY7FRIEND
 
Physics news on Phys.org
Just replace any occurrence of '7' in p with ' ' before disp(p):

for i=1:numel(p)
if(p(i)=='7')
p(i)=' ';
end
 
Your problem appears to be this part:

Code:
elseif (p(i) <= 67)
  p(i) = p(i) + 23;

...it converts 32 (' ') into 32 + 23 = 55 ('7').

If you don't want to convert spaces into anything then use an outermost IF, something like this:

Code:
if (p(i) ~= 32)
  if (p(i) > 67)
    p(i) = p(i) - 3;
  else
    p(i) = p(i) + 23;
  end
end

(I'm unsure of the syntax but you should get the idea.)