| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 852 人关注过本帖
标题:算法找错
只看楼主 加入收藏
惊叹者
Rank: 1
等 级:新手上路
帖 子:38
专家分:5
注 册:2013-3-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
算法找错
一物体从百米下落,每次反弹为一半,求第十次走过多少米,且第十次反弹多高。我的解法如此答案是对的,但算法好像是错的,求解
#include <stdio.h>
int main()
{int n;
  double s=100,a=100;
for(n=1;n<=10;n++)
{
    s=s+a;

 a=a/2;
 }
printf("%lf\n",s);
printf("%lf\n",a);
return 0;
}
搜索更多相关主题的帖子: 反弹 include double 
2013-04-16 21:24
liu_鹏
Rank: 2
等 级:论坛游民
帖 子:33
专家分:75
注 册:2013-4-16
收藏
得分:1 
里面应该是n<=11。

不懂就发帖。懂了就恢复。
2013-04-16 22:11
古景涛
Rank: 2
等 级:论坛游民
帖 子:15
专家分:12
注 册:2012-11-3
收藏
得分:2 
#include <stdio.h>
int main()
{int n;
  double s=100,a=100;
for(n=1;n<=10;n++)
{
    a=a/2;
    s=s+a;//先下降再求和
}
printf("%lf\n",s);
printf("%lf\n",a);
return 0;
}
2013-04-16 22:35
惊叹者
Rank: 1
等 级:新手上路
帖 子:38
专家分:5
注 册:2013-3-5
收藏
得分:0 
回复 3楼 古景涛
不对,少了一百米啊
2013-04-17 18:15
惊叹者
Rank: 1
等 级:新手上路
帖 子:38
专家分:5
注 册:2013-3-5
收藏
得分:0 
回复 2楼 liu_鹏
不对
2013-04-17 18:16
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:7 
/*总和模型为:hight+hight/2, (hight/2+ hight/2/2), (hight/2/2+hight/2/2/2),....*/
#include<iostream>
using namespace std;
float  rebound(float hight, int count)
{

     if(count==1) return hight/2;
     return  rebound( hight,  count-1)/2;
}
float  sum_rebound(float hight, int count)
{
   if(count==1) return hight*3.0/2.0;
   return sum_rebound( hight, count-1)+rebound( hight,  count-1)+rebound( hight,  count-1)/2.0;

}
int  main()
{
     cout<<"此次的反弹高度"<<rebound(100.0, 3)<<endl;
     cout<<"此次的反弹累积总高度"<<sum_rebound(100.0, 3)<<endl;
     return 0;
}

www.qunxingw.wang
2013-04-17 20:54
求索者
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2013-3-6
收藏
得分:2 
第十次反弹的距离没加上。
#include <stdio.h>
int main()
{int n;
  double s=100,a=100;
for(n=1;n<=10;n++)
{
    s=s+a;

a=a/2;
}
s=s+a;
printf("%lf\n",s);
printf("%lf\n",a);
return 0;
}

[ 本帖最后由 求索者 于 2013-4-17 21:14 编辑 ]
2013-04-17 21:12
Juson
Rank: 4
等 级:业余侠客
帖 子:70
专家分:235
注 册:2013-4-8
收藏
得分:8 
#include <stdio.h>
int main()
{int n;
  double s=100, a=100 ;
  for(n=1;n<=9;n++)             //前9次反弹中,每次弹起后还要落下去
  {
    s=s+a;                      //总路程s要加上弹起高度的二倍
    a=a/2;                      //这里算出的a是本次弹起的高度,是下次弹起并落下所经过的路程
  }
  a /= 2;                       //这是第10次弹起的高度
  s += a/2 ;                    //加上第10次弹起的高度,而不计其下落高度
  printf("%lf\n",s);
  printf("%lf\n",a);
  return 0;
}
2013-04-17 23:41
Juson
Rank: 4
等 级:业余侠客
帖 子:70
专家分:235
注 册:2013-4-8
收藏
得分:0 
以下是引用Juson在2013-4-17 23:41:22的发言:

#include
int main()
{int n;
  double s=100, a=100 ;
  for(n=1;n<=9;n++)             //前9次反弹中,每次弹起后还要落下去
  {
    s=s+a;                      //总路程s要加上弹起高度的二倍
    a=a/2;                      //这里算出的a是本次弹起的高度,是下次弹起并落下所经过的路程
  }
  a /= 2;                       //这是第10次弹起的高度
  s += a/2 ;                    //加上第10次弹起的高度,而不计其下落高度
  printf("%lf\n",s);
  printf("%lf\n",a);
  return 0;
}

抱歉,最后第10次弹起计算错了,应该是 s += a ;
另外,仔细想了想,我这样写有点多余了,还不如7楼 求索者 写的精简


[ 本帖最后由 Juson 于 2013-4-18 12:39 编辑 ]
2013-04-18 12:32
古景涛
Rank: 2
等 级:论坛游民
帖 子:15
专家分:12
注 册:2012-11-3
收藏
得分:0 
回复 4楼 惊叹者
哦?为什么s不是从0开始的?
2013-04-18 23:22
快速回复:算法找错
数据加载中...
 
   



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

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