例
1フレーム目1回目は= 10
2フレーム目1回目は= 10
3フレーム目1回目は= 2
1フレーム目終了時点でのスコアは22点
3フレーム目2回目は= 3
2フレーム目終了時点でのスコアは37点
#include <stdio.h>
int main()
{
while(1)
{
int score[10][2] = {0,0};
int strike = 0;
int total_score = 0;
int i;
/*一投で終わるか二投で終わるかの処理*/
for (i = 0; i < 9; i++) {
printf(" %dフレーム目1回目= ",i+1); /*一投目*/
scanf("%d", &score[i][0]);
if (score[i][0] != 10) { /*ストライクでなければ二投目*/
printf(" %dフレーム目2回目= ",i+1);
scanf("%d", &score[i][1]);
}
}
/*最終フレームのスコア計算*/
printf("10フレーム目1回目= ");
scanf("%d", &score[9][0]); /*一投目*/
printf("10フレーム目2回目= ");
scanf("%d", &score[9][1]); /*二投目*/
if (score[9][0] == 10 || score[9][0] + score[9][1] == 10) { /*最終フレームで一投目がストライクか二投目までスペアだったら*/
printf("10フレーム目3回目= "); /*三投目を投げる*/
scanf("%d", &strike);
}
/*1フレーム目から9フレーム目までのスコア計算*/
for (i = 0; i < 9; i++) {
if (score[i][0] == 10) { /*一投目がストライクだったら*/
if (i != 8 && score[i + 1][0] == 10) { /*1~8フレームまでで次のフレームがストライクだったら*/
total_score = total_score + 10 + score[i + 1][0] + score[i + 2][0]; /*次の2フレームまでの結果を足す*/
printf("%dフレーム目終了時点のスコアは%d点\n",i+1, total_score);
} else {
total_score = total_score + 10 + score[i + 1][0] + score[i + 1][1]; /*次のフレームの一投目と二投目を足す*/
printf("%フレーム目終了時点のスコアは%d点\n",i+1, total_score);
}
} else if ((score[i][0] + score[i][1]) == 10) { /*スペアだったら*/
total_score = total_score + 10 + score[i + 1][0]; /*次の1フレームの結果を足す*/
printf("%dフレーム目終了時点のスコアは%d点\n",i+1, total_score);
} else {
total_score = total_score + score[i][0] + score[i][1]; /*次のフレームの一投目と二投目を足す*/
printf("%dフレーム目終了時点のスコアは%d点\n",i+1, total_score);
}
}
total_score = total_score + score[i][0] + score[i][1] + strike;
printf("********合計スコアは%d点********\n", total_score);
}
}