matlab - 如何更改代码以使其在输入小于或等于零的数字时指示结束并阻止用户输入数据
问题描述
我需要在matlab中做一个数字排序器,它可以从用户输入中读取整数,直到输入一个等于或小于零的数字。一旦输入等于或小于零的数字,程序就会按升序对数字进行排序。我不知道从这里做什么:
sortorder = input('Enter the word "up" if you want to sort array in ascending order, \nor enter the word "down" if you want to sort the array in descending order: ', 's');
nvals = input('Enter number of values to sort: ');
switch sortorder
case {'up', 'Up'}
array = zeros(1,nvals);
for ii = 1:nvals
string = ['Enter value ' int2str(ii) ': '];
array(ii) = input(string);
end
sorted = ssort(array);
fprintf('\nSorted date:\n');
for ii = 1:nvals
fprintf(' %8.4f\n',sorted(ii));
end
case {'down', 'Down'}
解决方案
可以将 break 语句添加到读取输入值的循环中。在跳出循环之前,可以截断数组以删除由于输入过早结束而未填充的额外值(假设输入了小于 0 的数字)。如果您不希望包含输入的终止号码,您可以通过将行更改为 来截断Array = Array(1,1:Value_Index)
数组Array = Array(1,1:Value_Index-1)
。
Sorting_Pattern = input('Enter the word "up" if you want to sort array in ascending order, \nor enter the word "down" if you want to sort the array in descending order: ', 's');
Number_Of_Values = input('Enter number of values to sort: ');
Array = zeros(1,Number_Of_Values);
for Value_Index = 1: +1: Number_Of_Values
Input_Value = input(['Enter value ' int2str(Value_Index) ': '],'s');
Array(1,Value_Index) = str2num(Input_Value);
if(str2num(Input_Value) <= 0)
%Deleting unused indices in array%
Array = Array(1,1:Value_Index);
%Uncomment to force ascending order upon termination%
% Sorting_Pattern = 'up';
break;
end
end
switch Sorting_Pattern
case {'up','Up'}
Sorted_Array = sort(Array);
case{'down','Down'}
Sorted_Array = sort(Array,'descend');
end
Sorted_Array
推荐阅读
- android - 启动 websockets 传输 android 时出错
- php - cURL Elasticsearch 价格比较搜索 aggs
- python - 压缩两个字符串列表以用作字典中的键
- ios - 将图像下载到 TableView [Swift]
- python - PyAudio 包未安装
- javascript - 提取对象中的名称键
- sirishortcuts - 未使用 NSUserActivity 为 Siri 快捷方式保存持久标识符
- reactjs - React - 您可以将状态处理程序向下传递到多个子组件层吗
- c# - 根据日期时间的天数增加和减少价格
- javascript - 声明对象时使用对象的函数