2014-02-14 9 views
0

Так что это функция из проекта игрового автомата, над которым я работаю. и мне интересно, есть ли способ работать так, что после утверждения if, утверждающего, что «ваши кредиты слишком малы, чтобы играть», программа заканчивается. Также я могу сделать так, чтобы программа снова запрашивала ставку, если ставка> кредиты или ставка < 2 любые ответы оценили.Как закончить программу с помощью оператора if?

slot validate(slot s) 
{ 
    printf ("Your available credit is %f\n", credits); 
    if (credits >= 2) 
    { 
     printf ("How many credits would you like to bet?\n"); 
     scanf("%f", &s.bet); 
     if (s.bet> credits) 
     { 
      printf("you do not have enough credits for that bet\n"); 
      printf("your available credits are %f", credits); 
     } 

     if (s.bet < 2) 
     { 
      printf("Error! You must bet at least to credits to play!"); 
     } 

     if (credits < 2) 
     { 
      printf ("your credits are too low to play!"); 
     } 
    } 

    return s; 
} 
+1

И вы действительно думаете, что нет способа? Каковы ваши идеи до сих пор? Что вы пробовали? –

+3

Обычно вы можете выйти из своей программы с помощью 'exit (code)', где вы должны использовать число для 'code', обычно' 0', чтобы указать успех, или ненулевое значение для указания отказа. –

+0

'if (condition) exit (-1);' – chux

ответ

1
if (credits < 2) 
{ 
    printf ("your credits are too low to play!"); 
    exit(EXIT_SUCCESS);  
} 
+0

Возможно, 'exit (EXIT_FAILURE);' если слишком мало кредитов является ошибкой. –

+0

Да, возможно. Я всегда считаю FAILURE ошибкой программного обеспечения, а не ошибкой пользователя (из-за слишком большого количества кредитов). Я думаю, это личное предпочтение! –

+1

В этом случае я предлагаю 'exit (EXIT_SUCCESS);' для переносимости. –

2

Дешево ответ на вызов функции exit().

Однако exit() не возвращается - программа завершается немедленно. Таким образом, ваша функция validate() не вернется к вызывающей программе. Это проблема, если есть какие-либо действия по очистке, которые должна выполнять ваша программа, например сохранение состояния (оценка, что угодно) в файл. Лучший способ - вернуть некоторое значение от validate(), которое указывает вызывающему абоненту, что программа должна закончиться. Вы можете сделать это, вернув int и переместив возвращаемое значение slot в аргумент функции, который может установить тело функции. Затем вызывающий абонент может выполнить любую очистку, необходимую ему, и вернуть управление его вызывающему абоненту и т. Д.

Смежные вопросы