首页 > 编程知识 正文

数数有多少个三角形计算方法,三角形对角线公式

时间:2023-05-05 23:42:29 阅读:153363 作者:1441

主题:请告诉我以下图形中包含的三角形的数量。 请用一个程序完成计算。

c版

1 # include iostream 23 usingnamespacestd; 4 5 const char NO_POINT='0'; 6//任何一条线8 const char *map[]={ 'ad '、' ab '、' db '、' ae '、' aj '、' ah '、' ej '、' eh '、' jh '、' af、 " ef "、" eg "、" fg "、" bj "、" bk "、" bg "、" jk "、" kg "、" bh "、" bc "、" hc "、" HC " 10//共线的点11 const chc 12 13 //点在线14intcontain(constchar*str,char a ) {15 int i=0; 16while(str[I]!=' ' ) { //注意字符使用单引号,字符串使用双引号17if(str[I]==a ) 18 return 1; 19 i; 20 ) 21返回0; 22 ) 2324//3三个点是否在一条线上函数25intisinaline(constchar*str[(] (),char a,char b,char c ) {26 int i; 27for(I=0; i 7; I ) 28if(contain(str[I],a ) contain (str [ I ],b ) contain (str [ I ],c ) ) { 29返回1; 30 }31 }32 return 0; 33 ) 3435//2两条线交点函数36 chargetcrosspoint (const char * str 1,const char *str2) 37if ) str1==*str2) 38 return *str1; 39if(*str1==*(str21 ) ) 40 return *str1; 41if(*(str1)==*str2) 42返回* ) str1); 43if(*(str1)==* ) str21 ) ) 44return* ) str1); 45返回no _ point; 46 ) 4748//三条线必须有交点,且三条线必须共线才能构成三角形。 49intistriangle(constchar*str1、const char *str2、const char *str3) {50 char Point1、Point2、Point3; 51point1=getcrosspoint(str1,str2); 52if(point1==no_point ) 53返回0; 54point2=getcrosspoint(str1,str3); 55if(point2==no_point ) 56 return 0; 57point3=getcrosspoint(str2,str3); 58if(point3==no_point ) 59返回0; 60if (line,Point1,Point2,Point3) ) 61返回0; 62返回1; 63 ) 6465 intgettriangelcount (const char * str [ ] ) {66 int i,j,k,count=0; 67for(I=0; i 36; I ) 68for(j=I1; j 36; j () 69for ) k=j1; k 36; k () 70if ) istriangle(str[I],str[j],str[k] ) ) 71 count; 72 }73 }74 }75 return count; 76 ) 7778intmain(intargc,char *argv[] ) 79coutgettriangelcount )图; 80 getchar (; 81返回0; 82 )解题思路:

)1)标记各交点,如下。

)2)共有36条线段,3条线段的2、2之间有交点,但在1条线上(包括已经有3条线段交叉在同一个点上)的情况下,可以构成三角形。 如下图所示,最左边的构成三角形,右边的两个不构成三角形。

)3)因此,需要求出两条线的交点,并求出3个点是否在同一直线上等子函数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。