2016-09-23 1 views
-5

어떤 사람은 나를 MATLAB에서이 문제를 해결하는 데 도움이 바랍니다 수 :Matlab 함수 huge_add?

쓰기 기능 소수점 표기법을 사용하여 문자열로 지정된 길이의 두 개의 양의 정수를 추가 huge_add을했다. 단일 출력 인수는 결과이며 문자열이기도합니다. 입력과 출력은 숫자 만 포함해야합니다. 쉼표, 공백 또는 다른 문자는 허용되지 않습니다. 입력에 의해 이러한 가정 중 하나라도 위반되면 함수는 숫자 -1을 반환합니다.

내가 쓴 코드는 다음과 같습니다

function[c]=huge_add(a1,b1) 
aaa=length(a1); 
bbb=length(b1); 
c=0; 
if isnumeric(a1) ||isnumeric(b1) 
    c=-1; 
else if ~isnumeric(a1) ||~isnumeric(b1) 
     for i=1:aaa 
      if a1(i)~='1'&& a1(i)~='2'&&a1(i)~='3'&&a1(i)~='4'&&a1(i)~='5'&&a1(i)~='6'&&a1(i)~='7'&&a1(i)~='8'&&a1(i)~='9'&&a1(i)~='0' 
       c=-1; 
      end 
     end 
     for i=1:bbb 
      if b1(i)~='1'&&b1(i)~='2'&&b1(i)~='3'&&b1(i)~='4'&&b1(i)~='5'&&b1(i)~='6'&&b1(i)~='7'&&b1(i)~='8'&&b1(i)~='9'&&b1(i)~='0' 
       c=-1; 
      end 
     end 
    end 
a=a1; 
b=b1; 
aa=length(a); 
bb=length(b); 
    as=(str2num(a)); 
    bs=(str2num(b)); 
    af=fliplr(a); 
    bf=fliplr(b); 
    if c~=-1 
     if aa<bb 
      for ii=1:aa 
       x(ii)=af(ii); 
       y(ii)=bf(ii); 
       z(ii)=str2num(x(ii))+str2num(y(ii)); 
       zz{ii}=num2str(z(ii)); 
      end 
    cl=fliplr(z); 
    rem=(b(1):b(bb-aa)); 
    ca=[rem,cl(1):cl(end)]; 
    else if aa>bb 
      for ii=1:bb 
       x(ii)=af(ii); 
       y(ii)=bf(ii); 
       z(ii)=str2num(x(ii))+str2num(y(ii)); 
       zz(ii)=num2str(z(ii)) 
      end 
    cl=fliplr(z); 
    rem=(a(1):a(aa-bb)); 
    ca=[rem,cl(1):cl(end)]; 
     else 
      for ii=1:aa 
       x(ii)=af(ii); 
       y(ii)=bf(ii); 
       z(ii)=str2num(x(ii))+str2num(y(ii)); 
       zz(ii)=num2str(z(ii)); 
      end 
     cl=fliplr(z); 
     rem=[]; 
     ca=[rem,cl(1):cl(end)]; 
     end 
     end 
     d=str2num([rem,fliplr(zz)]) 
     %d=([rem,fliplr(zz)]) 
     c=num2str(d); 
     end 
end 
end 

그리고 내가 오류가

Feedback: Your function performed correctly for argument(s) '1', '1' 
Feedback: Your function performed correctly for argument(s) '10', '22' 
Feedback: Your function performed correctly for argument(s) '1234', '1' 
Feedback: Your function performed correctly for argument(s) '0', '0' 
Feedback: Your function performed correctly for argument(s) '12', '-2' 
Feedback: Your function performed correctly for argument(s) '99.99', '0' 
Feedback: Your function performed correctly for argument(s) '1,234', '1' 
Feedback: Your function performed correctly for argument(s) 12, 34 
Feedback: Your function performed correctly for argument(s) [1 2 3], '1' 
Feedback: Your function performed correctly for argument(s) '2', [50 51 52] 
Feedback: Your program made an error for argument(s) '612455618766556780', '6285757' 

Your solution is _not_ correct. 

이 도와주세요입니다 .....

+0

왜 이것이 65 줄의 루프 여야하는지 이해할 수 없습니다. ['+'] (http://www.mathworks.com/help/matlab/ref/plus.html) 및 ['sprintf'] (http://www.mathworks.com/help/matlab)를 사용할 수 있습니까? /ref/sprintf.html)? – excaza

+0

친절한 도움에 감사드립니다. 나는 코드에 그들을 통합하는 방법을 정말로 모른다. 프로그래밍에 익숙하지 않고 더 나은 것을 더 잘 이해하려고 노력합니다. 제발 그것에 대해 안내해 줄 수 있어요 – ishika

+0

예문으로 가득 찬 문서를 링크했습니다. – excaza

답변

-2

이 기능은 작동하지 않습니다 a1 ='abcd', b1 = 'ABCD'의 경우 c+C>=10 (또는 다른 항목) 을 올바르게 운반해야합니다. z(ii)=str2num(x(ii))+str2num(y(ii)); 줄을 확인한 후 z(ii)>10이 있는지 확인한 다음 1을 전달해야합니다.

그런데 이것이 마지막 예제 만 작동하지 않는 이유입니다.

+0

그러면 실제로 어떻게 문제를 해결할 수 있습니까? – rayryeng

+0

안녕하세요, Idekel, 코드를 약간 수정하거나 부분을 수정 해 주셔서 감사합니다 ... 전 프로그래밍에 익숙하지 않으므로 가끔씩 종류를 따르는 것이 어려워집니다 ... !! 친절한 도움을 주셔서 감사합니다 .. !! – ishika

+0

나는 이렇게하려고했다 : – ishika