I dont know where i was wrong
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Nguyen Huy
am 11 Mai 2021
Kommentiert: Nguyen Huy
am 11 Mai 2021
%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
0 Kommentare
Akzeptierte Antwort
Nguyen Huy
am 11 Mai 2021
Bearbeitet: Nguyen Huy
am 11 Mai 2021
2 Kommentare
Atsushi Ueno
am 11 Mai 2021
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
Weitere Antworten (3)
Atsushi Ueno
am 11 Mai 2021
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.
0 Kommentare
Atsushi Ueno
am 11 Mai 2021
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))
0 Kommentare
Atsushi Ueno
am 11 Mai 2021
>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.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!