zoj 1597 Circular Area

本文提供了一段使用C语言实现的计算扇形面积和弧长的代码,通过输入扇形的半径和圆心角,程序能够输出扇形的面积和弧长。

扇形面积=R*R*Hudu(扇形弧度)/2;

弧长L=R*Hudu(扇形弧度)

 

/*
* zoj1597.c
*
* Created on: 2011-9-21
* Author: bjfuwangzhu
*/

#include<stdio.h>
#include<math.h>
#define pi acos(-1.0)
#define eps 1.0e-8
double distance(double x1, double y1, double x2, double y2) {
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main() {
#ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif
double x1, y1, r1, x2, y2, r2, r12, dis, temp, res;
while (~scanf("%lf %lf %lf %lf %lf %lf", &x1, &y1, &r1, &x2, &y2, &r2)) {
dis = distance(x1, y1, x2, y2);
r12 = fabs(r1 - r2);
if (dis - r1 - r2 > eps) {
printf("%.3lf\n", 0.0);
continue;
}
if (dis - r12 > eps) {
temp = acos((dis * dis + r1 * r1 - r2 * r2) / (2 * dis * r1)) * 2;
res = r1 * r1 * temp / 2.0 - r1 * r1 * sin(temp) / 2.0;

temp = acos((dis * dis + r2 * r2 - r1 * r1) / (2 * dis * r2)) * 2;
res += r2 * r2 * temp / 2.0 - r2 * r2 * sin(temp) / 2.0;
printf("%.3lf\n", res);
continue;
}
temp = r1 > r2 ? r2 : r1;
printf("%.3lf\n", pi * temp * temp);
}
return 0;
}

转载于:https://www.cnblogs.com/xiaoxian1369/archive/2011/09/21/2183781.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值