I dont know where i was wrong

1 回表示 (過去 30 日間)
Nguyen Huy
Nguyen Huy 2021 年 5 月 11 日
コメント済み: Nguyen Huy 2021 年 5 月 11 日
%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 日
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 日
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 日
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 日
>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.

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by