#c
#c
Вопрос:
Я пытаюсь написать программу, которая должна проверять входы резисторов, чтобы увидеть, являются ли они стандартными значениями. Я зашел так далеко, но я очень смущен. Любые рекомендации помогут. Основная программа принимает значения от 1-1000 в качестве резисторных входов. Затем эти входные данные необходимо сравнить со списком стандартных значений, {10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82}. Любое кратное этим значениям считается стандартным, например, 8.2, 82, 820.
void checkstdval (float ra, float rb)
{
float stdv[12] = {10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82};
while(1)
{
while (ra <10)
ra *= 10;
while (ra <= 100)
ra /= 10;
if ((ra - stdv) < 0.01)
break;
else
{
printf("%.2f is not a standard resistor valuen", ra);
break;
}
}
while(1)
{
while (rb <10)
rb *= 10;
while (rb <= 100)
rb /= 10;
if ((rb - stdv) < 0.01)
break;
else
{
printf("%.2f is not a standard resistor valuen", rb);
break;
}
}
Комментарии:
1. Стандартные значения резисторов находятся в моем массиве ……..stdv[12] = {10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82}; Я не могу запустить программу в том виде, в каком она написана » .недопустимые операнды в двоичном формате»
2. В основной программе можно ввести любое число от 1 до 1000, поэтому, допустим, введено 1,,, его нужно умножить на 10, а затем сравнить с массивом, поскольку оно может быть любым кратным этим стандартным значениям (например, 1.2, 12, 120), все они могут быть входными
3. Он указывает на if ((ra — stdv) < 0.01)
4. Есть идеи, как этого избежать? Мой профессор сказал нам сделать это так
5. Есть несколько проблем, но наиболее очевидной является ваше сравнение здесь:
if ((ra - stdv) < 0.01)
. stdv — это массив, поэтому вам нужно сравнить со значением в массиве. Итак, что-то вроде этого:if ((ra - stdv[i]) < 0.01)
, гдеi
— целое число, начинающееся с 0 и увеличивающееся каждый раз в цикле. Затем необходимо изменить тест else, чтобы проверить, находится лиi
он в конце массива stdv.