MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   MATLAB:如果循环内的Statement不执行,也不会打印到屏幕上 (https://www.labfans.com/bbs/showthread.php?t=26458)

poster 2019-12-14 20:13

MATLAB:如果循环内的Statement不执行,也不会打印到屏幕上
 
因此,我们正在尝试执行以下代码。两个if语句正在执行,但是内部if语句无法执行(我们通过不抑制输出来验证了这一点)。有什么原因吗?还是我们无法达到这种状态?

[B]技术指标[/B]

输入如下:v是int值的向量,c是整数。 c必须小于或等于v内的值之一

我们正在尝试使用此算法解决的问题如下:
[INDENT]在给定收银机的情况下,如何进行更改以使尽可能少的硬币退还给客户?

例如:输入:v = [1、10、25、50],c =40。输出O = [5、1、1、0]

[/INDENT]我们只是在寻找一种更好的解决方案,而更多是因为那部分代码没有执行。

function O = changeGreedy(v,c) O = zeros(size(v,1), size(v,2)); for v_item = 1:size(v,2) %locate largest term l_v_item = 1 for temp = 2:size(v,2) if v(l_v_item) < v(temp) l_v_item = temp end end %"Items inside if statement are not executing" if (c > v(l_v_item)) v(l_v_item) = -1 %"Not executing" else O(l_v_item) = idivide(c, v(l_v_item)) %"Not executing" c = mod(c, v(l_v_item)) %"Not executing" end end

[B]回答:[/B]

如果c或v不是整数,即class(c)计算为double ,则出现以下错误消息

??? Error using ==> idivide>idivide_check at 66 At least one argument must belong to an integer class. Error in ==> idivide at 42 idivide_check(a,b); 并且程序停止执行。因此,第二条语句的内部永远不会执行。相反,如果c是一个整数,例如uint8类,则一切执行正常。

另外:您实际上想用此代码实现什么?



[url=https://stackoverflow.com/questions/5163572]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 05:01

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.