2016-10-08 2 views
0

Итак, ребята, я очень новичок в программировании и языке C, просто изучая его для удовольствия :) Итак, Currnt вычисляет совершенно правильно, он может вычислять 4/2, но когда я пытаюсь 6/15, просто ответы 0, любая идея почему?Не правильно рассчитать

#include <stdio.h> 
    int main() { 

    int Volt,Resst; 
    float Currnt; 

    printf("Enter the value of resistor:"); 
    scanf("%d",&Resst); 
    printf("Enter the voltage of power supply:"); 
    scanf("%d",&Volt); 
    if (Volt > 10) 
    printf("The voltage is too big\n"); 
    else if (0 > Volt) 
    printf("Not a valid input\n"); 
    else { 
    Currnt=Volt/Resst; 
    printf("The current is %.2f A\n",Currnt); 
    } 

    } 
+1

ее лучше, если вы разместите код там, вместо просто поместить его в картину. –

ответ

1

Если если/другое заявление блок содержит более 1 команды (как последнего еще филиала), вам нужно использовать фигурные скобки:

if (Volt > 10) 
    printf("The voltage is too big"); 
else if (0 > Volt) 
    printf("Not a valid input"); 
else { 
    Current=Volt/Rest; 
    printf("..."); 
} 

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

if (Volt > 10) { 
    printf("The voltage is too big"); 
} 
else if (0 > Volt) { 
    printf("Not a valid input"); 
} 
else { 
    Current=Volt/Rest; 
    printf("..."); 
} 

UPDATE

В C/C++ тип результата выражения (деление в вашем случае) исключительно на основе типа переменных в ней. В вашем случае выражение равно int/int, поэтому результат будет считаться int - тип переменной, в которой вы храните его, не имеет значения. Решение состоит в том, чтобы явно привести, по крайней мере один из выражения переменных float:

Currnt = (float)Volt/Resst; 

или

Currnt = Volt/(float)Resst; 

или

Currnt = (float)Volt/(float)Resst; 
+0

Oh mate, спасибо, что сработало чудесами xD – NotAProgrammer

+0

Эй, чувак, извините, что беспокою вас снова, но у меня есть еще одна проблема, и мне нужно подождать еще один день, чтобы задать другой вопрос: Current = Volt/Rest не работает. do 4/2, но он не может сделать 6/15, любая идея почему? – NotAProgrammer

+0

Пожалуйста, отредактируйте исходный вопрос и опубликуйте весь свой код. –

2

Из-за вашего вложенности, то printf находится вне всех if условия, так что вы всегда будете видеть «Ток ...»

1

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

Но если мы хотим запустить кратные строки при условии, что необходимо использовать фигурные скобки, чтобы сообщить компилятору, чтобы запустить все эти линии (ы) при условии