Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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;
}