我需要限制我的程序不接受我的程序中的任何小数值

时间:2015-01-29 04:23:33

标签: c++ functional-programming decimal

我被告知我必须拒绝任何小数,我需要再次输入数字。我尝试了这段代码,但它仍然只是在确认错误之前进入整个过程。尝试该程序并判断我:D这是我的代码:

    #include<iostream>
#include<cstdlib>
#include<cmath>
#include<limits>
using namespace std;



int getInt()
    {
    int m=0;


    while (!(cin >> m))
        {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(),'\n');
        cout << "Please input a proper 'whole' number: " ;

        }
    return (m);
    }


int main()
{
    double x;
    int q,w,e,choice;
    cout<<"Welcome! This program will sort out the integers you will input!\nPlease input number of integers: ";
    cin>>q;
    cout<<endl<<endl;
    int* inc= new int[q];
    int* dec= new int[q];
    for(int p=1;p<=q;++p)
    {
        w=p;
        e=p;

    cout<<"Input integer number "<<p<<": ";
    x =getInt();

    while(e>0 && inc[e-1]>x)
    {
        inc[e]=inc[e-1];
        e--;
    }

    while(w>0 && dec[w-1]<x)
    {
        dec[w]=dec[w-1];
        w--;
    }
    inc[e]=x;
    dec[w]=x;
    }

    cout<<endl;
    cout<<"What order do you prefer? Input 1 for increasing and 2 if decreasing.\nChoice: ";
    cin>>choice;
    while(choice<1 || choice>2)
    {
        cout<<"Please input a correct choice! Try again!\nChoice: ";
        cin>>choice;
    }
    if(choice==1)
    {

    for(int i=0;i<q;++i)
    cout<<inc[i]<<"\t";
    cout<<endl;
    }
    else
    {

    for(int i=1;i<=q;++i)
    cout<<dec[i]<<"\t";
    cout<<endl;
    }
    system("PAUSE");
}

希望得到你的帮助:)

2 个答案:

答案 0 :(得分:0)

尝试复制要测试的数字并将其转换为int,然后返回到double,然后检查是否相等。如果它们相等,那么你有一个int,如果它们不是,你有一个小数:

#include <iostream>

using namespace std;

int main()
{
    double a = 5;
    double c = 5.5;
    double b = a;
    bool test1 = (double)((int)b) == a; //true!
    b = c;
    bool test2 = (double)((int)b) == c; //false!
    cout << test1 << endl;
    cout << test2 << endl;

    return 0;
}

答案 1 :(得分:0)

您可以尝试使用modulo。 只是一个想法,希望它有所帮助。

bool flag = false;
While (flag == false){
cin>>number;

if ((number % 1) != 0){
flag = false;
}
else{
flag = true;
}
cin.clear();
}