8 like 1 dislike

We hope this code will accept the age input value only if input value is int and >0:

#include <iostream>
int main()
{
    using namespace std;
    int nAge;
    while (cin >> nAge)
    {
        if (cin.fail()) // if input is not a number
        {
            cin.clear(); // reset status of stream to goodbit , so we can use ignore()
            cin.ignore(1000, '\n'); // ignore 1000 characters from ‘\n’( mean ‘\n’ also be ignored ) most close to input stream
            continue; // return 0
        }
        if (nAge <= 0) // make sure nAge > 0
            continue;
    break;
    }
    cout << nAge << endl;
}

But it has problem! If we input“12abc”, so nAge will get value 12, and“abc”still in input stream and status of stream still are goodbit. The program accept the value 12 for nAge. That's not good!

Please fix the program so we can recognize "12abc" as the mistake!

asked in Stream input / output by (11.8k points)
reshown by | 65 views
1 1
Called for Help
0 0
Called for Help
0 0
Called for Help
0 0
Called for Help
0 0
Called for Help
0 0
Called for Help

43 Answers

0 like 0 dislike
Hidden content!
#include <iostream>



using namespace std;





int main()

{
* * ** ** **** * * ***** nAge;
* * **** **
*** * *** *** * * *** (1)
* * * * *** * ******
** * * ** * *** * *** * * * * ***
* ***** * * * ** ** * ***** * * *** * >> nAge;
*** *** * *** ** **** * ** * *** **** *
** *** * **** ** ** * * * * *** *** * * (cin.fail()) // if input is not a number
**** * ***** * ** ** * * ** ***** ***** ***
* *** * * ** **** * ** * ** **** * * ***** * * *** * * * ** * ** ***** // reset status of stream to goodbit , so we can use ignore()
* ** *** ** * * ** * * * ** * * **** * **** * * * * ******
*** * * ** * *** * ***** ** ** ** ******** ** *** * * ** * ** * * ** ** * *** * '\n'); // ignore 1000 characters from ‘\n’( mean ‘\n’ also be ignored ) most close to input stream
**** ** **** * * * * ** * ** ** * ** * * ** ** ** * * *** * ** ****** * // return 0
*** * * * ** * * * ** * ** ** **** ***
*** ** **** *** *** * * * *** * * *
** * * *** ** * * ** *** *** *** * * * *** * * '\n');//
*** ** * ** * ** * ** * ** ********* ** * ** > 1)
******* ****** ** * **** ************** * * **** * ***** * * * * ****
* * *** * * ** ** ** * * * ***** ** * *
* * * * * * ** ** * **** * *** **** * (nAge <= 0) // make sure nAge > 0
*** ** * ** * * ** * *** * ** * ** * ** * ** * ****** ** * ** * **
** ** *** * * * **** ** **** ** * ** * * * * **
* ** ** ** * ** ** * ** ** ** * ** * ***
* * ** * * *** *** * * *** ** * **
* ** *** ** **** *** ***
* ***** * * *** * ** *** << nAge << endl;
****** ** *** * **

    
* * * * * * * * ** ***** ** 0;
* ** ** * **

   }
answered by (-74 points)
0 like 0 dislike
Hidden content!
#include <iostream>

#include <sstream>



using namespace std;



int main()

{
*** * *** * ** * ** ** * nAge = 0;
******* ** ****** * ** *** * (!(cin >> nAge))

    {
****** *** * **** ** * ** * ** * ** * **** (cin.fail()) // if input is not a number
** * * **** * ** * ********** ** * ** *
* ** **** **** ****** * ** ** *** * *** ** *** *** * **** **** ******* ** ***
* * * * ** ****** * * ** * *** ** *** *** ** **** * **** ** '\n');
** * ** ** *** * * ** * * * * * * **** *** ** * * ** * * << "Invalide input" << endl;
**** ** *** * * * * *** * * * * * * * ** * ******* * ******* *** ***
** * * *** **** ** * *** * * * *** * ****
** * **** **** * ** * * *** ** ** **
* **** ** * * * *** ***** *
** * * *** *** *** ** ******** * *
* * * * * *** ** * * *** *** ** ** if (nAge <= 0) // make sure nAge > 0
**** * * *** * *** ** * * ***** ** * * * **
** **** * * ** ** ** * * ** *** * * * * * * ***** * ** ** * *** * << "Not less then 0 "<< endl;
* * * *** ******* * ** * * * * *
** ** ******* * * * * ** * * * **
**** * **** ** ************ ** * * ** ** * * * *
** *** * * *** ** ** ** *** ** ** ** * ** **** ** ****
**** ** ** ** * *** *** **** * ** **
** ** ** ** * * * ** ** * **** ** ** * * * ** ** *
******* * ** *** **** ** **** * * * *
* * *** ****** ** * *** * ** *** *****
** *** ** ** * *****
** **** * * * * ** * << nAge << endl;

    
* ** * ** ** * * * *** *
*** *** * *** * *** * ** line;
** * * * *** ** * ** ** * d;
* * ** ** * * (getline(cin, line))
** * * * * * * **
*** * ** *** **** ** * * * * * * *** ** **** * * * ss(line);
**** ** ** * ** * * * * ** ****** ** *** * (ss >> d)
* * * *** *** ** * ** * ** * *** **
* * * * * ** * *** ***** *** * * ***** * * * ** ** ** * ** ** * (ss.eof())//is number then break from while loop
* * *** ** ** * * * ** * * ** * **** ** * *** * ** * * * ****
* * * *** * * ** ** *** **** *** * * * ** * ***** * ** ** ** ** *** **** ** * * * *
* * * **** ** *** ** *** * * ** * * ** *** * * *** **** *** *
* ** * * ** * * ** ** ** * *** * * * ** ** * ** * *** ** ** ** * ** (ss.eof() <= 0) // make sure nAge > 0
** *** * **** * * *** ** **** * *** * * ***** * ** * ***** * *** * **** * * ***** * * **
** * * ****** * *** *** ** ** * *** ***** ** * *****
******* ** * ** ****** * * * ** ** * * * * * << "Mistake!" << endl;

    }
* * *** * * ********* * * << d << endl;
** * ** ** * ***
* * ** * * * * ** * 0;

}
answered by (-74 points)
0 like 0 dislike
Hidden content!
#include * **** * ** * *

int main()

{
* *** **** ** ** namespace std;
** * *** *** * * * nAge;
* * ** ****** * ** ** * ** (cin * ** * * nAge)
** * * * ** * ***** *
*** ** ** ** * * * ** ** ** * * * * * // if input is not a number
* ** ** * * ** ** * ** ****
*** * * * * * * * ** * * ********* * ** * ** ** *** *** * ***** ** ** * // reset status of stream to goodbit , so we can use ignore()
** * **** * ** * * ** ** * * * * * ** *** *** ** * ** ** ** ** ** * * '\n'); // ignore 1000 characters from ‘\n’( mean ‘\n’ also be ignored ) most close to input stream
* * * ** * * ** * ** ** * * ** * * * * ** * * *** * * *** * ** ** * // try again
* * *** * **** *** ******* ********* *
**** ** * ** * * * * **** * **** * *** * * (nAge <= 0) // make sure nAge > 0
**** ***** * *** ** * **** ******** * * **** *** *** **** ** ** ******* * *
* ** ** ** ** * * * * * ****** *** ****** *** a = cin.peek();
*** ** * *** * * ** ** ** *** * * ****** * * ** * (a != 0 * * * * **** a != '\n' ** * * ** * a != ' ')
* **** * ****** ** * * ** ** ****** * *** ** ** * * *** * * **** **
* * ***** ** * * ** * * * * ** ***
** *** * * **** ***
* * * ***** **** *** * * *** * * nAge * * *** endl;

}
answered by (-434 points)
0 like 0 dislike
Hidden content!
#include *** ** *******
*** * ** ** * ***

int main()

{
* *** ** ** * ** ** namespace std;
* * ** * ** ** * * nAge;
* ***** ** ** ** * ** * * (cin ** *** * * ***** ** nAge)
** * ** **** *** * * *
** * *** * * *** *** ***** ** ** * * ** * * **** ** // if input is not a number
* * * ** ** * * ** * * ***** * * * ** ** *
** ** * * **** * * * ** **** **** * ** * ** **** ****** * * ** * * *** // reset status of stream to goodbit , so we can use ignore()
*** * * * * * * *** *** * * ** ** ** **** ** * * ** * *** ** ** '\n'); // ignore 1000 * * from ** * mean ‘\n’ also be ignored ) most close to input stream
** * ****** ** *** ** *** **** * * * ** * *** * * * ** *** * ***** // return 0
*** * * **** *** **** * * * * ** ** * ** ****
* ** ** * * ** * ****** ****** ** * (nAge <= 0) // make sure nAge > 0
* * * * * * ****** **** *** * ** * ** * **** ***** *** ****
**** **** ** * *** * **
* * ****** * * * ***
* * **** * * ** **** * ** ** * dec ******* ** * nAge * *** ** endl;



}
answered by (-335 points)
0 like 0 dislike
Hidden content!
#include ** ** ** * * **

int main()

{
** ** ** ** **** ** **** *** namespace std;
* * * * *** *** ******** * nAge;
***** * ** * ** ** (cin ** *** nAge)
****** *
******* *** *** ** ** ***** * ** * ** ** ** // if input is not a number
** * ****** ** ** *** ** * * * ** *
*** ** ** * *** *** * ** * ***** ** ** ***** * ** * **** ** ** *** * * // reset status of stream to goodbit , so we can use ignore()
**** * ****** ** ** * ******* * * * ******* * * **** * * ** * * ** * '\n'); // ignore 1000 characters from ‘\n’( mean ‘\n’ also be ignored ) most close to input stream
** ** *** * * * * *** ** * *** **** ** *** *** ** * * **** ** **** // try again
* ** **** ** *** * * ** **** ******* *
**** * * * * ** * * * * ***** ****** ** (nAge <= 0) // make sure nAge > 0
** ** * ** *** * * ** ****** * * *** ** * * ** *** *** * ******
* ** ** ** * ** * * * * *** *** ***** * a = cin.peek();
* **** ***** ***** * ** ** * * * * ******* *** (a != 0 * * * * a != '\n' * * * a != ' ')
*** ** ** **** * * * *** * *** ** ** * * *** ** ****** * *
* * * * * ****** * * ** * * ***** ** * **** * ***
* * * * * **
* *** * * * ** *** ***** * nAge * ** endl;

}
answered by (-233 points)
0 like 0 dislike
Hidden content!
#include *** * * *

#include **** ** **

#include ** ****

int main()

{
* * ** ** * ** * *** * namespace std;
*** * ** ** ** ** * ** nAge;
*** * * *** * * **** ** (cin * * * *** nAge)
***** * * **** * *** *
* ***** * * * ** **** ** *** *** ** ** * * * * * // if input is not a number
* * ** * ** * * ** ** *** *** ** ** ** * **
*** ***** ** ** * *** *** * * ****** * * * **** * * * ** * ** * ** * ** ** // reset status of stream to goodbit , so we can use ignore()
*** ** * * ** **** ** *** * * ** *** *** ***** * ** *** *** ** * * '\n'); // ignore 1000 characters from ‘\n’( mean ‘\n’ also be ignored ) most close to input stream
** ** * * *** ** ** ** ** * * ***** *** * * * * ********** *** ** * // return 0
******* * * * * ** * * * **
** ** * * ** * * ** *** * * * * ** ** (nAge <= 0) // make sure nAge > 0
*** **** * * * * ** **** * * * * ** **** ** * * ** ** * * ** ** * * ** *
* ** * *** * * **** * * * * *** * ***** * a = cin.peek();
* *** * ** *** * * *** * **** ** ** *** ** * (a != 0 * * a!= '\n' * *** a != ' ')
** * * * ***** *** *** ** ** ** * **** ** ** ** ****** ** * *


*** * * ** * * * ***** * * * * * ** * * * **
* * * ** ** ****** * * **
*** ** **** * ** *** * ** *** ** * nAge * * * endl;

}
answered by (-54 points)
0 like 0 dislike
Hidden content!
#include * * *

#include * * *** * * *

int main()

{
** * * * * * *** * * * namespace std;
* * **** * ** ** ** ** nAge;
*** * * **** (cin ** * ** nAge)
**** * * * * *****
* ** * ** ****** ** ** ** ** * *** ** ** ** *** * (cin.fail()) // if input is not a number
** ** * * ** ** **** * *** **** * ***
** * *** * ***** *** * * ****** * * * * * **** * *** * *** ** * // reset status of stream to goodbit , so we can use ignore()
* ******* *** * * *** * * * ** * ** ** ** **** ** * * * * '\n'); // ignore 1000 characters from ‘\n’( mean ‘\n’ also be ignored ) most close to input stream
* ** ** * * *** * ******* * *** *** ***** ***** ** *** ** **** ** * * *** // return 0
* * ** * * * ** *** *** ** * * * **** ** * * *** * ****
* ** * * ** *** ** ** * *** * * ** * **** * (nAge <= 0) // make sure nAge > 0
** * * * ** * * ** * * ****** * * ** *** * * ** *** * *** **
** * * * *** * * ** ** * * * * ** ** ** * * * * * d = cin.peek();
* ** ****** ** ** * * * *** * * ** * * * (d != 0 *** ** * * * d!= '\n' * * ***** ** d != ' ')
** ** * * ** * ** * ****** *** **** * * * * * * **** * * *** * ****
**** ** *** * * ** * * * ** ** * ** *
***** * ** ** ** *** * * ***** * * * *
* * ** * * ***
* **** *** * ** ** ** ** ** ** ** nAge ****** endl;

}
answered by (-359 points)
0 like 0 dislike
Hidden content!
#include ** * * *** * *

int main()

{
* * ** ** * * * ** * namespace std;
** * *** * * **** ** **** nAge;
**** ** * **** * * * ** * ** (cin *** *** * nAge)
* ** * ** * ** **
* * ** ** * ** * *** * ** ******** *** ** ** (cin.fail()) // if input is not a number
* *** **** *** * *** ****** * * * * ****
******* ****** * * ** * * **** * * * * *** * * * * ** * * ****** * ***** // reset status of stream to goodbit , so we can use ignore()
** ** ** ** * * ** * * * * ***** * ** * * * ** ****** ** * * * '\n'); // ignore 1000 characters from ‘\n’( mean ‘\n’ also be ignored ) most close to input stream
* *** *** *** * *** ** * *** ** * * * * * * ** * * *** ** ** ** ** * * * // return 0
** * * * * *** * ***** * * *** * ***
** * *** * * * ** * ** * ** * * * **** (nAge <= 0) // make sure nAge > 0
*** ** *** * *** *** * * * * ***** *** ** * * ** ****** * ***** * *
** **** * * *** *** ** * *** ** ** * * ** * d = cin.peek();
* * * ** *** ** ** ** ** ** * ** * * ** * (d != 0 ** *** * d!= '\n' * * ** d != ' ')
* ** * ** ** * * ** ** * * * **** ***** ** ** * ** ** * ****
** ** * ***** * ** * * * * *** *** * **
* * *** ** * * * * ** ** * * ******* *
* **** * * * ** * ** * *****
** * * * ** ** * * ** ** * * nAge *** * endl;

}
answered by (-359 points)
0 like 0 dislike
Hidden content!
#include<iostream>

#include<string>

using namespace std;



int main()

{
* * * ****** ***** ** * * nAge;

    int i;

    int d;

    int a[1000];

    int t=0;

    int e;
* * ****** * ** *** ** *** ***

    {
* ** * * ** ** * **** * ** * ******* *
* **** *** ** ****** *** * * * * * ** **** ** *** * ****** ** * * *
****** * ** *** ** ** *** * ** * ** ** * ******* *
** *** *** * **** * **** *** * * *** * * * *****
*** ** * ****** ** ** ** ** **** **** **** *
**** * ** *** * ** ** *** ** * ** *** * ** * ** ** * ** *** *** * **
***** * ****** * **** ** * * * ****** *** * * * ** * **** ** * ** * ** * * * **** ** *** * *
** *** ** ** * ***** ** **** ** ** *** * * * *** * * * **** * ** * * ** * * ***** ***
* * ** ** ** * * * **** ** * * * * * ** ***** * * ** *** * * *** * if(i==(d-1))
* ** * ** * ** **** * * **** ** ** * **** *** **** ***** * ***** * *** * * * * *
** * * * *** * ** * ** *** * * ** *
*** ** * ** * ** * * ******** * ** ** * * * *
* * * * *** * * ** ** * * * * * * * *
* ** **** * * *** * ***** * *** * * * * ** ** * * * ** * ** **** // reset status of stream to goodbit , so we can use ignore()
* ** ** *** * **** ** * * ** ** * *** ** **** *** * **** * ** ** '\n'); // ignore 1000 characters from ‘\n’( mean ‘\n’ also be ignored ) most close to input stream
* *** ** * ** ** * * * * ** * * * * * * *** *** ***** * * ** ** * * * * * **
*** ******* ** *** ** ** * * * * * *** *
* * *** * * *** *** ** ** * ***** * * if(t=1)
*** * * * * * *** * ** *** **** * * * **
** * * ****** ** ** ******** * * ** * * ** ** ** * *** ** * ** * * * * * ***
* * * * ******* ** * * * ** * *** *****
* * * ** * ** * * * * ** * * ***

    }
* ** **** ** *** ***** *** ** * ***

}
answered by (-103 points)
0 like 0 dislike
Hidden content!
#include <iostream>

#include <string>

using namespace std;



int main()

{
** * **** *** *** * * * c = 1 ;
*********** **** * *** * ** x = false ;
* * ** * ** * * * * * ** str1;
* * ** * ** * * *** ** ** *
** *** * * * * ** ***** y = false ;
** * * * * ** ** ** >> str1 ;
* * ** * * * * * ** * i = 0 ; i < str1.size() ; i ++){
* *** * * **** * * ******* *** * * * == '-'){
* ** * * **** * **** ****** *** * ***** ** ** * *** ** *** * * **** *** * * * * * = true ;
*** ***** ****** * * ** *** ** * ** * * * ** * *** * ** * *** * * **** ** ** ** * * *
* ** * ****** * ** **** *** * * ** ** ** == str1.size()-1 && y == false){
* * * ** ** ***** *** * ** * *** * * ** ** * * *** * * * * ***** * ** ******* = 0 ;
** *** **** ***** *** * * * ** * ** * * * *** *** * ** *** * * ** ** * * ** *
** * ** * *** * * * *

    }
** * * ** * * *** * * i = 0 ; i < str1.size() ; i ++){
* * *** * ****** * ***** * ** *** *** * * ******
* * * * *** ** * ** *** * * ** * * * *** *** * ** ** *** * *** * * * ** * ** * * ** = true ;
* * * ** * ** * * * **** * * * ** ***** ** * ** * * * * * * ** ***** * ** **** ** ;
* * **** ** * ** ***** * ***** * **** *** **** ** ***** * **** ** * * * ** ** * ** *
* * **** *** ***** **


** ** **** ** * * * * ** * * ** * << 0 ;
* * *** ** * * cout << str1 ;



return 0 ;

}
answered by (24 points)
Get it on Google Play Welcome to Peer-Interaction Programming Learning System (PIPLS) LTLab, National DongHwa University
English 中文 Tiếng Việt
IP:162.158.79.137
©2016-2018

Related questions

7 like 1 dislike
33 answers
8 like 1 dislike
29 answers
7 like 1 dislike
17 answers
asked Jun 15, 2016 in File processing by thopd (11.8k points) | 52 views
9 like 0 dislike
32 answers
8 like 1 dislike
22 answers
asked Jun 15, 2016 in File processing by thopd (11.8k points) | 44 views
2,974 questions
57,433 answers
29,089 comments
938 users