Я не могу заставить мой оператор if выполняться правильно

Я боролся с той же проблемой, пытаясь сделать мое приложение будущим доказательством, но эти ребята заставили меня идти в правильном направлении. Я фактически не проверяю номер, чтобы увидеть, работает ли он или нет, я просто пытаюсь убедиться, что была введена серия чисел, которая может иметь или не иметь расширение.

Худший случай если пользователь должен был вытащить неформатированный номер из XML-файла, они все равно просто набрали числа на номерной панели телефона 012345678x5, и никаких реальных причин сохранить его довольно. Этот тип RegEx для меня выдаст что-то вроде этого:

\d+ ?\w{0,9} ?\d+
  • 01234467 extension 123456
  • 01234567x123456
  • 01234567890
-1
задан Antti Haapala 24 March 2019 в 19:46
поделиться

2 ответа

Кажется, у вас есть какая-то ошибка в логике вашей программы. Я бы переписал

for ( d = 0; d <= deposits; ++d )
{       
    printf ("\nEnter the number of deposits (0-5):");
        scanf ("%i", &d);
    deposits = deposits + d;

    if ( deposits > 5 || deposits < 0 )
    {
        printf ("*** Invalid number of deposits, please re-enter.");
            deposits = deposits - d;
    }/*end of if statement for deposits*/       
}/*end of for loop for deposits*/

как

do {
    printf ("\nEnter the number of deposits (0-5):");
    scanf ("%i", &deposits);

    if (deposits < 0 || deposits > 5) {
        printf ("*** Invalid number of deposits, please re-enter.");
    } else {
        break;
    }
} while (1);

То же самое можно сделать для других циклов.

Идея состоит в том, чтобы запросить ввод как минимум один раз и проверить, является ли введенное значение допустимым для вашего случая, если нет, запросите ввод еще раз.

0
ответ дан Maxim Stepanov 24 March 2019 в 19:46
поделиться

Вы используете одну и ту же переменную d в цикле for и для ввода данных. Это вызывает проблему. Используйте следующий код: -

int dep;
for ( d = 0; d <= deposits; ++d )
{       
    printf ("\nEnter the number of deposits (0-5):");
        scanf ("%i", &dep);
    deposits = deposits + dep;

    if ( deposits > 5 || deposits < 0 )
    {
        printf ("*** Invalid number of deposits, please re-enter.");
            deposits = deposits - dep;
    }/*end of if statement for deposits*/  
    else break;     
}/*end o
0
ответ дан MeSterious 24 March 2019 в 19:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: