首页 > 用户发贴区 > 编程问题提问区 > 如何求两两之间的数值,求教了!
2008
07-30

如何求两两之间的数值,求教了!

我现在正在编一段程序,是求两两个点之间的斜率。我想用循环来做,但是不知道怎么做。举一个例子:比如说有4个点,那么我就要求1,2点的斜率,1,3点的斜率;1,4点的,2,3点的,2,4点的,3,4点的。请问这样该如何去求呢?


如何求两两之间的数值,求教了!》有 7 条评论

  1. whos 说:

    要么定义一个数组a[8],把4个点都输入数组中,然后再循环求各个斜率;

    要么定义8个变量,接受4个点的数据,循环求斜率。

    其实不止这两种方法。

  2. BLDL 说:

    我就是不知道这个循环应该怎么编写,还麻烦你能说的详细一点,或者帮我编写一下,辛苦了!

  3. whos 说:

    #include “stdio.h”
    int main()
    {
    float a[8];
    int i,j;
    clrscr();   /*清屏函数*/
    for(i=0;i<8;i++)
    scanf(“%f”,&a[i]);   /*点输入格式为 x y*/
    for(i=0;i<6;i=i+2)
       for(j=6;j>=i+2;j=j-2)
        printf(“%f “,(a[i+1]-a[j+1])/(a[i]-a[j]));
    return 0;
    }

  4. BLDL 说:

    第一个循环我明白,但是第二个循环我不懂,可不可以麻烦你讲一下?

  5. whos 说:

    晕,简单说一下吧。

    输入的4个点共8个数据,放到数组a[8]中。

    a[0]和a[1]为第一个点,a[2]和a[3]为第二个点,a[4]和a[5]为第三个点,a[6]和a[7]为第四个点。

    i=0时,j循环三次,分别输出点1,2、1,3、1,4的斜率。

    i=2时,j循环两次,分别输出点2,3、2,4的斜率。

    i=5时,j循环一次,输出点3,4的斜率。

    实在不懂的话拿笔画图分析一下吧。

  6. xcgang 说:

    还是定义一个结构吧:

    struct point {

    int x;

    int y;

    } POINT;

    而且应该考虑 N个点的问题 :

    设计两个函数

    一个函数:

    void slope(POINT a, POINT b) ; 计算a,b的斜率, 略;

    另一个,计算N个点的斜率 (调用上一个函数)

    void nslopes(POINT s[], int n)

    {

          int i, j ;

          if (n<2) return;

          for (i=0,j=i+1;i<n-1;i++)

               slope(s[i],s[j]);

    }

     

  7. whos 说:

    确实不错,比我的那个效率高多了。

留下一个回复