Write a function called one_per_n that returns the smallest positive integer n for which the sum 1 + 1/2 + 1/3 + … + 1/n , is greater than or equal to x where x is the input argument. Limit the maximum number n of terms in the sum to 10,000 .
이전 댓글 표시
function out=one_per_n(x)
if x>10000
out=-1;
%fprintf('-1\n');
else
total=0;
for n=1:x;
total=(total+(1/n));
end
if total>=x
out=total;
%fprintf('%d\n',total);
end
end
댓글 수: 1
Adam
2015년 5월 22일
What exactly is your question? Just posting some code isn't very useful even if you do also paste a homework question into the title.
채택된 답변
추가 답변 (4개)
function d = holiday(month,day)
if month == 1 && day == 1
d = true;
elseif month == 7 && day == 4
d = true;
elseif month == 12 && day == 25
d = true;
elseif month == 12 && day == 31
d = true;
else
d = false;
end
This is the code that is based on what you wrote. Now it works!
댓글 수: 1
Walter Roberson
2017년 3월 18일
Note this refers to the additional question https://www.mathworks.com/matlabcentral/answers/218032-write-a-function-called-one_per_n-that-returns-the-smallest-positive-integer-n-for-which-the-sum-1#answer_244928 not to the original question.
Jean Araujo
2015년 6월 1일
function out = one_per_n(x)
total=0;
n = 1;
while total < x
total = (total+1/n);
n = n+1;
end
if n-1 > 10000
out = -1;
else
out = (n-1);
end
댓글 수: 2
Christos Vyzantios
2015년 6월 1일
Yes it is accepted answer. I had tried as out = n-1 only but it didn'nt work...THANX!!!
Walter Roberson
2015년 6월 2일
Returning -1 was definitely not in the problem statement from the title of this Question!
Nava Subedi
2016년 11월 28일
편집: Walter Roberson
2016년 11월 28일
I tried to solve the question.
Write a function called holiday that takes two input arguments called month and day; both are scalar integers representing a month (1-12) and a day (1-31). The function returns a logical true if the specified date is a holiday; if not, it returns false. For the purposes of this exercise, the following dates are considered holidays: January 1st, July 4th, December 25th, and December 31st.
I wrote:
function d = holiday(month, day)
if (month >= 1 && month <=12) && (day >= 1 && day <= 31)
if month == 1 && day == 1
d = 1
fprintf('%d is true! It is a holoday. \n', d);
end
if month == 7 && day == 4
d = 1
fprintf('%d is true! It is a holoday. \n', d);
end
if month == 12 && day == 25
d = 1
fprintf('%d is true! It is a holoday. \n', d);
end
if month == 12 && day == 31
d = 1
fprintf('%d is true! It is a holoday. \n', d);
end
else
d = 0
fprintf('%d is false! It is not a holoday. \n', d);
return
end
end
But did not work. Where did I do mistake??
댓글 수: 1
Walter Roberson
2016년 11월 28일
The assignment does not request any printing.
The assignment requires logical true and logical false as outputs, not double precision 1 and double precision 0. Logical true is represented as true and logical false is represented as false
Jorge Briceño
2018년 1월 29일
Hello Nava,
Maybe you could also try to simplify your code. Here is my example:
function out = holiday (m, d)
if (m==1 && d==1) || (m==7 && d==4)|| (m==12 && d==25)...
|| (m==12 && d==31)
out=true;
else
out=false;
end
return;
end
카테고리
도움말 센터 및 File Exchange에서 Programming에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!