2014-10-05 2 views
0

1에서 25 사이의 숫자를 입력하라는 과제가 있습니다. 숫자의 요인을 수행 한 다음 완료되었는지 묻습니다. 그렇지 않으면 루프를 다시 시작하고 새로운 요인을 적용합니다.어떻게 이것을 진술하는 동안 하나의 큰 것으로 만들 수 있습니까?

저는 코드에 대한 작업을 해왔고 마지막 단계까지 작동 시켰습니다. 1과 25 사이의 숫자에 대해서는 while 루프를 만들었지 만, factoral에 대해서는 for 루프를 만들었습니다. 두 가지를 결합하려고 시도했을 때 작동하지 않고 오류가 발생했습니다.

clear; 
clc; 
alldone = 'n'; 
fact = 1; 
num = input('Input a number between 1 and 25: '); 
    while (num < 1)||(num > 25); 
     num = input('\n That is not between 1 and 25, please try again: '); 
    for i=num:-1:2; 
    fact = fact * i; 
    fprintf('The factoral of %g is %g',num,fact); 
    end 
    alldone = input('Are you done? Type Y for yes: ', 's') 
end 

이것은 내가 한 일이며 for 루프를 잠시 동안으로 전환하는 방법을 모르겠습니다. 아는 사람 있습니까? 고맙습니다!

답변

1

이 방법은 문제를 해결하는 가장 효율적인 방법은 아니지만 최대한 코드에 가깝게하려고 노력했습니다. 이 이후

clear; 
clc; 
alldone = 'n'; 

while alldone ~= 'Y' 
    fact = 1; 
    num = input('Input a number between 1 and 25: '); 

    while (num < 1)||(num > 25); 
     num = input('\n That is not between 1 and 25, please try again: '); 
    end 

    for i=num:-1:2; 
     fact = fact * i; 
    end 

    fprintf('The factoral of %g is %g. \n', num, fact); 
    alldone = input('Are you done? Type Y for yes: ', 's'); 
end 

당신을위한 운동으로 떠나, 당신의 코드에 나의 작은 편집이 무엇을 설명하지 않습니다 숙제의 일종입니다 :) 물론 당신은 당신이 불분명 찾아야한다, 요청할 수 있습니다. 행운을 빕니다!

약간의 제안 : 적절한 들여 쓰기를 사용하십시오!

영업 응답하기 위해 작은 추 출력의 포맷과 formatting operatorsconversion characters를 사용하여 제어 될 수있다.

+2

내 유일한 의견은 내가 코드를 시험해 볼 때, factoral로서 1.124e + 21을 얻었습니다. 그 이유는 % g을 사용했기 때문입니까? 대신 % d을 사용해야합니까? 편집 : 나는 당신을 감사했다! 알았다! – user2237848

+0

다행 이군요, 어쨌든 답변을 업데이트했습니다 :) 축하합니다! – lucam

+1

@ user2237848 당신이 모른다는 경우 :'num'의 계승은'계승 (num)'또는'감마 (num + 1)'로 직접 계산 될 수 있습니다. –

관련 문제