2013-11-02 2 views
0

사용자 입력을 정수로 입력하십시오 (예 : (45697)). 처음 두 자리를 배열, 벡터 또는 기타 (4 5 6 9 7)에 저장하여 사용할 수 있습니다. 처음 두 값인 (4 5)을 확인하고 그에 대한 계산을 수행하는 함수 호출.정수의 십진수 표현으로 숫자 분리하기

문제점 : 처음 두 값을 복구하는 방법을 저장하는 방법을 모르겠습니다.

간단한 함수 호출이 있습니까? 아니면 입력을 먼저 배열에 저장 한 다음 처음 두 값을 추출해야합니까? 그렇다면 어떻게해야합니까?

답변

1

당신은 문자열로/변환을 사용하여 쉽게 수행 할 수 있습니다

>> x = 45697; % or whatever positive value 
>> str = num2str(x); 
>> y = [str2num(str(1)) str2num(str(2))] 

y = 

    4  5 

이 (가 음성 인 경우 첫 번째 문자가 숫자되지 않을 것) 수 x가 긍정적 인 것으로 가정합니다. 귀하의 의견에 따르면 그것은 전기 저항을 나타냅니다 이후의 경우 것 같습니다. 여기가 문자열 기반의 접근 방식 아무 문제가 없지만,

+0

더 많은 도움을 얻으려면 코드에 코드를 게시하십시오. –

+0

작동하지만 y = x (1 : 2)가 작동해야하지만 실행 결과에 오류가 있음을 알 수 있습니다. "인덱스 매트릭스 치수를 초과합니다. " userin = str2double (inputdlg ('저항의 저항 (옴)을 입력하십시오.', 'Resistance')); (INPUT, THEN, 사용자 요청) userin = round (userin); x = [userin]; y = x (1 : 2); 그러나 "y"함수는 "Index가 행렬 dimesnions를 초과합니다"와 같은 오류 메시지를 나타냅니다. –

+0

나는 오해했다. 업데이트 된 답변보기 –

0

은 모든 숫자를 얻기에 수학 솔루션입니다 :

>> x = 45697 
x = 

     45697 

>> numDigits = floor(log10(x)+1) 
numDigits = 

    5 

>> tens = 10.^(1:numDigits); 
>> digitArray = fliplr(floor(mod(x,tens)./(tens/10))) 
digitArray = 

    4  5  6  9  7 

이 방법의 핵심은 높은 자리를 칩에 mod을 사용하는 것입니다 한 번에 하나씩 새로운 첫 번째 숫자를 1 자리로 이동하고 마지막으로 그 자리에서 정수 값을 얻기 위해 자릅니다.

OP의 경우 필요한 값은 digitArray(1:2)입니다.

0

개별 숫자에 관심이 있으니 str2num을 호출 할 필요가 없습니다. 한 가지 방법은 x_str = num2str(x);처럼 충분합니다. '0'을 뺍니다. y = x_str(1:2)-'0';.

관련 문제