C语言中,根据用户输入的三个顶点坐标计算三角形的面积。急求:点的坐标如何表示?!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中,根据用户输入的三个顶点坐标计算三角形的面积。急求:点的坐标如何表示?!相关的知识,希望对你有一定的参考价值。
结构体可以,楼上的说了。如果没学结构体可以用二维数组,float a[3][2]。第一维是第一个顶点第二个顶点第三个顶点。通过两层for循环进行数据输入,外层控制顶点次序,内层控制每个顶点的横左边和纵坐标。并且可以用printf输出语句提示该输入第几个顶点了。追问我大一,C语言才学,结构体好深奥啊还没学到,有没有简单点的
追答老师布置的题呀,如果是这样的话应该是刚上大一一个月,数组应该也没有学到吧?
那你就用普通变量吧。
float ax,ay,bx,by,cx,cy,s;
这个好理解吧。
然后通过scanf("%d%d%d%d%d%d",&ax,&ay,&bx,&by,&cx,&cy);输入。
(或者for循环进行输入更简洁一些,for应该学了吧)
通过勾股定理求变长,再用海伦公式求面积。
不明白的继续追问。
struct Point //三角形顶点结构体
double x; //x坐标
double y; //y坐标
;
int main()
Point A, B, C;
cin >> A.x >> A.y;
cin >> B.x >> B.y;
cin >> C.x >> C.y;
cout << "A点坐标: (" << A.x << "," << A.y << ")" << endl;
cout << "B点坐标: (" << B.x << "," << B.y << ")" << endl;
cout << "C点坐标: (" << C.x << "," << C.y << ")" << endl;
return 0;
参考技术C 这个你用随意方法存下六个数字,自己知道是坐标就行了,然后算出三条边长(连点距离你应该是会的吧),用海伦公式【S=sqrt(q*(q-a)*(q-b)*(q-c))】求三角形面积就OK了。q是周长一半 参考技术D #include<stdio.h>
#include<math.h>
float d(float x[],float y[])
return sqrt(pow(x[0]-y[0],2)+pow(x[1]-y[1],2));
int main()
float a,b,c,p;
float x[2],y[2],z[2];
printf("输入三点坐标:\n");
scanf("%f%f%f%f%f%f",x,x+1,y,y+1,z,z+1);
a=d(x,y);
b=d(x,z);
c=d(y,z);
p=0.5*(a+b+c);
printf("三角形面积:%g",sqrt(p*(p-a)*(p-b)*(p-c)));
return 0;
c语言 请编写程序让用户输入凸五边形的五个顶点坐标,计算出该凸五边形的面积
请编写程序让用户输入凸五边形的五个顶点坐标,计算出该凸五边形的面积
提示:目前在计算凸五边形的面积的时候通常是将凸五边形变成为求三个三角形面积之和的问题
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
/******************************************
三角形面积函数,形式参数为float num1[5],
float num2[5],返回值为面积之和
*******************************************/
double square(float num1[5],float num2[5])
double side[7],length[3],squ[3];
int i;
for(i=0;i<4;i++) /*两点之间的线段长*/
side[i]=sqrt((num1[i+1]-num1[i])*(num1[i+1]-num1[i])+(num2[i+1]-num2[i])*(num2[i+1]-num2[i]));
side[5]=sqrt((num1[2]-num1[0])*(num1[2]-num1[0])+(num2[2]-num2[0])*(num2[2]-num2[0]));
side[6]=sqrt((num1[4]-num1[2])*(num1[4]-num1[2])+(num2[4]-num2[2])*(num2[4]-num2[2]));
side[4]=sqrt((num1[4]-num1[0])*(num1[4]-num1[0])+(num2[4]-num2[0])*(num2[4]-num2[0]));
length[0]=(side[0]+side[1]+side[5])*1.0/2;
squ[0]=sqrt(length[0]*(length[0]-side[0])*(length[0]-side[1])*(length[0]-side[5])); /*求三角形的面积*/
length[1]=(side[2]+side[3]+side[6])*1.0/2;
squ[1]=sqrt(length[1]*(length[1]-side[2])*(length[1]-side[3])*(length[1]-side[6]));
length[2]=(side[4]+side[5]+side[6])*1.0/2;
squ[2]=sqrt(length[2]*(length[2]-side[4])*(length[2]-side[5])*(length[2]-side[6]));
return (squ[0]+squ[1]+squ[2]); /*返回三角形的面积之和*/
int _tmain(int argc, _TCHAR* argv[])
float num1[5]=0,num2[5]=0;
double square1=0,squ[3]=0;
int i;
printf("please input the points in turn\n");
for(i=0;i<5;i++)
scanf("%f%f",&num1[i],&num2[i]);
printf("%f%f\n",num1[i],num2[i]);
square1=square(num1,num2); /*五边形面积等于三个三角形面积之和*/
printf("%f",square1);
return 0;
本回答被提问者采纳 参考技术B #include<stdio.h>
#include<math.h>
int main()
int n=5;
double a[105],b[105];
double square = 0.0;
for(int i = 1;i <= n;i ++)
double x,y;
scanf("%lf %lf",&x,&y);
a[i] = x;
b[i] = y;
if(i >= 3 && i <= n)
double a1,a2,a3,q;
a1 = sqrt((a[i] - a[i - 1]) * (a[i] - a[i - 1]) + (b[i] - b[i - 1]) * (b[i] - b[i - 1]));
a2 = sqrt((a[i-1] - a[i - 2]) * (a[i-1] - a[i - 2]) + (b[i-1] - b[i - 2]) * (b[i-1] - b[i - 2]));
a3 = sqrt((a[i] - a[i-2]) * (a[i] - a[i-2]) + (b[i] - b[i-2]) * (b[i] - b[i-2]));
q = (a1 + a2 + a3) / 2;
square += sqrt(q * (q - a1) * (q - a2) * (q - a3));
printf("%lf\n",square);
return 0;
这是代码,但是,你输入的是,必须是按照顺序输入的,
逆时针或者顺时针。
以上是关于C语言中,根据用户输入的三个顶点坐标计算三角形的面积。急求:点的坐标如何表示?!的主要内容,如果未能解决你的问题,请参考以下文章