Как перехватить отрицательные целочисленные входные данные в программе C ?

#c #arrays #integer #negative-number

#c #массивы #целое #отрицательное число

Вопрос:

Программа, которая запрашивает 10 положительных целых чисел и классифицирует их как нечетные или четные положительные целочисленные входные данные. Алгоритм должен перехватывать отрицательные целочисленные входные данные. Выходные данные будут отображаться в двух столбцах. ЧЕТНЫЕ и НЕЧЕТНЫЕ.

Итак, как перехватить отрицательные значения и уведомить о недопустимом выводе? или повторно запрашивать, пока не будет получено положительное число?

вот мой программный код…

 int x=10;
int a[x];

cout<<"Input :";
cin>>a[x];

while(a[x]!<0) /*[Error] expected ')' before '!' token*/
{              /*[Error] expected primary-expression before '<' token*/
if(a[x]<0)     /*[Error] expected ';' before ')' token*/
 {             /*[Error] expected '}' at end of input*/
  cout<<"The input is negative try again";
  cout<<"Input:";
  cin>>a[x];
 }
else
 {
  a[x  ];
 }
}
cout<<"ODDtEVEN";

for(int y=0; y<=10; y  )
 {
  if(y%2==0)/*It separates the ODD and EVEN*/
   {
    cout<<" "<<a[y];
   }
  else
   {
    cout<<"t"<<a[y]<<endl;
   }
  }
return 0;
}
  

Каким должен быть правильный код для этого.
Я отлаживал это со вчерашнего дня.

Комментарии:

1. Здесь вы быстро превысите свои границы. Проверьте, что вы делаете с x .

Ответ №1:

!< не является оператором C . Вы, вероятно, ищете:

 while (a[x] >= 0)
  

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

Комментарии:

1. Я должен изменить всю программу.

Ответ №2:

Ваш код плохо организован, даже если вам удастся исправить ошибки, это не даст желаемого результата, я переписал коды, которые будут проверять наличие отрицательных чисел и позволят пользователю вводить до 10 чисел, а затем разбивать на четные и нечетные группы. Вот что я придумал:

 int input = 0;
int itr = 0; //iterator or count looping cycles
int arrayInt[10];
//read user input
while (itr < 10) //iterate while loop runs 10 times (0 - 9) = 10
{
   do
   {
       std::cout << "Enter a number" << itr 1 << ": ";
       std::cin >> input; //read user input
   } while (input <= 0);

   arrayInt[itr] = input; //store input in the array

   itr  ; //iterate loop
}

//printing odd amp; even numbers from the array
itr = 0; //reset iterator

std::cout << "---------------------" <<endl;
std::cout << "EventtOdd" <<endl;
cout << "---------------------" <<endl;
while (itr < 10)
{
    if (arrayInt[itr] % 2 == 0) //check if even
    {
        std::cout << arrayInt[itr] <<endl; //print on left
    } //check odd
    else
    {
        std::cout << "tt" << arrayInt[itr] <<endl; //print on right
    }
    itr  ;
}
  

Комментарии:

1. if (input > 0) вероятно, следует удалить. Вы уже выполнили проверку достоверности в цикле while. С учетом сказанного, если 0 это удалось, с текущим if вы увеличиваете количество, но не сохраняете значение, что, вероятно, не является желаемым поведением.

Ответ №3:

Первое, что я вижу, это while(a[x]!<0), что является недопустимым синтаксисом. Вы хотите сказать, что a [x] не меньше нуля? Это было бы a [x] >= 0. Было бы разумнее проверить, меньше ли оно нуля, а затем повторно настроить пользователя. Если цикл while обнаружит, что он больше или равен нулю, первый оператор if в нем никогда не сможет сработать. В вашей программе также есть другие ошибки и аномалии. Например, зачем использовать a[x ];? Это просто увеличивает x и отбрасывает a [x], поэтому просто используйте x ;