2016-06-19 2 views
-2
#include <stdio.h> 
#include <cs50.h> 

int main(void) 
{ 
    printf("Give me the length of your shower in minutes: \n"); 
    int x = GetInt(); 
    int b = x*12; 

    if (x <= 0) 
     { 
     printf("Please give me a valid input.\n"); 
     } 

    else   
     printf("In %i minutes you consumed %i bottles of water!\n", x, b); 
} 

Это мой код для алгоритма, который принимает минуты душа и преобразует его в бутылки с водой.Как заставить консоль запрашивать пользователя для ввода, пока пользователь не введет положительное целое число в C?

Я попытался написать его по-разному и даже используя «scanf», но ничего не сработало. Код работает отлично, за исключением того, что когда пользователь вводит то, что равно нулю или отрицательное число, он просто печатает «Это не положительное целое число». перед тем как программа просто выключится. Мне нужно, чтобы он возвращался назад и получал еще один вход от пользователя, пока он не вернет что-то положительное. Я пробовал пару делать/пока и для циклов, но я не думаю, что я делаю это правильно. Может кто-нибудь, пожалуйста, помогите новичку-кодеру?

+0

Вы должны использовать 'while' петлю. –

ответ

0

Ниже будет просто повторить запрос, пока действительное значение не введено, а затем распечатать его результат:

int main(void) 
{ 
    int x = 0 ; 

    do 
    { 
     printf("Give me the length of your shower in minutes:\n") ; 
     x = GetInt() ; 

    } while(x <= 0) ; 

    int b = x * 12 ; 
    printf("In %i minutes you consumed %i bottles of water!\n", x, b) ; 

    return 0 ; 
} 
0

Для повторения кода требуется «петля», в c есть for, while, do while. Такие как:

while (true) { 
    x = GetInt(); 
    if (x <= 0) { 
     printf("Please give me a valid input.\n"); 
    } else { 
     // do something else 
    } 
} 
1

Где «сделать что-то еще» означает также выйти из цикла: p.

while (true) { 
    x = GetInt(); 
    if (x <= 0) { 
     printf("Please give me a valid input.\n"); 
    } else { 
     // do something else 
     // and leave 
     break; 

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