これは宿題の問題です。現在、ボウリングのスコアを計算するプログラムを作成中です。私のロジックは、行として 9 フレーム、列として 2 つのスローを持つ多次元配列を使用することです。10 番目のフレームについては、最大 3 つのロールがある可能性があるため、最後に説明します。ストライクとスペアの追加も質問を複雑にするため、配列を使用して過去と将来のロールを追跡する必要があると感じました. 必須ではないことはわかっていますが、別の方法は考えられませんでした。
これまでの私のコードは次のとおりです。
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 を使用して多次元配列を埋めました。そして、ストライクとスペアのケースを説明するために配列を調べました。コードは、連続したストライクおよび/またはスペアがあるまで機能します。連続したスペアやストライクの蓄積をどのように説明すればよいですか? スコア[i+1][0]が別のストライクである場合、その追加の 10 ポイントと次の 3 つのスローも考慮しなければならない場合を説明するために、ストライクおよびスペア条件内に追加の条件文を追加する必要がありますか? そのような配列全体を包括的に検索するような条件ステートメントを作成するにはどうすればよいですか? どんなアイデアでも大歓迎です。ありがとうございました。