Fix this so that the do more works. Also feel free to make it more concise overa
ID: 3574181 • Letter: F
Question
Fix this so that the do more works. Also feel free to make it more concise overall ;)
code:
#include <stdio.h>
int main() {
int b1[11]={0};
int b2[10]={0};
int score[10]={0};
int i=0,x1=0,x2=0,flag=0;
char ch = 'Y';
do{
printf(" Enter scores of your ten Frames : ");
for(i=0;i<9;i++) {
printf(" Frame - %d ",(i+1));
here:
printf("Ball - 1 : ");
scanf("%d", &b1[i]);
if(b1[i]<0||b1[i]>10) {
printf(" Illegal score. What did you actually roll? ");
goto here;
}
if(b1[i]==10) {
printf(" Congratulations! STRIKE :D ");
continue;
}
printf(" ");
label:
printf("Ball - 2 : ");
scanf("%d", &b2[i]);
if(b1[i]+b2[i]>10) {
printf(" Illegal score. What did you actually roll? ");
goto label;
}
if(b1[i]+b2[i]==10)
printf(" SPARE :O ");
if(b1[i]+b2[i]<10)
printf(" Get BETTER! ");
}
printf(" ");
printf(" Frame - 10 ");
l1:
printf("Ball - 1 : ");
scanf("%d", &b1[9]);
if(b1[9]<0||b1[9]>10) {
printf(" Illegal score. What did you actually roll? ");
goto l1;
}
if(b1[9]==10) {
printf(" Congratulations! STRIKE :D ");
flag=1;
}
printf(" ");
l2:
printf("Extra - 1 : ");
scanf("%d", &x1);
b1[10]=x1;
if(x1==10) {
printf(" Congratulations! STRIKE :D ");
flag=1;
}
if((flag==0)&&(b1[9]+x1>10)) {
printf(" Illegal score. What did you actually roll? ");
goto l2;
}
if(b1[9]+x1<10)
printf(" Get BETTER ");
if(b1[9]+x1==10) {
printf(" SPARE :O ");
flag=1;
}
if(flag==1) {
printf(" ");
l3:
printf("Extra - 2 : ");
scanf("%d", &x2);
if(x2>10||x2<0) {
printf(" Illegal score. What did you actually roll? ");
goto l3;
}
}
for(i=0;i<9;i++)
{
if(b1[i]==10)
{
if(b1[i+1]==10)
{
if(i==0)
{
score[i]=b1[i]+b1[i+1]+b1[i+2];
}
else
{
score[i]=score[i-1]+b1[i]+b1[i+1]+b1[i+2];
}
}
else
{
if(i==0)
{
score[i]=b1[i]+b1[i+1]+b2[i+1];
}
else
{
score[i]=score[i-1]+b1[i]+b1[i+1]+b2[i+1];
}
}
}
else if(b1[i]+b2[1]==10)
{
if(i==0)
{
score[i]=b1[i]+b2[i]+b1[i+1];
}
else
{
score[i]=score[i-1]+b1[i]+b2[i]+b1[i+1];
}
}
else
{
if(i==0)
{
score[i]=b1[i]+b2[i];
}
else
{
score[i]=score[i-1]+b1[i]+b2[i];
}
}
}//end of for
score[9]=score[8]+b1[9]+b2[9]+x1+x2;
printf(" Frame - 1 2 3 4 5 6 7 8 9 10 Xtr-1 Xtr-2 ");
printf("Ball - 1 : ");
for(i=0;i<10;i++) {
printf("%d ", b1[i]);
}
printf("%d %d ", x1, x2);
printf("Ball - 2 : ");
for(i=0;i<10;i++) {
printf("%d ", b2[i]);
}
printf(" ");
printf(" Score : ");
for(i=0;i<10;i++) {
printf("%d ", score[i]);
}
}
printf(" Do more <Y/N> ? ");
scanf(" %c", &ch);
}
while(ch == 'y' || ch == 'Y');
return 0;
}
Explanation / Answer
Now the do while is working. The error was that you have put wrong braces in your code.
The correct code is as follows:
#include <stdio.h>
int main() {
int b1[11]={0};
int b2[10]={0};
int score[10]={0};
int i=0,x1=0,x2=0,flag=0;
char ch = 'Y';
do{
printf(" Enter scores of your ten Frames : ");
for(i=0;i<9;i++) {
printf(" Frame - %d ",(i+1));
here:
printf("Ball - 1 : ");
scanf("%d", &b1[i]);
if(b1[i]<0||b1[i]>10) {
printf(" Illegal score. What did you actually roll? ");
goto here;
}
if(b1[i]==10) {
printf(" Congratulations! STRIKE :D ");
continue;
}
printf(" ");
label:
printf("Ball - 2 : ");
scanf("%d", &b2[i]);
if(b1[i]+b2[i]>10) {
printf(" Illegal score. What did you actually roll? ");
goto label;
}
if(b1[i]+b2[i]==10)
printf(" SPARE :O ");
if(b1[i]+b2[i]<10)
printf(" Get BETTER! ");
}
printf(" ");
printf(" Frame - 10 ");
l1:
printf("Ball - 1 : ");
scanf("%d", &b1[9]);
if(b1[9]<0||b1[9]>10) {
printf(" Illegal score. What did you actually roll? ");
goto l1;
}
if(b1[9]==10) {
printf(" Congratulations! STRIKE :D ");
flag=1;
}
printf(" ");
l2:
printf("Extra - 1 : ");
scanf("%d", &x1);
b1[10]=x1;
if(x1==10) {
printf(" Congratulations! STRIKE :D ");
flag=1;
}
if((flag==0)&&(b1[9]+x1>10)) {
printf(" Illegal score. What did you actually roll? ");
goto l2;
}
if(b1[9]+x1<10)
printf(" Get BETTER ");
if(b1[9]+x1==10) {
printf(" SPARE :O ");
flag=1;
}
if(flag==1) {
printf(" ");
l3:
printf("Extra - 2 : ");
scanf("%d", &x2);
if(x2>10||x2<0) {
printf(" Illegal score. What did you actually roll? ");
goto l3;
}
}
for(i=0;i<9;i++)
{
if(b1[i]==10)
{
if(b1[i+1]==10)
{
if(i==0)
{
score[i]=b1[i]+b1[i+1]+b1[i+2];
}
else
{
score[i]=score[i-1]+b1[i]+b1[i+1]+b1[i+2];
}
}
else
{
if(i==0)
{
score[i]=b1[i]+b1[i+1]+b2[i+1];
}
else
{
score[i]=score[i-1]+b1[i]+b1[i+1]+b2[i+1];
}
}
}
else if(b1[i]+b2[1]==10)
{
if(i==0)
{
score[i]=b1[i]+b2[i]+b1[i+1];
}
else
{
score[i]=score[i-1]+b1[i]+b2[i]+b1[i+1];
}
}
else
{
if(i==0)
{
score[i]=b1[i]+b2[i];
}
else
{
score[i]=score[i-1]+b1[i]+b2[i];
}
}
}//end of for
score[9]=score[8]+b1[9]+b2[9]+x1+x2;
printf(" Frame - 1 2 3 4 5 6 7 8 9 10 Xtr-1 Xtr-2 ");
printf("Ball - 1 : ");
for(i=0;i<10;i++) {
printf("%d ", b1[i]);
}
printf("%d %d ", x1, x2);
printf("Ball - 2 : ");
for(i=0;i<10;i++) {
printf("%d ", b2[i]);
}
printf(" ");
printf(" Score : ");
for(i=0;i<10;i++) {
printf("%d ", score[i]);
}
printf(" Do more <Y/N> ? ");
scanf(" %c", &ch);
}
while(ch == 'y' || ch == 'Y');
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.