user3500780
user3500780

Reputation: 11

How to make a function in 'C' to go to start of program

I am a beginner in C... I have made a made a calculator type program which uses four basic functions in C using if-else loop. I want when the program comes to end(after the user has added, subtracted etc. etc. then there is a option "Y/N" so that the program can be restarted???" Here is the sample of the code

  #include<stdio.h>
int main()
{
    int choi;
    printf("*****Interactive Calculator*****");
    printf("\n\nChoose an option...");
    printf("\n\n1. Addition\n");
    printf("\n2. Subtraction");
    printf("\n\n3. Multiplication");
    printf("\n\n4. Division");
    printf("\n\nPlease Enter your Choice : ");
    scanf("%d",&choi);
if(choi==4)
    {
        float a=0,b=0,c=0;
        printf("\nEnter Divident :");
        scanf("%d",&a);
        printf("\nEnter the Divisor :");
        scanf("%d", &b);
        c=a/b;
        printf("\nThe Quotient is : %d\n\n",c);
        char choice;
        printf("Do you want to try it again?(Y/N) ");
        scanf("%c", &choice);
        // I want a code here so that the program can be restarted
        getch();
        return 0;
    }
    else
    {
        printf("\nErr#404-Invalid Character! Please Enter 1,2 or 3 !\n\n");
    }
end:
getch();
return 0;
}

Upvotes: 1

Views: 2511

Answers (6)

Himanshu Aggarwal
Himanshu Aggarwal

Reputation: 1809

By using do-while loop, which is generally used for menu-driven programs.

#include<stdio.h>
int main()
{
    int choi;
char choice;

do{
printf("*****Interactive Calculator*****");
    printf("\n\nChoose an option...");
    printf("\n\n1. Addition\n");
    printf("\n2. Subtraction");
    printf("\n\n3. Multiplication");
    printf("\n\n4. Division");
    printf("\n\nPlease Enter your Choice : ");
    scanf("%d",&choi);
if(choi==4)
    {
        float a=0,b=0,c=0;
        printf("\nEnter Divident :");
        scanf("%d",&a);
        printf("\nEnter the Divisor :");
        scanf("%d", &b);
        c=a/b;
        printf("\nThe Quotient is : %d\n\n",c);
        char choice;
        printf("Do you want to try it again?(Y/N) ");
        scanf("%c", &choice);
        // I want a code here so that the program can be restarted
        getch();
        return 0;
    }
    else
    {
        printf("\nErr#404-Invalid Character! Please Enter 1,2 or 3 !\n\n");
    }

printf("Want to continue (y/n)?");
scanf("%d", &choice);  // Enter the character
}while (choice == 'y' || choice == 'Y');
end:
getch();
return 0;

P.S.: I would suggest you to use switch case, instead of if-else statements to do the job.

Upvotes: 0

200_success
200_success

Reputation: 7582

A do-while loop would be most suitable for this purpose.

int main() {
    char choice;
    do {
        // Calculator stuff here...

        printf("Do you want to try it again? (Y/N) ");
        scanf("%c", &choice);
    } while (choice == 'Y');
}

Edit: As it turns out, there is another problem with the program above, which is that scanf() reads a character but leaves a Newline character in the buffer. Therefore, if the user types YEnter, the program will repeat once (choice == 'Y' the first time), then exit (choice == '\n' the second time).

It is therefore necessary to keep reading until the Newline has been consumed.

int main() {
    char choice;
    do {
        // Calculator stuff here...

        printf("Do you want to try it again? (Y/N) ");
        choice = getchar();
        while (choice != '\n' && getchar() != '\n') {};
    } while (choice == 'Y' || choice == 'y');
}

Upvotes: 2

Susahrut
Susahrut

Reputation: 11

You can also use a goto:

   int main() {
     ...
     if (c=='y') {
       main();
     } else { 
       goto end;
     }
     end:
       ...
   }

Upvotes: -2

Himanshu
Himanshu

Reputation: 4395

you can try like this, avoid go to

 #include<stdio.h>
 int main()
 {
      int choi;
      while(true)
      {
          printf("*****Interactive Calculator*****");
          printf("\n\nChoose an option...");
          printf("\n\n1. Addition\n");
          printf("\n2. Subtraction");
          printf("\n\n3. Multiplication");
          printf("\n\n4. Division");
          printf("\n\n5. Exit");
          printf("\n\nPlease Enter your Choice : ");
          scanf("%d",&choi);
          if(choi==1)
          {
          }
          else if(choi==2)
          {
          }
          else if(choi==3)
          {
          }
          else if(choi==4)
          {
          }
          else if(choi==5)
          {
           return 0;  //exit(0);
          }
          else
          {
               printf("\nErr#404-Invalid Character! Please Enter 1,2,3,4 or 5 !\n\n");
          }   
      }
 return 0;
 }

Upvotes: 0

JajaDrinker
JajaDrinker

Reputation: 662

char continue = 'Y'

while (continue == 'Y') {
   ... //Normal code here
   printf("Again?")
   scanf("%c",&continue)

}

Upvotes: 0

PearsonArtPhoto
PearsonArtPhoto

Reputation: 39698

The best way would be to do some sort of a while loop.

int goAgain=1;
while (goAgain==1) {
   ... //Normal code here
   printf("Again?")
   scanf("%c",&again)
   if (again=='N') {
       goAgain=0;
   }
}

Or you could use a do-while loop as well

do {
       ... //Normal code here
       printf("Again?")
       scanf("%c",&again)
} while (again=='Y')

Basically, this will keep looping over the bit of code over and over until the person types N to end it.

Upvotes: 2

Related Questions