Я пытаюсь написать программу на C, которая запрашивает ввод у пользователя, и если ввод находится между заданными значениями float
, появится вывод.в этом случае, если скорость на входе равна 20,5, то на выходе будет вторая передача.Я хочу отфильтровать все неверные данные.
У меня уже есть какой-то фильтр, но он плохо работает.если на входе «afgegq», это будет фильтр и снова попросит меня ввести.Но если это 156FFAGFAE.оно не будет отфильтровано.
#include <stdio.h>
#include <stdlib.h>
int main()
{
for (;;)
{
int versnelling[5] = {1, 2, 3, 4, 5};
float speed = 0;
printf("Please enter a speed: ");
if (scanf("%f", &speed) != 1)
{
fputs("error: invalid input. Please enter a number\n",stderr);
return 0;
}
if (0.0 < speed && speed < 10.0)
{
printf("The gear you are in is: %i\n", versnelling[0]);
}
else if (speed >= 10.0 && speed < 30.0)
{
printf("The gear you are in is: %i\n", versnelling[1]);
}
else if (speed >= 30.0 && speed < 60.0)
{
printf("The gear you are in is: %i\n", versnelling[2]);
}
else if (speed >= 60.0 && speed < 80.0)
{
printf("The gear you are in is: %i\n", versnelling[3]);
}
else if (speed >= 80.0 && speed <= 100)
{
printf("The gear you are in is: %i\n", versnelling[4]);
}
else if (speed > 100)
{
printf("I can not go faster then 100km/h \n");
}
else if (speed == 0)
{
printf("The gear you are in is: Neutral\n");
}
else if (speed < 0 && speed > -15)
{
printf("The gear you are in is: R\n");
}
else if (speed < -15)
{
printf("I can not go that fast in reverse\n");
}
}
}
Я хочу, чтобы оно отфильтровывало все, кроме цифр и буквы Q. Мне нужна буква Q, потому что я хочу создать среднее значение для ввода (я постараюсьузнай как позже).но знаю, мне это нужно.Заранее спасибо.