这是一个家庭作业问题。我目前正在编写一个计算保龄球得分的程序。我的逻辑是使用多维数组,其中 9 帧作为行,2 个抛出作为列。我将在最后考虑第 10 帧,因为它具有可能多达三卷的独特性质。增加罢工和备件也使问题复杂化,所以我觉得我需要使用阵列来跟踪过去和未来的滚动。我知道这不是必需的,但我想不出其他方法。
到目前为止,这是我的代码:
for (i=0; i<9; i++)
{
for (j=0; j<2; j++)
{
scanf("%d", &score[i][j]);
tempTotal += score[i][j];
}
}
printf("temporary: %d\n", tempTotal);
//strike
for (i=0; i<9; i++)
{
for (j=0; j<2; j++)
{
if(score[i][0] == 10 && score[i][1] == 0)
{
total = tempTotal + score[i+1][0] + score[i+1][1];
}
//spare
else if ((score[i][0] + score[i][1]) == 10)
{
total = tempTotal + score[i+1][0];
}
else
{
total = tempTotal;
}
}
}
printf("result: %d\n", total);
这是我的进度更新。根据评论,我首先使用 scanf 来填充我的多维数组。然后我查看了阵列以说明罢工和备件的情况。该代码一直有效,直到有连续的罢工和/或备用。如何计算连续备件和/或罢工的累积?我是否应该在我的罢工和备用条件中添加额外的条件语句来解释如果 score[i+1][0] 是另一个罢工,在这种情况下我必须考虑额外的 10 分加上接下来的三个投掷?我怎样才能做出这样一个全面搜索整个数组的条件语句?任何想法,将不胜感激。谢谢你。