Проверка ввода содержит только целые числа или числа с плавающей запятой - PullRequest
0 голосов
/ 05 июля 2019

Я пишу простую программу калькулятора налогов для школьного проекта и сталкиваюсь с некоторыми проблемами с проверкой входных данных и мне нужна помощь. Мне нужно выполнить проверку, чтобы убедиться, что входные данные являются целыми числами или с плавающей точкой. Входные данные не могут содержать символы любого вида, а входные данные не могут содержать отрицательное целое число или число с плавающей запятой. Код, который у меня есть, указан ниже.

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

    #include <stdio.h>

    int main()
    {
    float fPrice;
    float fTax=0.0f;
    float fFinalPrice;
    int dividend; 
    int iPrice;
    //int iFinalPrice;
    float fInput;
    int x;
    double dTax;
    dividend = 100;
    printf("Enter sales tax rate as a whole number (e.g. 1, 6, 8, 10): ");
    scanf("%lf", &dTax);
    while((dTax < 1.0) && (dTax != (int)dTax))
    {
        printf("ERROR: Invalid input received.\n");
        printf("Enter sales tax rate as a whole number (e.g. 1, 6, 8, 10): ");
        scanf("%lf", &dTax);
    }
    fTax = dTax/dividend;
    //printf("\nThe converted Tax Rate: %.2f\n", fTax);
    printf("Enter cost (e.g. 10.43 or 10: ");
    scanf("%f", &fPrice); // set price input to a float var.
    while((fPrice < 1.0) && (fPrice != (int)fPrice))
    {
        printf("ERROR: Invalid input received.\n");
        printf("Enter cost (e.g. 10.43 or 10: ");
        scanf("%ff", &fPrice);
    }
    iPrice=fPrice; // take the float and assign it to the int var. The int var will always be a whole number regardless of what value is passed in.
    if(iPrice==fPrice) // look at int var and if == to float var then the value can be considered to be an integer.
    {
        fFinalPrice = iPrice + (iPrice*fTax);
        printf("Price with tax is $%.2f", fFinalPrice);
    }
    else // price is a float
    { 
    fFinalPrice = fPrice + (fPrice*fTax);
    printf("Price with tax is $%.2f", fFinalPrice);
    }
    return 0;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...