我正在尝试制作一个程序,使用for循环打印最多5个数字并从用户输入数字。
我知道我可以通过max
命令a =[1,2,3,4,5]; and max(a);
来完成。
但是尝试for循环。
我不知道如何在Scilab中使用数组(我知道它们是我们可以采用的矩阵,但不知道如何在Scilab中以矩阵或数组的形式从用户那里获取输入)
`a = [1,2,3,4,5];` //works fine but i want user should input numbers.
我知道一种方法是使用
a = input("First number:");
b = input("Second number:"); ... and so on upto fifth number
// i want to make it short like using array in C language
int a[5];
printf("Enter numbers");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
// Here in Scilab i don't know how i write it??
if I use int a[5]; i get error Undefined variable: a --error4
我知道我可以使用mprintf&amp; msscanf,但问题是我无法从用户端声明或获取数组数据。 请建议我制作这个程序的方法。
另外如何申报&amp;从用户那里获取矩阵数据并声明&amp;从用户那里获取数组数据。
答案 0 :(得分:1)
我设法编写了这段代码,现在工作正常。 但是我想要更多答案来学习更多方法。
disp("Enter Numbers:"); // Enter first number on console then press enter key then type second number and again press enter to type third ..... so on to fifth.
for i = 1:5
x(i) = input('');
end
maximum = x(1)
for i=1:5
if(x(i)>maximum)then
maximum = x(i)
end
end
disp(maximum, "Maximum Number is");
这是编写这个程序并以这种方式从用户那里获取输入的正确方法吗? 问题仍然如何宣布&amp;从用户那里获取矩阵数据并声明&amp;从用户获取数组数据。 需要更多答案。
答案 1 :(得分:1)
输入矩阵
我认为您的解决方案是有效的,但如果您有大量条目并且您知道第一个输入错误,则用户继续提供条目可能会令人沮丧。
一个很好看的功能是x_matrix。它为编辑矩阵提供了一个简单的界面。
<强>功能强>
我通常也更喜欢函数,它使重用代码和验证和测试小部分变得更加容易。当然在这个问题上应该使用SciLab提供的函数max(),但是你说你想使用for循环。
考虑到上述陈述,这里有一个小例子。您可以将其展开以让用户首先提供矩阵尺寸。
function maximum = findMax( numbers )
maximum = -1e99;
numberOfNumbers = length( numbers );
for i=1:numberOfNumbers
if( numbers(i) > maximum )
maximum = numbers(i);
end
end
return maximum;
endfunction
[result]=x_matrix("enter a matrix", zeros(5,5) );
foundMaximum = findMax(result);
disp( "Maximum is " + string( foundMaximum ) );
答案 2 :(得分:0)
我遇到了类似的问题,并从Scilab帮助中找到了这个好方法:
labels=["magnitude";"frequency";"phase "];
[ok,mag,freq,ph]=getvalue("define sine signal",labels,...
list("vec",1,"vec",1,"vec",1),["0.85";"10^2";"%pi/3"])
我喜欢它,因为你有标签并对数据有一个很好的概述。
在上面的示例中,不包含for
循环,但可以非常灵活地创建列表,例如,如果需要这种模式,可以在for循环中创建列表。