Как l oop вернуться на старт, если я ввожу ааа? - PullRequest
0 голосов
/ 09 июля 2020

только начал изучать c ++ несколько дней a go. Как мне вернуть мой код в начало после ввода aaa для первого ввода. Вместо этого он просто начинает выходить из программы, где я хотел бы, чтобы он запросил ошибку, введите номер, если пользователь вводит aaa или просто любой символ или букву.

Я хочу, чтобы программа запускалась точно так же, когда я вхожу Когда меня спрашивают: «Введите количество чисел, которые вы хотите проверить», и я ввожу, программа не завершается, а возвращается к началу и задает тот же вопрос. Я хочу, чтобы он проверил оба условия, что это не отрицательное число и не буквы. Необходимо использовать cin.fail

http://cpp.sh/9tqrx

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


int main()
{
    int numberCheck=-1;
    while(numberCheck<0){
        cout<<"Enter the number of numbers you want to check: ";
        cin>>numberCheck;
        
         
      {
         
          cin.clear();
          
          cin.ignore(numeric_limits<streamsize>::max(), '\n');
      }
        if(numberCheck<0)
            cout<<"Wrong number. Try one more time" << endl;
  
      

    }
    
  
    
    int j;
    for(j=0;j<numberCheck;j++){
        //description variable:
        int number=-1;

        //input number:
        while((number<1)||(number>1000)){
            cout<<"Input a number between 1 and 1000: ";
            cin>>number;
    
      {
         
          
          cin.clear();
          
          cin.ignore(numeric_limits<streamsize>::max(), '\n');
      }
            if((number<1)||(number>1000))
                cout<<"That number is not valid or character.  Input a number." <<endl;
         
        }

        //Determine if a number is a prime number or not.
        //A prime number is one whose only exact divisors are 1
        //and the number itself (such as 2, 3, 5, 7, etc.).
        int i;
        int nDiv=0;
        int isSimple=1;
        for(i=2;i<number;i++)
            if(number%i==0)
            {
                if(isSimple==1){
                    cout<<"That is not a prime number.  Divisors are:"<<endl;
                    cout<<"1\t";
                    nDiv=1;
                    isSimple=0;
                   }
                cout<<i<<"\t";
                nDiv++;
                if(nDiv%10==0)
                    cout<<endl;
            }
        if(isSimple==0) //if not simple, output last item:
           cout<<number<<endl;
        else
           cout<<"That is a prime number."<<endl;
    }
    return 0;
}
...