help solving string question
이전 댓글 표시
Durring my last semester, we were given a bonus quiz to write a function the received and numberical input and produced the revise as an output.
example a=123
b=321
we were not allowed to use any string variable or function. Any ideas now that the semester is over Id like to know what you think.
My original thought was to divide the input but the got harder with larger number as the function should receive any number
채택된 답변
추가 답변 (4개)
Carlos
2014년 5월 7일
a=[1 2 3 4 5];
>> b=zeros(1,length(a));
count=1;
l=length(a);
while(count<=l)
b(count)=a(l+1-count);
count=count+1;
end
Wesley Ooms
2014년 5월 7일
totally not optimized, but this will do the trick:
clear a b
a=32385
i=1
while floor(a/10)
b(i)=a-floor(a/10)*10
i=i+1
a =floor(a/10)
end
b(i)=a
d=1
e=0
for c=0:numel(b)-1
e=e+d*b(end-c)
d=d*10
end
댓글 수: 5
Wesley Ooms
2014년 5월 7일
ok, i see i used 2 functions (floor and numel) you can get around the numel by placing the part of the for loop in the while loop, but i don't kno how to get around floor. I think Carlos answer is not what your teacher meant.
Wesley Ooms
2014년 5월 7일
you can get around floor by using this:
clear a b
a=132385
i=1
c=0
d=1
e=0
while a
c=-1:(a/10)
a1=c(end)
b(i)=a-a1*10
a=a1
i=i+1
end
for c=0:i-2
e=e+d*b(end-c)
c=c+1
d=d*10;
end
Joseph Pauwels
2014년 5월 7일
Wesley Ooms
2014년 5월 8일
편집: Wesley Ooms
2014년 5월 8일
that is because you
do c=-1:(a/1); instead of c=-1:(a/10);
the following must work: (but i admit it is not optimized for speed)
function b=swapnumber(a)
b = 0;
while a
c = -1:a/10;
c = c(end);
b = (b+a-c*10)*10;
a = c;
end
b = b/10;
Wesley Ooms
2014년 5월 8일
the following code also works but is faster for large numbers since it predetermines the size of the number
function b=swapnumber(a)
b=0;d=0;while a>1;a=.1*a;d=d+1;end
for i=0:d;c=0:a*10;c=c(end);b=b+c*10^i;a=a*10-c;end
Sagar Damle
2014년 5월 7일
편집: Sagar Damle
2014년 5월 8일
I think the code which I am going to put here is the standard code to reverse a number.(This code is used in C language,of course,according to its own syntax!)Also,it is easy to understand.Remember this code,I think it is very helpful!
a = 126986;
b = a; % Save value of "a" in new variable "b".
reverse = 0;
while b > 0 % OR while b ~= 0 (Both 'while' statements are same.)
r = rem(b,10);
reverse = reverse * 10 + r;
b = floor(b/10);
end
a
reverse
Joshua Amuga
2016년 11월 2일
0 개 추천
IVP :=ode({y''(x)+4*y'(x)+3*y,y(0)=3,y'(0)=4},y(x)); Undefined function or variable 'IVP'. this is what i got
카테고리
도움말 센터 및 File Exchange에서 Simulink Environment Customization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!