如何从用户Scilab获取多个输入

时间:2013-09-14 17:18:01

标签: matlab scilab

我正在尝试制作一个程序,使用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;从用户那里获取数组数据。

3 个答案:

答案 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循环中创建列表。