Как вернуться к началу кода после оператора if C language - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь заставить мою программу снова запускаться с самого начала после того, как пользователь выбрал опцию из меню. Когда пользователь выбирает 1, а затем вводит сумму пожертвования, я хочу, чтобы программа запускалась снова и показывала меню What would you like to do?, а не просто перезапускала только оператор if.

Следует ли мне добавить для l oop внутри оператора if для выполнения sh this? спасибо за помощь.

 printf("What would you like to do?\n");
    printf("      1 - Donate\n");
    printf("      2 - Invest\n");
    printf("      3 - Print balance\n");
    printf("      4 - Exit\n");
    printf("\n");

    //scans menu choice
    scanf("%d", &menu_option);

    if(menu_option==1)
    {
    printf("How much do you want to donate?\n");
    scanf("%lf", &donation);
    donations_made++;
    current_Balance = initial_Balance + donation;
    }

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Когда пользователь выбирает 1, а затем вводит сумму пожертвования, я хочу, чтобы программа снова запустилась и показала меню

просто выполните

for(;;) {
  printf("      1 - Donate\n");
  printf("      2 - Invest\n");
  printf("      3 - Print balance\n");
  printf("      4 - Exit\n");
  printf("\n");

  //scans menu choice
  scanf("%d", &menu_option);

  if(menu_option==1)
  {
    printf("How much do you want to donate?\n");
    scanf("%lf", &donation);
    donations_made++;
    current_Balance = initial_Balance + donation;
    // NO BREAK
  }
  else {
    .... management of other cases
    break;
  }
}

или если вы предпочитаете

do {
  printf("      1 - Donate\n");
  printf("      2 - Invest\n");
  printf("      3 - Print balance\n");
  printf("      4 - Exit\n");
  printf("\n");

  //scans menu choice
  scanf("%d", &menu_option);

  if(menu_option==1)
  {
    printf("How much do you want to donate?\n");
    scanf("%lf", &donation);
    donations_made++;
    current_Balance = initial_Balance + donation;
  }
  // ... management of other cases
} while (menu_option==1);

Но вы уверены, что не хотите переделывать также в случаях 2 и 3? В этом случае замените while (menu_option==1); на while (menu_option != 4); или в первом предложении сделайте break только тогда, когда menu_option равно 4

Я также рекомендую вам проверить возвращаемое значение scanf("%d", &menu_option);, чтобы быть уверенным. во входных данных было указано действительное целое число и было установлено menu_option

0 голосов
/ 29 мая 2020
#include <stdio.h>

int main()

{
 int menu_option;
 double donation;
 int donations_made = 0;
 int current_Balance = 0;
 int initial_Balance = 0;

 for (;;)
 {

    printf("What would you like to do?\n");
    printf("      1 - Donate\n");
    printf("      2 - Invest\n");
    printf("      3 - Print balance\n");
    printf("      4 - Exit\n");
    printf("\n");

    //scans menu choice
    scanf("%d", &menu_option);

            if (menu_option==1)
            {
                   printf("How much do you want to donate?\n");
                   scanf("%lf", &donation);
                   donations_made++;
                   current_Balance = initial_Balance + donation;
             }
        else if (menu_option == 4)
                 break;

   }
}
...