昨天转正,做了道恶心的题,保龄球计分的,大家给点意见

国士无双 2011-10-08 10:37:18
编程题目如下:
第一题:
打保龄球是用一个滚球去打出十个站立的柱,将柱击倒。一局分十轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的;滚球情况有关。即,某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下:
(1) 若某一轮的第一次滚球就击倒全部十个柱,则本轮不再滚球。(若是第十轮则还需另加两次滚球)。该轮得分为本次倒柱数 10 与以后两次滚球所击倒柱数之和。
(2) 若某一轮的第一次滚球未击倒十个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全部十个柱,则本轮不再滚球(若是第十轮则还需另加一次滚球),该轮得分为本次倒柱数10与以后一次滚球所击倒柱数之和。
(3) 若某一轮的两次滚球未击倒全部十个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数这和。
总之,若一轮中一次滚球或两次滚球击倒十个柱,则本轮得分是本轮首次滚球开始的连续三次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足十个,则本轮得分即为这两次击倒柱数之和。
以实例说明如下:
轮 1 2 3 4 5 6 7 8 9 10
各轮第一次得分10 10 10 7 9 8 8 10 9 10 8 #p#
各轮第二次得分/ / / 2 1 1 2 / 1 / 2-
各 轮 得 分30 27 19 9 18 9 20 20 20 20
累 计 总 分30,57,76,85,103,112,132,152,172,192
要求:
1.使用你熟悉的程序语言(C#,java,javascript 之一)写一个程序可以方便的对保龄球运动项目进行记分;
界面布局合理,能直观的显示每次得分,每轮得分和累计得分的情况
2.分值录入操作合理,需要有必要的无效值判断处理(比如每次击球得分不会>10等等)
3.每场比赛结束后将本次比赛数据保存下来。(选择文件或者数据库均可),

我昨天是用JAVA直接在控制台输出的,每次由我来输入击倒的数量,然后得分。我的代码算法太乱了,就不贴出来见笑了,大家还有写什么别的好办法吗?网上COPY的代码就不要来了,给点好的思路什么的,关于第2点验证和将最终数据保存成文件怎么弄啊~!希望大家一起交流下
...全文
6906 50 打赏 收藏 转发到动态 举报
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
zly880818 2011-10-12
  • 打赏
  • 举报
回复
终于看懂题目要求了,编了一个:

#include<stdio.h>
int main()
{
int scor1[11] = {0};//第一轮得分
int scor2[11] = {0};//第二轮得分
int scor3[10] = {0};//每轮得分
int total[10] = {0};//总得分

int i = 0;

for(i=0;i<11;)
{
printf("input the %d score\n",i+1);
scanf("%d,%d",&scor1[i],&scor2[i]);
if(scor1[i]>10 || (scor1[i]+scor2[i]>10))
{
printf("error!\n");
continue;
}
i++;
}

for(i=0;i<10;i++)
{
if(10 == scor1[i])//本轮第一次击倒全部10个球
{
if(10 == scor1[i+1])
{
scor3[i] = scor1[i] + scor1[i+1] +scor1[i+2];
}
else
{
scor3[i] = scor1[i] + scor1[i+1] +scor2[i+1];
}
}
else//没有击倒全部10个球
{
if(10 > (scor1[i] + scor2[i]))
{
scor3[i] = scor1[i] + scor2[i];
}
else if(10 == (scor1[i] + scor2[i]))
{
scor3[i] = scor1[i] + scor2[i] + scor1[i+1];
}
else
{
printf("score error!\n");
return -1;
}
}
if(!i)
{
total[i] += scor3[i];
}
else
{
total[i] += total[i-1]+scor3[i];
}
}

for(i=0;i<10;i++)
{
printf("total[%d]=%d\n",i,total[i]);
}
return total[9];
}
zly880818 2011-10-12
  • 打赏
  • 举报
回复
题目没咋看明白,不知道是因为我笨还是题目描述不够清楚
蠢蠢的程序园 2011-10-11
  • 打赏
  • 举报
回复
叼!傻B面试题。有两个可能一个,是公司之前做项目,在炫一下,第二个可能就是楼上说的,之前做的项目之类的没人捡手尾。
leer168 2011-10-11
  • 打赏
  • 举报
回复
占座占座
seeQe 2011-10-11
  • 打赏
  • 举报
回复
太累了,做算法没有什么问题,就怕做界面
ploto 2011-10-10
  • 打赏
  • 举报
回复
在内存中那个表格,每一个表项都记录当前分数和累计分数,计算累计分数时,看看上一次及上上一次的当前分数就可以了。
yuliya1027 2011-10-10
  • 打赏
  • 举报
回复
建模不容易
hsc456 2011-10-10
  • 打赏
  • 举报
回复
一看就晕, 走人算了, 哈哈.......
林石公 2011-10-10
  • 打赏
  • 举报
回复
好像是重构方面的一本书里的例子讲的就是介玩意
xflr123 2011-10-10
  • 打赏
  • 举报
回复
不是很难 不过 细细心心的做一遍也有点出入
walkman_22 2011-10-10
  • 打赏
  • 举报
回复
30万韩币差不多。

可以先画个三五轮,找找变量和计算公式,其实和初高中的数学竞赛题差不多,只不过用计算机的方式来描述计算了。
chenglei199012 2011-10-10
  • 打赏
  • 举报
回复
好像是一本书中的例子
lzo_ozl 2011-10-10
  • 打赏
  • 举报
回复
看题目就看了好久了
june5253 2011-10-10
  • 打赏
  • 举报
回复
#include<time.h>
#include<iostream>

using namespace std;

//a、b、r分别记录第一次投球得分、第二次投球得分、每轮投球得分,数组初始化为0
int a[12], b[11], r[10], i;

void main()
{
srand((int)time(0));

//随机产生投球分数
for (i = 0; i < 10; i++)
{
int q = rand()%11;
if (q == 10)
{
a[i] = 10;
b[i] = 0;
if (i == 9)
{
a[i+1] = rand()%11;
if (a[i+1] == 10)
{
a[i+2] = rand()%11;
}
else
{
b[i+1] = rand()%(11-a[i+1]);
}
}
}
else
{
a[i] = q;
b[i] = rand()%(11-q);
if(i == 9)
{
if (a[i] + b[i] == 10)
{
a[i+1] = rand()%11;
}
}
}
}

//统计每轮的分数
for (i = 0; i < 10; i++)
{
if (a[i] == 10)
{
if (a[i+1] == 10)
{
r[i] = 20 + a[i+2];
}
else
{
r[i] = 10 + a[i+1] + b[i+1];
}
}
else
{
r[i] = a[i] + b[i];
if (r[i] == 10)
{
r[i] += a[i+1];
}
}
}

//输出分数
cout<<"各轮第一次得分:"<<endl;
for(i = 0; i < 12; i++)
{
cout<<a[i]<<" ";
}
cout<<endl<<endl;
cout<<"各轮第2次得分:"<<endl;
for(i = 0; i < 11; i++)
{
cout<<b[i]<<" ";
}
cout<<endl<<endl;
cout<<"各轮得分:"<<endl;
for(i = 0; i < 10; i++)
{
cout<<r[i]<<" ";
}
cout<<endl<<endl;
cout<<"累计总分:"<<endl;
int t = 0;
for(i = 0; i < 10; i++)
{
t += r[i];
cout<<t<<" ";
}
cout<<endl<<endl;

}
JinHerRen 2011-10-09
  • 打赏
  • 举报
回复
天啊 这是什么啊 看的头都大了
wingson_shen 2011-10-09
  • 打赏
  • 举报
回复
《敏捷软件开发:原则、模式与实践 》 第六章 一次编程实践

保龄球记得的结对编程。。

去下载看看吧。。。


加上PDF下载地址吧。
http://download.csdn.net/detail/java719904878/1025509(5分)

http://ishare.iask.sina.com.cn/f/5410737.html?from=like(0分)


寂寞来支烟 2011-10-09
  • 打赏
  • 举报
回复
我来溜溜。
godlikett 2011-10-09
  • 打赏
  • 举报
回复
好 我很 慌张 刚学c++ 压力很大
小弟是自学 刚学过vb 感觉b很方便 但是大家都用 vc 我就又过来学 vc了 嗨
天蛾糊 2011-10-09
  • 打赏
  • 举报
回复
看题目就看了好久了
打油的程序员 2011-10-09
  • 打赏
  • 举报
回复
还有输出 我的程序 在eclipse中输出格式 和 在文件中输出格式 有点区别

希望高手无私指点,怎么消除这种差别
加载更多回复(30)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧