Convert a given temperature to another system based on given boiling and freezing points

There are two thermometers and given five integers F1, B1, F2, B2 and T, where F1 and B1 are the Freezing point and Boiling Point of water on thermometer 1, and F2 and B2 are the Freezing point and Boiling Point of water on thermometer 2 respectively, and T is some temperature recorded on thermometer 1. The task is to find the temperature on the thermometer 2.

Example:

Input: F1 = 0, B1 = 10, F2 = 100, B2 = 200, T = 4
Output: 140.00

Input: F1 = 0, B1 = 100, F2 = 32, B2 = 212, T = 37
Output: 98.60

Approach: Consider the first thermometer to use U1 unit system and second thermometer using U2 unit system.



  • The idea is to get the difference between the boiling and freezing point of water on each thermometer.
  • The number of units between the freezing and boiling points of both thermometers shows the same temperature difference.

So, (B1 – F1) U1 == (B2 – F2) U2

By Unitary method, U1 = ( B2 – F2 ) / ( B1 – F1 ) U2

Relative value of U2 is T – F1 and U1 is T – F2

Hence, T = F2 + ( ( B2 – F2 ) / ( B1 – F1 ) ) * ( T – F1 )

Below is the implementation of the above approach:

C

filter_none

edit
close

play_arrow

link
brightness_4
code

// C program for above approach
  
#include <stdio.h>
  
// Function to return temperature
// in the second thermometer
double temp_convert(int F1, int B1, int F2,
                    int B2, int T)
{
    float t2;
  
    // Calculate the temperature
    t2 = F2
         + (float)(B2 - F2)
               / (B1 - F1) * (T - F1);
  
    return t2;
}
  
// Driver Code
int main()
{
    int F1 = 0, B1 = 100;
    int F2 = 32, B2 = 212;
    int T = 37;
    float t2;
  
    printf("%.2f",
           temp_convert(F1, B1, F2, B2, T));
    return 0;
}

chevron_right


Output:

98.60

Time Complexity: O(1)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

Recommended Posts:


Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.