1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

How do you give an error for someone entering a letter

  1. Oct 7, 2012 #1
    Code (Text):
     #include <iostream>
    #include <cstdlib>
    #include <cmath>
    using std::cout;
    using std::endl;
    using std::cin;

    double sort(double input[], int N)
    {
        double temp;
        int i, j;
       
        for (i=0; i<=8; i++)
        {
            for (j=i+1; j<=9; j++)
            {  
                if(input[i]>input[j])
                {
                    temp=input[i];
                    input[i]=input[j];
                    input[j]=temp;
                }
            }
        }
        return input[N];
    }

    int main()
    {
        const int N=10;
        double x, y, sum, total, input[N];
        int i;
        sum=0;
        x=1;
       
        cout << "Enter 10 numbers: " << endl;
        for (i=0; i<=9; i++)
        {
            if (x<=10)
            {
                cout << "Number " << x << ": ";
                cin >> input[i];
                x++;
            }
            else if (x==10)
            {
                break;
            }
        }

        sort(input, N);
       
        cout << "Here are the numbers in sorted order:" << endl;
       
        for (i=0; i<=9; i++)
        {
            cout << input[i] << " ";       
        }
       
        y=((input[N/2] + input[N/2-1])/2);
        cout <<"\nThe median is " << y << endl;
       
        for(i=0; i<=9; i++)
        {  
            sum=sum+input[i];
        }
       
        total=(sum/10);
        cout << "The mean is " << total << endl;
       
        return EXIT_SUCCESS;
    }
    I'm trying to give an error message when the user doesn't enter a number, but I haven't been able to get it to work.

    this is what I tried:
    Code (Text):
        cout << "Enter 10 numbers: " << endl;
        for (i=0; i<=9; i++)
        {
            if (x<=10)
            {
                cout << "Number " << x << ": ";
                cin >> input[i];
                if (!cin)
                            {
                                  cin.clear();
                                  cout << "Error: You Must Enter A Number. " << endl;
                                  cin >> input[i];
                             }
                            x++;
                           
            }
            else if (x==10)
            {
                break;
            }
        }
    I tried that out but it would repeat the error for all 10 input, instead of giving an error for that 1st one. I want to give an error for that one time they enter a letter, then have the program tell them to redo their input, then have it proceed to the next number "number 2: " So anyone have any ideas of what I should try?
     
  2. jcsd
  3. Oct 7, 2012 #2

    I like Serena

    User Avatar
    Homework Helper

    Welcome to PF, odinx! :smile:

    You also need to flush the input to get rid of the letter that's there.
    Adding cin.flush() will do that.
    Note that you also need cin.clear() to clear the invalid state of the stream.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: How do you give an error for someone entering a letter
Loading...