黄金点游戏二人结对项目总结

      经过近两个星期结对项目编程,从中收获了很多也发现了许多自身存在的问题。结对编程过程中比如讨论分工问题,起初不知如何下手,后来经过慢慢讨论有了比较合理的分工。我和我的同伴有着不同性格和工作方式,在做项目的过程中会有很多不同的思路和想法,编程习惯也不相同。他喜欢从整体入手,先想好程序的每一个环节,构思好整体后,才开始编程。就我而言,我习惯一层一层,循序渐进的进行编程,将每个环节做好然后进行下一项,虽然效率有点慢,但是对我来说,这种方式能让我在编程的时候少出错。我很喜欢我同伴预先做好整体构思的方法,很便捷,对于后面的编程我会尝试着用这种方式编写代码,这对培养大局观很有帮助。

  编程过程中,因为要考虑到局数和人数,所以就定义了一个二维数组,行标表示第几局游戏,列标表示人数,用二维数组来存储每个玩家输入的数据,然后计算黄金点,对每个玩家进行游戏评分,将得分放到另一个数组中。统计每轮个玩家游戏得分,输出最终得分,存入文件中。编程过程很顺利没有遇到太大问题,有一些小的错误很快就改正了。我们没有做界面,同学有用JAVA做的,界面做的非常好,我也正在学习JAVA。不过目前只能写个HELLO WORLD。

  对于游戏中的输入数值有减小的趋势这一现象我们在理想情况下做个假设,玩家的数据肯定是随机输入,那么平均值就和该组数据的中间值(数据从小到大排列)很接近,黄金点在平均值基础上乘0.618,约在前一半数据的中上部,即整组数据的30%左右(数据从小到达排列),如此一来大家就会发现胜者的数据往往比较小,自然而然在新一轮游戏开始时都会适当减小自己的数据。

程序代码:

#include <stdio.h>
#include <math.h>
#include<stdlib.h>
void main()
{
int a[20][20], grade[20], i, j, k1, k2, t, b, data, total = 0;
double min = 100, max = 0, average = 0;
FILE *fp;
char ch;
printf("请输入游戏局数:\n");
scanf_s("%d", &t);
printf("请输入游戏人数:\n");
scanf_s("%d", &b);
for (j = 0; j < b; j++)
{
grade[j] = 0;
}
for (i = 0; i < t; i++)
{
printf("第%d局游戏开始:\n", i + 1);
printf("请依次输入参与者的数据:\n");/*单局中输入相同数据者只有最先输入者得分*/
for (j = 0; j < b; j++)
{
scanf_s("%d", &data);
a[i][j] = data;
total = total + data;
}
average = total / b*0.618;
printf("黄金点为:%.4f", average);/*打印黄金点*/
for (j = 0; j < b; j++)
{
if (fabs(a[i][j] - average) < min)
{
min = fabs(a[i][j] - average);
k1 = j;
} /*寻找当前局距离黄金点最近的人*/
if (fabs(a[i][j] - average) > max)
{
max = fabs(a[i][j] - average);
k2 = j;
} /*寻找当前局距离黄金点最远的人*/
}
grade[k1] = grade[k1] + t; /*为胜者加分*/
grade[k2] = grade[k2] - 2; /*为负者减分*/
printf("输出本局得分:\n");
for (j = 0; j < b; j++)
{
printf("%d ", grade[j]);
}
printf("\n");
min = 100;
max = 0;
total = 0;
}
printf("游戏结束,各人得分如下:\n");
if ((fp = fopen("d:\\zmh.txt", "w+")) == NULL)
{
printf("cannot open file");
exit(1);
}
for (j = 0; j < b; j++)
{
printf("%d ", grade[j]); /*打印各人得分*/
if (grade[j] < 0)
{
grade[j] = abs(grade[j]);
ch = '-';
fputc(ch, fp);
}
ch = grade[j] + '0';
fputc(ch, fp);
ch = ' ';
fputc(ch, fp);



}
printf("\n");
max = 0;


for (j = 0; j < b; j++)
{

if (grade[j] > max)
{
max = grade[j]; /*比较出最高分数*/
}

}
for (j = 0; j < b; j++)
{
if (grade[j]==max)
printf("最高得分者是第%d人 %d分\n", j + 1, grade[j]);/*最高得分者可并列*/
}
fclose(fp);

getchar();
getchar();
}

转载于:https://www.cnblogs.com/xichi/p/5371470.html

基于SSM框架的智能家政保洁预约系统,是一个旨在提高家政保洁服务预约效率和管理水平的平台。该系统通过集成现代信息技术,为家政公司、家政服务人员和消费者提供了一个便捷的在线预约和管理系统。 系统的主要功能包括: 1. **用户管理**:允许消费者注册、登录,并管理他们的个人资料和预约历史。 2. **家政人员管理**:家政服务人员可以注册并更新自己的个人信息、服务类别和服务时间。 3. **服务预约**:消费者可以浏览不同的家政服务选项,选择合适的服务人员,并在线预约服务。 4. **订单管理**:系统支持订单的创建、跟踪和管理,包括订单的确认、完成和评价。 5. **评价系统**:消费者可以在家政服务完成后对服务进行评价,帮助提高服务质量和透明度。 6. **后台管理**:管理员可以管理用户、家政人员信息、服务类别、预约订单以及处理用户反馈。 系统采用Java语言开发,使用MySQL数据库进行数据存储,通过B/S架构实现用户与服务的在线交互。系统设计考虑了不同用户角色的需求,包括管理员、家政服务人员和普通用户,每个角色都有相应的权限和功能。此外,系统还采用了软件组件化、精化体系结构、分离逻辑和数据等方法,以便于未来的系统升级和维护。 智能家政保洁预约系统通过提供一个集中的平台,不仅方便了消费者的预约和管理,也为家政服务人员提供了一个展示和推广自己服务的机会。同时,系统的后台管理功能为家政公司提供了强大的数据支持和决策辅助,有助于提高服务质量和管理效率。该系统的设计与实现,标志着家政保洁服务向现代化和网络化的转型,为管理决策和控制提供保障,是行业发展中的重要里程碑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值