%I am doing project euler 8,this is my code
function y = euler008(x)
x=num2str(x)
d=[]
for i=1:length(x)
number = str2num(x(i:i+4))
digits = num2str(number) - '0'
d=[d prod(digits)]
end
y=max(d)
end
%i dont know why this code is wrong

 採用された回答

Nguyen Huy
Nguyen Huy 2021 年 5 月 11 日
編集済み: Nguyen Huy 2021 年 5 月 11 日

0 投票

i have edited all these errors,but it get %Index exceeds matrix dimensions error

2 件のコメント

Atsushi Ueno
Atsushi Ueno 2021 年 5 月 11 日
one more thing, indexing shall be within 1 to length(x), so length(x)+4 exceeds the matrix dimensions.
for i=1:length(x)-4
Nguyen Huy
Nguyen Huy 2021 年 5 月 11 日
oh,i forgot that,thanks u all

サインインしてコメントする。

その他の回答 (3 件)

Atsushi Ueno
Atsushi Ueno 2021 年 5 月 11 日

1 投票

There is a variable 'a' in caller workspase and a function euler008(a) is called, but argument in the function euler008(x) is 'x'.
number = str2num(a(i:i+4)
shall be changed to
number = str2num(x(i:i+4))
Also, you need adding missing parenthesis as the first answer.
Atsushi Ueno
Atsushi Ueno 2021 年 5 月 11 日

1 投票

You are trying to access to variable x's index from 1 (min) to length(x)+4 (max).
for i=1:length(x)
number = str2num(x(i:i+4))
The maximum index number of variable x has been exceeded. If you modify the code to the following, it will work correctly.
for i=1:length(x)-4
number = str2num(x(i:i+4))
Atsushi Ueno
Atsushi Ueno 2021 年 5 月 11 日

0 投票

>The large number will be given as a string, 1xn characters.
So, x=num2str(x) on 2nd line won't work correctly. It should be deleted.

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

タグ

質問済み:

2021 年 5 月 11 日

コメント済み:

2021 年 5 月 11 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by