1

我正在尝试制作一个程序来使用 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 和 msscanf 但问题是我无法从用户端声明或获取数组数据。请建议我制作这个程序的一些方法。

还如何从用户声明和获取矩阵数据以及从用户声明和获取数组数据。

4

3 回答 3

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");

这是编写这个程序并以这种方式从用户那里获取输入的正确方法吗?问题仍然是如何从用户声明和获取矩阵数据以及从用户声明和获取数组数据。需要更多答案。

于 2013-09-14T18:12:14.150 回答
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 ) );
于 2013-09-16T10:23:55.447 回答
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 循环中创建列表。

于 2016-12-07T11:33:50.713 回答