求C语言编程高手啊急 我有两题不会做那位高手帮忙下 最近刚学这个一头雾水 各位网友把正确的代码发我看下 20
在这里先谢了题目描述任给出平面上n个点的坐标,试求覆盖这n个点的圆的最小半径。解题思路:只要分别求出所有3点组合覆盖的最小圆,取其中半径最大者即为所求。那么确定覆盖3点的...
在这里先谢了
题目描述
任给出平面上n个点的坐标,试求覆盖这n个点的圆的最小半径。
解题思路:只要分别求出所有3点组合覆盖的最小圆,取其中半径最大者即为所求。 那么确定覆盖3点的最小圆的步骤可以如下:
(1) 若3点组成直角或钝角三角形,或3点共线,此时,最小圆的半径为三边中最长边的一半。
(2) 否则,3点组成锐角三角形,最小圆为3点的外接圆。
(3) 外接圆半径计算方法:
(a) 若3点构成一个三角形(即3点不共线),并设3点的坐标为 (x1,y1),(x2,y2),(x3,y3),求出两点(x1,y1)和(x2,y2)之间的距离L1=sqrt((x1-x2)^2+(y1-y2)^2), 同样求出(x1,y1)和(x3,y3)之间的距离L2,以及(x2,y2)和(x3,y3)之间的距离L3。
(b) 求出三角形半周长L=(L1+L2+L3)/2以及面积S=sqrt(L*(L-L1)*(L-L2)*(L-L3))。
(c) 根据公式4SR=L1*L2*L3,求外接圆半径R=L1*L2*L3/(4*S)。
输入
输入平面点的个数n以及n个点的坐标。
输出
输出覆盖这n个点的最小半径(小数点后保留4位)。
样例输入4
4.2,5.6
78.3,3.8
35.4,15.9
29.88,42.56
样例输出以上4个点的覆盖圆的最小半径为37.1463
题目描述
计算A+B,但是这里A,B表示的是字符串。并且'a'表示1,'b'表示2...'z'表示26,如果两个字母相加的结果超过26,就进位。如:abcdef+aaaaaa,结果为bcdefg,a+z=aa.
输入
第一行为N,表示接下来有N组测试数据。接下来的N行表示N组测试数据,每组测试数据包含两个字符串,中间用空格隔开,并且保证每个字符串中的字符都是小写字母。
输出
输出A+B的结果,输出要求也是字符串。每两组数据之间有一个空行。样例输入2
abcdef aaaaaa
a z样例输出bcdefg
aa
谢谢了,真的! 展开
题目描述
任给出平面上n个点的坐标,试求覆盖这n个点的圆的最小半径。
解题思路:只要分别求出所有3点组合覆盖的最小圆,取其中半径最大者即为所求。 那么确定覆盖3点的最小圆的步骤可以如下:
(1) 若3点组成直角或钝角三角形,或3点共线,此时,最小圆的半径为三边中最长边的一半。
(2) 否则,3点组成锐角三角形,最小圆为3点的外接圆。
(3) 外接圆半径计算方法:
(a) 若3点构成一个三角形(即3点不共线),并设3点的坐标为 (x1,y1),(x2,y2),(x3,y3),求出两点(x1,y1)和(x2,y2)之间的距离L1=sqrt((x1-x2)^2+(y1-y2)^2), 同样求出(x1,y1)和(x3,y3)之间的距离L2,以及(x2,y2)和(x3,y3)之间的距离L3。
(b) 求出三角形半周长L=(L1+L2+L3)/2以及面积S=sqrt(L*(L-L1)*(L-L2)*(L-L3))。
(c) 根据公式4SR=L1*L2*L3,求外接圆半径R=L1*L2*L3/(4*S)。
输入
输入平面点的个数n以及n个点的坐标。
输出
输出覆盖这n个点的最小半径(小数点后保留4位)。
样例输入4
4.2,5.6
78.3,3.8
35.4,15.9
29.88,42.56
样例输出以上4个点的覆盖圆的最小半径为37.1463
题目描述
计算A+B,但是这里A,B表示的是字符串。并且'a'表示1,'b'表示2...'z'表示26,如果两个字母相加的结果超过26,就进位。如:abcdef+aaaaaa,结果为bcdefg,a+z=aa.
输入
第一行为N,表示接下来有N组测试数据。接下来的N行表示N组测试数据,每组测试数据包含两个字符串,中间用空格隔开,并且保证每个字符串中的字符都是小写字母。
输出
输出A+B的结果,输出要求也是字符串。每两组数据之间有一个空行。样例输入2
abcdef aaaaaa
a z样例输出bcdefg
aa
谢谢了,真的! 展开
2个回答
展开全部
只能给你点提示,代码你自己写.
第一个伪代码如下
最大值=0;
for(i=0;i<总点数-2;i++)
{
for(j=i+1;j<总点数-1;j++)
{
for(k=j+1;k<总点数;k++)
{
if(计算三角形最小圆半径(i,j,k)>最大值)
最大值 = 计算结果;
}
}
}
输出最大值
这是最傻的办法,还可以优化下,在点数超过4点的情况下,只需要求最上/最左/最下/最右4点的最小圆半径就行了
第2个更简单
const char *pASC = "abcdefg.....................z";
进位 = 0;
for(i=0;i<长度;i++)
{
if(数1长度<i)
n = 数2[i] + 进位;
else if(数2长度<i)
n = 数1[i] + 进位;
else
n = 数1[i]-'a' + 数2[i]-'a' + 进位;
进位 = 0;
if(n>=26)
{
n -= 26;
进位 = 1;
}
输出一个字符 pASC[n];
}
if(进位 != 0)
输出字符 'a';
第一个伪代码如下
最大值=0;
for(i=0;i<总点数-2;i++)
{
for(j=i+1;j<总点数-1;j++)
{
for(k=j+1;k<总点数;k++)
{
if(计算三角形最小圆半径(i,j,k)>最大值)
最大值 = 计算结果;
}
}
}
输出最大值
这是最傻的办法,还可以优化下,在点数超过4点的情况下,只需要求最上/最左/最下/最右4点的最小圆半径就行了
第2个更简单
const char *pASC = "abcdefg.....................z";
进位 = 0;
for(i=0;i<长度;i++)
{
if(数1长度<i)
n = 数2[i] + 进位;
else if(数2长度<i)
n = 数1[i] + 进位;
else
n = 数1[i]-'a' + 数2[i]-'a' + 进位;
进位 = 0;
if(n>=26)
{
n -= 26;
进位 = 1;
}
输出一个字符 pASC[n];
}
if(进位 != 0)
输出字符 'a';
追问
?
L老兄,不仗义啊
我学这个没多久的,
什么是伪代码
你写的连头文件都没
真么看啊
拜托写完整吧好不?大神
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询