2017-02-23 69 views
0

Этот код функционирует почти идеально, но, похоже, он игнорирует мои инструкции if else. Цель этой программы - только преобразовать температуры между -100 и 100, но по какой-то причине мой код все еще преобразует любое число, которое вводится. Это разочарование, потому что я попробовал несколько различных подходов, но программа никогда не переходит к утверждению еще и всегда работает, если заявление, даже если сказать, что я вошел 10000. Спасибо любых советов будут оцененыЧто не так с моими заявлениями if else?

double converter() 
{ 
    float C, F, S; 
    int input; 
    printf ("Please enter a temperature in Fahrenheit:"); 

    scanf ("%f", &F); 

    if (F > -100 || F < 100) { 

     C = FCR * (F -32); 

     printf ("%f F ==> %f C ", F, C); 
     printf ("%f", F); 
    } 
    else { 
    F = pow(C, 3); 
    printf ("Invalid Fahrenheit temperature."); 
} 
} 
+1

'C' неинициализирован в' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' какой-нибудь способ? – chepner

+0

'F> -100 || F <100' истинно, если F равно 150, потому что '150> -100' – immibis

ответ

6

В настоящее время вашего if состояния будет принимать любую температуру Farenheit больше чем -100 или меньше чем 100. Ну это означает, что каждый temperarure войдет в это сообщение if. Вероятно, вы намеревались использовать И вместо:

if (F > -100 && F < 100) { 
    // logic here 
} 
+0

Спасибо, я не понимал, что логика была неправильной там – n00bprogrammer22

2

Изменить || до & & и он должен работать. Если одна из сторон || верна, вы вводите символ if. И 1000 действительно больше -100

Еще одно примечание. C неинициализирован. Вы присваиваете ему значение только в том случае, если выражение if имеет значение true. Но в else вы используете C, когда он не инициализирован. И всегда проверяйте возвращаемое значение scanf.