2011-02-03 11 views
7

मैं एक वर्ग मैं तैयार हूं और मेरे कोड इससी कार्यक्रम सेल्सियस

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

int fahrenheit; 
double celsius; 

printf("Enter the temperature in degrees fahrenheit:\n\n\n\n"); 
scanf("%d", &fahrenheit); 
celsius = (5/9) * (fahrenheit-32); 
printf ("The converted temperature is %lf\n", celsius); 

return 0; 

} 

तरह लग रहा है सी में सेल्सियस तक फारेनहाइट परिवर्तित करने के लिए एक कार्यक्रम के साथ कुछ मदद की जरूरत है के लिए एक कार्यक्रम लिख रहा हूँ करने के लिए फारेनहाइट कन्वर्ट करने के लिए हर बार जब मैं इसे निष्पादित करता हूं तो इसका परिणाम 0.000000 है। मुझे पता है कि मुझे कुछ याद आ रहा है लेकिन यह पता नहीं लगा सकता कि क्या।

+6

आप पूर्णांकों के साथ काम कर रहे हैं, तो आप तैरता या डबल्स के साथ काम करने की जरूरत है। – Joe

+2

साइड नोट, कंपाइलर्स आमतौर पर 5.0 को एक डबल मानते हैं। फ्लोट वैल्यू कैल्क करने के लिए आपको 5.0 एफ कहना होगा। मोबाइल –

उत्तर

21

5/9 पूर्णांक विभाजन, जो = 0

बजाय कोशिश करेंगे 5.0/9.0 का परिणाम देगा।

+3

तकनीकी रूप से बोलने के लिए अधिक प्रासंगिक लगता है, 5/9.0 पर्याप्त –

+0

यह काम करता है! बहुत बहुत धन्यवाद :) – James

+0

@James उत्तर को स्वीकार करने के लिए मत भूलना। –

0

आपको किसी भी सटीकता के साथ सूत्रों के इन प्रकार के प्रदर्शन करने के लिए चल बिन्दु गणित का उपयोग करने की जरूरत है। यदि आवश्यक हो तो आप हमेशा अंतिम परिणाम को पूर्णांक में परिवर्तित कर सकते हैं।

0

लिखने 5/9 के बजाय 5/9.0 - इस बलों डबल विभाजन

+0

सभी की सहायता के लिए धन्यवाद, 5.0/9.0 ने चाल की, साथ ही साथ डबल काम करने के लिए भी स्विच किया। धन्यवाद फिर से – James

2

celsius = ((double)5/9) * (fahrenheit-32); कोशिश या आप 5.0 का उपयोग कर सकते हैं।

तथ्य यह है कि "/" संकार्य प्रकार पर ध्यान देती है। पूर्णांक के मामले में परिणाम भी एक पूर्णांक है, तो आप 0. जब 5 के रूप में दोहरा, तो विभाजन सही ढंग से क्रियान्वित किया जाएगा व्यवहार किया जाता है।

8

आप समस्या यहाँ है:

celsius = (5/9) * (fahrenheit-32); 

5/9 हमेशा आप 0 दे देंगे। इसके बजाय (5.0/9.0) का उपयोग करें।

0

जब तैरता के साथ काम कर, यह 5.0f/9.0f की जरूरत है।

जब युगल के साथ काम कर, यह 5.0/9.0 की जरूरत है।

जब पूर्णांक, शेष/अंशों के साथ काम कर हमेशा छोटा कर दिया जाता है। 0/1 के बीच 5/9 परिणाम, इसलिए इसे हर बार केवल 0 तक छोटा कर दिया जाता है। यह दूसरी ओर शून्य से गुणा करता है और हर बार आपके उत्तर को पूरी तरह से हटा देता है।

-4
using System; 


public class Calculate 
{ 

public static void Main(string[] args) 
{ 
    //define variables 
    int Celsius; 
    int fahrenheit; 
    string input; 

    //prompt for input 
    //read in the input and convert 
    Console.WriteLine("Enter Celsius temperature"); 
    input = Console.ReadLine(); 
    Celsius = Convert.ToInt32(input); 

    //calculate the result 
    fahrenheit = ((Celsius * 9)/5) + 32; 

    //print to screen the result 
    Console.WriteLine("32 degrees Celsius is {0}", "equivilant to 89.60 degrees fahrenheit"); 

    Console.ReadLine(); 
} 
+3

सवाल सी के बारे में था। –

+2

न केवल उत्तर में सी है, *** यह अभी भी गलत है क्योंकि यह बिल्कुल वही गलती करता है: पूर्णांक विभाजन ***: "(सेल्सियस * 9)/5"। –

0

5 और 9 इसलिए 5/9 हमेशा 0 परिणाम होगा int प्रकार
के हैं।

आप 5/9.0 या 5.0/9 या 5.0/9.0

उपयोग कर सकते हैं तुम भी जाँच कर सकते हैं C program for converting Fahrenheit into Celsius

संबंधित मुद्दे