#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 ;