Arrays Matlab-用户输入到数组中
我需要编写一个程序,返回用户输入的最大数字。用户可以输入任意多个>=0的数字,当他们输入-1时,程序将停止并返回最大的数字。我真的很难做到这一点。到目前为止,我有:Arrays Matlab-用户输入到数组中,arrays,matlab,Arrays,Matlab,我需要编写一个程序,返回用户输入的最大数字。用户可以输入任意多个>=0的数字,当他们输入-1时,程序将停止并返回最大的数字。我真的很难做到这一点。到目前为止,我有: validInput = false; while (~validInput) fprintf('Enter a number >= 0 or a negative to quit.\n'); num = input('Enter a number or -1 to quit: '); if(num == -1)
validInput = false;
while (~validInput)
fprintf('Enter a number >= 0 or a negative to quit.\n');
num = input('Enter a number or -1 to quit: ');
if(num == -1)
validinput = true;
counter = 0;
elseif(num>=0)
counter = counter+1;
end;
if(counter == 0)
fprintf('No values entered!');
else
array = (counter);
m = max(counter);
disp(m);
end
end``
你不需要将它限制为正数,但要回答你的问题,你可以这样做。并删除<0中的
| |,以允许用户选择负数
num = [];
while (true)
in = input('Enter a number or a non-numeric character to quit: ');
if isempty(in) || ~isnumeric(in) || in < 0
break
end
num(end+1) = in;
end
[M, INDEX] = max(num);
if ~isempty(num)
disp(['The ', num2str(INDEX),' was the maximum entered value and was: ', num2str(M), '.'])
else
disp('No value entered.')
end
num=[];
while(true)
in=input('输入要退出的数字或非数字字符:');
如果isempty(in)| | ~ isnumeric(in)| | in<0
打破
结束
num(end+1)=in;
结束
[M,索引]=最大值(num);
if~isempty(num)
disp(['The',num2str(INDEX),'是输入的最大值,为:',num2str(M),'.'))
其他的
disp('未输入值')
结束
您有validInput
和validInput
两种。Matlab区分大小写。还有其他问题……例如,如果输入-1
,则将计数器设置为0,而计数器应在while
循环之前初始化为0。并且不在任何地方存储num
,而是为标量计数器调用max(counter)
。。。这还没有结束。好吧,我修正了这两件事,但是我如何在数组中读取大于或等于0的数字呢?请查看下面@NKN的解决方案。它利用了-1这一事实,我建议将MAX
重命名为其他名称:初学者可能没有意识到大写是有意的,他们可能稍后在另一个应用程序中重新定义MAX
。这是真的。我做了改变。
num = [];
while (true)
in = input('Enter a number or a non-numeric character to quit: ');
if isempty(in) || ~isnumeric(in) || in < 0
break
end
num(end+1) = in;
end
[M, INDEX] = max(num);
if ~isempty(num)
disp(['The ', num2str(INDEX),' was the maximum entered value and was: ', num2str(M), '.'])
else
disp('No value entered.')
end