我现在正在编一段程序,是求两两个点之间的斜率。我想用循环来做,但是不知道怎么做。举一个例子:比如说有4个点,那么我就要求1,2点的斜率,1,3点的斜率;1,4点的,2,3点的,2,4点的,3,4点的。请问这样该如何去求呢?
>> 本文固定链接: http://www.vcgood.com/archives/2564
我现在正在编一段程序,是求两两个点之间的斜率。我想用循环来做,但是不知道怎么做。举一个例子:比如说有4个点,那么我就要求1,2点的斜率,1,3点的斜率;1,4点的,2,3点的,2,4点的,3,4点的。请问这样该如何去求呢?
>> 本文固定链接: http://www.vcgood.com/archives/2564
你必须先 登录才能发表评论。
要么定义一个数组a[8],把4个点都输入数组中,然后再循环求各个斜率;
要么定义8个变量,接受4个点的数据,循环求斜率。
其实不止这两种方法。
我就是不知道这个循环应该怎么编写,还麻烦你能说的详细一点,或者帮我编写一下,辛苦了!
#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个点共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的斜率。
实在不懂的话拿笔画图分析一下吧。
还是定义一个结构吧:
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]);
}
确实不错,比我的那个效率高多了。