| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 589 人关注过本帖
标题:自己写了一个程序,但是出了问题~~~求教正
只看楼主 加入收藏
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
结帖率:82.35%
收藏
已结贴  问题点数:15 回复次数:7 
自己写了一个程序,但是出了问题~~~求教正
轴承是一种十分常见的,在机械传动过程中起固定和减小载荷摩擦系数的部件。也可以说,当其它机件在轴上彼此产生相对运动时,用来降低动力传递过程中的摩擦系数和保持轴中心位置固定的机件。轴承是当代机械设备中一种举足轻重的零部件。
    详细可以参考这个链接:http://baike.baidu.com/view/5545.htm?noadapt=1
    对于大多数的轴承,它们的基本结构都是一个圆柱体。从柱体的一个面看,每个轴承的轮廓都是由两个同心圆构成,在两个同心圆之间有许多的小圆围绕。其中,调心球轴承就是一个经典的模型。
    现在要求轴承里至少要能够放置N个排列在大圆边界内的半径为R的小球(忽略小圆),柱体的底面大圆半径至少要多少?为了精确制造,要求给出的半径必须为整数。




输入格式
    第一行输入一个正整数T,表示将要输入的测试数据数量。
    接下来有T行,每行输入两个正整数N,R,分别表示小球的个数以及小球的半径。
    (T<=100,1<=N,R<=1000)



输出格式
    对于每一组测试数据,输出一行”Case X: ”,其中X表示第几组数据,然后是一个整数,表示能够放置全部小球的柱体的底面半径至少是多少。



输入样例
3
2 1
3 2
5 4



输出样例
Case 1: 2
Case 2: 5
Case 3: 11



Hint
第一组数据中,要包含2个半径为1的小球,柱体底面半径最少是2。
第二组数据中,要包含3个半径为2的小球,柱体底面半径最少是4.30940。
第三组数据中,要包含5个半径为4的小球,柱体底面半径最少是10.80520。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
自己写的程序,自己测试的数据都正确,但是提交就错了~~
#include <stdio.h>
#include <math.h>
#define PI    3.141592653589793

int main()
{
    double R[100],b[100];
    int n, i,j,a[100],r[100];
    scanf("%d",&n);
    for(i=1; i<=n; i++)
        scanf("%d%d",&a[i],&r[i]);
    for(j=1; j<=n; j++)
    {
        if(a[j]==1)
            R[j]=r[j];
        else
            R[j]=r[j]+r[j]/(sin(PI/a[j]));
        if(R[j]-(int)R[j]>=0.000001)
            R[j]=(int)R[j]+1;
        printf("Case %d:",j);
        printf(" %.0f\n",R[j]);
    }
}

[ 本帖最后由 qq471402415 于 2014-1-3 22:05 编辑 ]
搜索更多相关主题的帖子: 调心球轴承 机械设备 摩擦系数 经典的 零部件 
2014-01-02 23:08
c718382171
Rank: 2
等 级:论坛游民
帖 子:32
专家分:41
注 册:2013-12-21
收藏
得分:5 
R[j]=(int)(sqrt(a[j]+1))*r[j]+r[j];问题出在这行,当输入偶数时,int刚好取整;奇数就差了一个1;建议分成两种情况,可用输入1代表奇数,2代表偶数个圆;用if来判断
2014-01-02 23:21
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:8 
不是该用浮点型表示半径么...

[ 本帖最后由 韶志 于 2014-1-2 23:54 编辑 ]

三十年河东,三十年河西,莫欺少年穷!
2014-01-02 23:46
夏天天蓝
Rank: 2
等 级:论坛游民
帖 子:39
专家分:86
注 册:2013-12-30
收藏
得分:2 
R[j]=(int)(sqrt(a[j]+1))*r[j]+r[j];
这一句没看懂,可以请楼主解释一下吗?
谢谢。
2014-01-03 10:13
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
收藏
得分:0 
#include <stdio.h>
#include <math.h>
#define PI    3.141592653589793

int main()
{
    double r[100],R[100],b[100];
    int n,  i,j,a[100];
    scanf("%d",&n);
    for(i=1; i<=n; i++)
        scanf("%d%lf",&a[i],&r[i]);
    for(j=1; j<=n; j++)
    {
        if(a[j]==1)
            R[j]=r[j]+1;
        else
            R[j]=r[j]+r[j]/(sin(PI/a[j]));
        if(R[j]-(int)R[j]>=0.000001)
            R[j]=(int)R[j]+1;
        printf("Case %d:",j);
        printf(" %.0f\n",R[j]);
    }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
重新写了个程序,自己测试的数据都对~~但是提交就错了~~~~求解答
2014-01-03 21:49
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
收藏
得分:0 
#include <stdio.h>
#include <math.h>
#define PI    3.141592653589793

int main()
{
    double r[100],R[100],b[100];
    int n,  i,j,a[100];
    scanf("%d",&n);
    for(i=1; i<=n; i++)
        scanf("%d%lf",&a[i],&r[i]);
    for(j=1; j<=n; j++)
    {
        if(a[j]==1)
            R[j]=r[j]+1;
        else
            R[j]=r[j]+r[j]/(sin(PI/a[j]));
        if(R[j]-(int)R[j]>=0.000001)
            R[j]=(int)R[j]+1;
        printf("Case %d:",j);
        printf(" %.0f\n",R[j]);
    }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
重新写了个程序,自己测试的数据都对~~但是提交就错了~~~~求解答
2014-01-03 21:49
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
收藏
得分:0 
谢谢大家,我找到问题了~~特判的时候出问题了~~
2014-01-03 22:06
kangcc520
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-1-5
收藏
得分:0 
这是个什么程序呀??
2014-01-05 14:22
快速回复:自己写了一个程序,但是出了问题~~~求教正
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038688 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved