定义
DRY原则DRY——Don t Repeat Yourself 是指在一个项目工程中的东西最好是唯一的 所有东西 包括类 变量 常量 相同的方法 等等
SHY原则Shy—害羞 是指各个模块不要把只属于自己的东西公开 从而减少依赖关系 假如出现bug 那么让bug只影响该某块 而不要牵扯整个工程
联系
两个原则都为了增强程序可维护性 但是在某种程度上两个是不能兼得的 DRY原则 要尽量把各部分里相同的东西分离出去放在一起 这难免就会导致很多部分都和分离出来的这些东西存在一些关系 从而不够Shy 想要一个系统够Shy 就得努力让各部分都做得和其它部分没有什么关联 这就会致使每个部分里面都有一些本来可以共同使用的内容 从而不够DRY
lishixinzhi/Article/program/net/201311/13004
//以下为原创答案和测试结果图。
#include <stdio.h>
#include <math.h>
double LONG(double a[],double b[])
void main()
{
double a[4],b[4],c[4],d[4],x1[4],x2[4]
printf("请逆时针输入四点的横坐标\n")
printf("请先输入根号下的数,若没有输入0,再输入空格(重要),再输入分数位,再输入空格,\n")
printf("再输入分母,没有分母输入1,最后然后回车,接着输入下一个点的横坐标\n")
scanf("%lf %lf %lf",&a[0],&c[0],&d[0])x1[0]=sqrt(a[0])+c[0]/d[0]
scanf("%lf %lf %lf",&a[1],&c[1],&d[1])x1[1]=sqrt(a[1])+c[1]/d[1]
scanf("%lf %lf %lf",&a[2],&c[2],&d[2])x1[2]=sqrt(a[2])+c[2]/d[2]
scanf("%lf %lf %lf",&a[3],&c[3],&d[3])x1[3]=sqrt(a[3])+c[3]/d[3]
printf("请逆时针输入四点的纵坐标\n")
scanf("%lf %lf %lf",&b[0],&c[0],&d[0])x2[0]=sqrt(b[0])+c[0]/d[0]
scanf("%lf %lf %lf",&b[1],&c[1],&d[1])x2[1]=sqrt(b[1])+c[1]/d[1]
scanf("%lf %lf %lf",&b[2],&c[2],&d[2])x2[2]=sqrt(b[2])+c[2]/d[2]
scanf("%lf %lf %lf",&b[3],&c[3],&d[3])x2[3]=sqrt(b[3])+c[3]/d[3]
if (LONG(x1,x2)==1)
printf("四个顶点坐标构成了一个等边四边形\n")
else
printf("四个顶点坐标没有构成等边四边形\n")
}
double LONG(double x1[],double x2[])
{
double l1,l2,l3,l4,n
n=0
l1=(x1[0]-x1[1])*(x1[0]-x1[1])+(x2[0]-x2[1])*(x2[0]-x2[1])
l2=(x1[1]-x1[2])*(x1[1]-x1[2])+(x2[1]-x2[2])*(x2[1]-x2[2])
l3=(x1[2]-x1[3])*(x1[2]-x1[3])+(x2[2]-x2[3])*(x2[2]-x2[3])
l4=(x1[3]-x1[0])*(x1[3]-x1[0])+(x2[3]-x2[0])*(x2[3]-x2[0])
if (l1==0)
printf("数据有误")
if (l1==l2)
n=n+1
else
n=n
if (l2==l3)
n=n+1
else
n=n
if (l3==l4)
n=n+1
else
n=n
if (l4==l1)
n=n+1
else
n=n
if (n==4)
return 1
else
return 0
}
但若将上面那个点横坐标改为0.5,就不是正方形了,如图。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)