Enter a string and print it backwards

Hi.
I'm having a problem with how do I print the string backwards.
Here is my code.
string = input("Please enter a phase: ",'s');
converted_string = []; % Empty phase
for i = length(string):1 % from end to begin
converted_string = [converted_string,string(i)];
end
fprintf("%s converts to %s",string,converted_string);
Expected result: Please enter a phase: There are 18 apples
'There are 18 apples' converts to 'selppa 81 era erehT'
My code result: Please enter a phase: There are 18 apples
There are 18 apples converts to
The first question is that how to add symbol ' on the string?
The second question is that why the result did not have reverse string here?
Thank you all.

3 Kommentare

Stephen23
Stephen23 am 5 Jul. 2022
Bearbeitet: Stephen23 am 5 Jul. 2022
Q1: single quotes must be escaped by duplicating them: 'this is escaped ''.'
Q2: Consider the order of these: [converted_string,string(i)]; Using your example: after the 1st iteration, converted_string consists of 'T', after the 2nd iteration it consists of 'Th'... Think about that concatenation.
str = 'MATLAB' ;
s = [] ;
n = length(str) ;
for i = n:-1:1
s = [s str(i)];
end
s
s = 'BALTAM'
Shuoze Xu
Shuoze Xu am 5 Jul. 2022
For q1, is that means i need to add ' on the fprintf like that '%s'?

Melden Sie sich an, um zu kommentieren.

Antworten (1)

KSSV
KSSV am 5 Jul. 2022

0 Stimmen

str = 'MATLAB' ;
% Option 1
flip(str)
ans = 'BALTAM'
% option 2
str(end:-1:1)
ans = 'BALTAM'
For printing, you can use fprintf
fprintf('%s\n',str)
MATLAB

2 Kommentare

Shuoze Xu
Shuoze Xu am 5 Jul. 2022
Bearbeitet: Shuoze Xu am 5 Jul. 2022
If i want to use for loop, should i do like that?
string = input("Please enter a phase: ",'s');
old_char = char(string);
new_char = [];
for i = 1:length(old_char)
new_char = [new_char,old_char(end-i+1)];
end
fprintf("'%s' converts to '%s'",string,new_char);
This is something I learned from a post where I was confused about why char() was needed.
You may skip that conversion.
old_char = input("Please enter a phase: ",'s');
new_char = [];
for i = 1:length(old_char)
new_char = [new_char,old_char(end-i+1)];
end
fprintf("'%s' converts to '%s'\n",old_char,new_char);

Melden Sie sich an, um zu kommentieren.

Produkte

Version

R2021b

Tags

Gefragt:

am 5 Jul. 2022

Kommentiert:

am 5 Jul. 2022

Community Treasure Hunt

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

Start Hunting!

Translated by