Home Contents



/* Program: unitcon5.c */
/* Converts user input from one set of units of a particular quantity to another. */
/* User types in input as follows: "3wgl". */
/* Francis O'Donovan 5-12-97*/

#include <stdio.h>

#define SEC_MIN (0.0166666)
#define MIN_HOU (0.0166666)
#define HOU_DAY (0.0416666)
#define DAY_MON (0.032258)  /* Typical case */
#define MON_YEA (0.833333)
#define DAY_YEA (0.0027397)
#define MIN_SEC (60)
#define HOU_MIN (60)
#define DAY_HOU (24)
#define MON_DAY (31)
#define YEA_DAY (365)
#define YEA_MON (12)

#define LBS_LBS (1)
#define LBS_GRAMS (453.5147)
#define LBS_KILOGRAMS (0.4535)
#define GRAMS_LBS (0.0022)
#define GRAMS_GRAMS (1)
#define GRAMS_KILOGRAMS (0.001)
#define KILOGRAMS_LBS (2.205)
#define KILOGRAMS_GRAMS (1000)
#define KILOGRAMS_KILOGRAMS (1)

#define TRUE (1)
#define FALSE (0)

main()
{
        /* Define variables */

                int notok;
                float value;
                char quantity, unit, convert;

        /* Intro */
 
                printf( "Program: unitcon3.c\n\n" );
                printf( "Converts user input from one set of units of a particular quantity to another.\n" );
                printf( "User types input as follows \"3wgl\".\n\n" );
                printf( "Francis O'Donovan 28-11-97\n\n\n" );
 
        /* Ask user for the quantity, unit, convert */

                notok = TRUE;

                while ( notok )
                {
 
                printf( "Please type in the value of the quantity, followed by the quantity, followed by the unit the quantity is in, followed by the unit you want to convert it to.\n" );
                printf( "(No spaces!)\n\n" );
                printf( "For lengths, type l, for time, type t, for weight, type w.\n" );
                printf( "Lengths: For metres, type m, for kilometers, type k, for centimeters, type c,\n for miles, type l, for inches, type i, for feet, type f, for yards, type y.\n" );
                printf( "Times: For seconds, type s, for minutes, type m, for hours, type h, for days,\n type d, for months, type o, for years, type y.\n" );
                printf( "Weights: For lbs, type l, for grams, type g, for kilograms, type k.\n" );
                printf( "(e.g. 3wgl)\n" );
                scanf( "%f %c %c %c", &value, &quantity, &unit, &convert );

 

        /* Convert quantity and print result */
 
                if ( quantity == 'l' )
                        {
                        notok = FALSE;
                        if( unit == 'm' && convert == 'm' )
                                printf( "%.4f metres is %.4f metres.\n\n", value, value*1 );
                        else if ( unit == 'm' && convert == 'k' )
                                printf( "%.4f metres is %.4f kilometres.\n\n", value, value*(0.001) );
                        else if ( unit == 'm' && convert == 'c' )
                                printf( "%.4f metres is %.4f centimetres.\n\n", value, value*(100) );
                        else if ( unit == 'm' && convert == 'l' )
                                printf( "%.4f metres is %.4f miles.\n\n", value, value*(0.0006214) );
                        else if ( unit == 'm' && convert == 'i' )
                                printf( "%.4f metres is %.4f inches.\n\n", value, value*(39.37) );
                        else if ( unit == 'm' && convert == 'f' )
                                printf( "%.4f metres is %.4f feet.\n\n", value, value*(3.282) );
                        else if ( unit == 'm' && convert == 'y' )
                                printf( "%.4f metres is %.4f yards.\n\n", value, value*(1.094) );

                        else if( unit == 'k' && convert == 'm' )
                                printf( "%.4f kilometres is %.4f metres.\n\n", value, value*1000 );
                        else if ( unit == 'k' && convert == 'k' )
                                printf( "%.4f kilometres is %.4f kilometres.\n\n", value, value*(1) );
                        else if ( unit == 'k' && convert == 'c' )
                                printf( "%.4f kilometres is %.4f centimetres.\n\n", value, value*(100000) );
                        else if ( unit == 'k' && convert == 'l' )
                                printf( "%.4f kilometres is %.4f miles.\n\n", value, value*(0.6214) );
                        else if ( unit == 'k' && convert == 'i' )
                                printf( "%.4f kilometres is %.4f inches.\n\n", value, value*(39370) );
                        else if ( unit == 'k' && convert == 'f' )
                                printf( "%.4f kilometres is %.4f feet.\n\n", value, value*(3282) );
                        else if ( unit == 'k' && convert == 'y' )
                                printf( "%.4f kilometres is %.4f yards.\n\n", value, value*(1094) );

                        else if( unit == 'c' && convert == 'm' )
                                printf( "%.4f centimetres is %.4f metres.\n\n", value, value*(0.01) );
                        else if ( unit == 'c' && convert == 'k' )
                                printf( "%.4f centimetres is %.4f kilometres.\n\n", value, value*(0.00001) );
                        else if ( unit == 'c' && convert == 'c' )
                                printf( "%.4f centimetres is %.4f centimetres.\n\n", value, value*(1) );
                        else if ( unit == 'c' && convert == 'l' )
                                printf( "%.4f centimetres is %.4f miles.\n\n", value, value*(0.000006214) );
                        else if ( unit == 'c' && convert == 'i' )
                                printf( "%.4f centimetres is %.4f inches.\n\n", value, value*(0.3937) );
                        else if ( unit == 'c' && convert == 'f' )
                                printf( "%.4f centimetres is %.4f feet.\n\n", value, value*(0.03282) );
                        else if ( unit == 'c' && convert == 'y' )
                                printf( "%.4f centimetres is %.4f yards.\n\n", value, value*(0.01094) );

                        else if ( unit == 'l' && convert == 'm' )
                                printf( "%.4f miles is %.4f metres.\n\n", value, value*(1609) );
                        else if ( unit == 'l' && convert == 'k' )
                                printf( "%.4f miles is %.4f kilometres.\n\n", value, value*(1.609) );
                        else if ( unit == 'l' && convert == 'c' )
                                printf( "%.4f miles is %.4f centimetres.\n\n", value, value*(160900) );
                        else if ( unit == 'l' && convert == 'l' )
                                printf( "%.4f miles is %.4f miles.\n\n", value, value*(1) );
                        else if ( unit == 'l' && convert == 'i' )
                                printf( "%.4f miles is %.4f inches.\n\n", value, value*(63346) );
                        else if ( unit == 'l' && convert == 'f' )
                                printf( "%.4f miles is %.4f feet.\n\n", value, value*(5280) );
                        else if ( unit == 'l' && convert == 'y' )
                                printf( "%.4f miles is %.4f yards.\n\n", value, value*(1760) );

                        else if ( unit == 'i' && convert == 'm' )
                                printf( "%.4f inches is %.4f metres.\n\n", value, value*(0.0254) );
                        else if ( unit == 'i' && convert == 'k' )
                                printf( "%.4f inches is %.4f kilometres.\n\n", value, value*(0.0000254) );
                        else if ( unit == 'i' && convert == 'c' )
                                printf( "%.4f inches is %.4f centimetres.\n\n", value, value*(2.54) );
                        else if ( unit == 'i' && convert == 'l' )
                                printf( "%.4f inches is %.4f miles.\n\n", value, value*(0.0000157) );
                        else if ( unit == 'i' && convert == 'i' )
                                printf( "%.4f inches is %.4f inches.\n\n", value, value*(1) );
                        else if ( unit == 'i' && convert == 'f' )
                                printf( "%.4f inches is %.4f feet.\n\n", value, value*(0.0833333) );
                        else if ( unit == 'i' && convert == 'y' )
                                printf( "%.4f inches is %.4f yards.\n\n", value, value*(0.2777777) );

                        else if ( unit == 'f' && convert == 'm' )
                                printf( "%.4f feet is %.4f metres.\n\n", value, value*(0.348) );
                        else if ( unit == 'f' && convert == 'k' )
                                printf( "%.4f feet is %.4f kilometres.\n\n", value, value*(0.000348) );
                        else if ( unit == 'f' && convert == 'c' )
                                printf( "%.4f feet is %.4f centimetres.\n\n", value, value*(30.48) );
                        else if ( unit == 'f' && convert == 'l' )
                                printf( "%.4f feet is %.4f miles.\n\n", value, value*(0.0001884) );
                        else if ( unit == 'f' && convert == 'i' )
                                printf( "%.4f feet is %.4f inches.\n\n", value, value*(12) );
                        else if ( unit == 'f' && convert == 'f' )
                                printf( "%.4f feet is %.4f feet.\n\n", value, value*(1) );
                        else if ( unit == 'f' && convert == 'y' )
                                printf( "%.4f feet is %.4f yards.\n\n", value, value*(0.333333) );

                        else if ( unit == 'y' && convert == 'm' )
                                printf( "%.4f yards is %.4f metres.\n\n", value, value*(0.9144) );
                        else if ( unit == 'y' && convert == 'k' )
                                printf( "%.4f yards is %.4f kilometres.\n\n", value, value*(0.0009144) );
                        else if ( unit == 'y' && convert == 'c' )
                                printf( "%.4f yards is %.4f centimetres.\n\n", value, value*(91.44) );
                        else if ( unit == 'y' && convert == 'l' )
                                printf( "%.4f yards is %.4f miles.\n\n", value, value*(0.0000628) );
                        else if ( unit == 'y' && convert == 'i' )
                                printf( "%.4f yards is %.4f inches.\n\n", value, value*(36) );
                        else if ( unit == 'y' && convert == 'f' )
                                printf( "%.4f yards is %.4f feet.\n\n", value, value*(12) );
                        else if ( unit == 'y' && convert == 'y' )
                                printf( "%.4f yards is %.4f yards.\n\n", value, value*(1) );
 

                        else
                        {
                                notok = TRUE;
                                printf( "\n\nERROR! You have inputed incompatible dimensions.\n\n\n" );
                        }
                        }

                else if ( quantity == 't' )
                        {
                        notok = FALSE;
                        if( unit == 's' && convert == 's' )
                                printf( "%.4f seconds is %.4f seconds.\n\n", value, value*1 );
                        else if ( unit == 's' && convert == 'm' )
                                printf( "%.4f seconds is %.4f minutes.\n\n", value, value*SEC_MIN );
                        else if ( unit == 's' && convert == 'h' )
                                printf( "%.4f seconds is %.4f hours.\n\n", value, value*SEC_MIN*MIN_HOU );
                        else if( unit == 's' && convert == 'd' )
                                printf( "%.4f seconds is %.4f days.\n\n", value, value*SEC_MIN*MIN_HOU*HOU_DAY );
                        else if ( unit == 's' && convert == 'o' )
                                printf( "%.4f seconds is %.4f months.\n\n", value, value*SEC_MIN*MIN_HOU*HOU_DAY*DAY_MON );
                        else if ( unit == 's' && convert == 'y' )
                                printf( "%.4f seconds is %.4f years.\n\n", value, value*SEC_MIN*MIN_HOU*HOU_DAY*DAY_YEA );
 
                        else if( unit == 'm' && convert == 's' )
                                printf( "%.4f minutes is %.4f seconds.\n\n", value, value*MIN_SEC );
                        else if ( unit == 'm' && convert == 'm' )
                                printf( "%.4f minutes is %.4f minutes.\n\n", value, value*1 );
                        else if ( unit == 'm' && convert == 'h' )
                                printf( "%.4f minutes is %.4f hours.\n\n", value, value*MIN_HOU );
                        else if( unit == 'm' && convert == 'd' )
                                printf( "%.4f minutes is %.4f days.\n\n", value, value*MIN_HOU*HOU_DAY );
                        else if ( unit == 'm' && convert == 'o' )
                                printf( "%.4f minutes is %.4f months.\n\n", value, value*MIN_HOU*HOU_DAY*DAY_MON );
                        else if ( unit == 'm' && convert == 'y' )
                                printf( "%.4f minutes is %.4f years.\n\n", value, value*MIN_HOU*HOU_DAY*DAY_YEA );
 
                        else if( unit == 'h' && convert == 's' )
                                printf( "%.4f hours is %.4f seconds.\n\n", value, value*HOU_MIN*MIN_SEC );
                        else if ( unit == 'h' && convert == 'm' )
                                printf( "%.4f hours is %.4f minutes.\n\n", value, value*HOU_MIN );
                        else if ( unit == 'h' && convert == 'h' )
                                printf( "%.4f hours is %.4f hours.\n\n", value, value*1 );
                        else if( unit == 'h' && convert == 'd' )
                                printf( "%.4f hours is %.4f days.\n\n", value, value*HOU_DAY );
                        else if ( unit == 'h' && convert == 'o' )
                                printf( "%.4f hours is %.4f months.\n\n", value, value*HOU_DAY*DAY_MON );
                        else if ( unit == 'h' && convert == 'y' )
                                printf( "%.4f hours is %.4f years.\n\n", value, value*HOU_DAY*DAY_YEA );
 
                        else if( unit == 'd' && convert == 's' )
                                printf( "%.4f days is %.4f seconds.\n\n", value, value*DAY_HOU*HOU_MIN*MIN_SEC );
                        else if ( unit == 'd' && convert == 'm' )
                                printf( "%.4f days is %.4f minutes.\n\n", value, value*DAY_HOU*HOU_MIN );
                        else if ( unit == 'd' && convert == 'h' )
                                printf( "%.4f days is %.4f hours.\n\n", value, value*DAY_HOU );
                        else if( unit == 'd' && convert == 'd' )
                                printf( "%.4f days is %.4f days.\n\n", value, value*1 );
                        else if ( unit == 'd' && convert == 'o' )
                                printf( "%.4f days is %.4f months.\n\n", value, value*DAY_MON );
                        else if ( unit == 'd' && convert == 'y' )
                                printf( "%.4f days is %.4f years.\n\n", value, value*DAY_YEA );
 
                        else if( unit == 'o' && convert == 's' )
                                printf( "%.4f months is %.4f seconds.\n\n", value, value*MON_DAY*DAY_HOU*HOU_MIN*MIN_SEC );
                        else if ( unit == 'o' && convert == 'm' )
                                printf( "%.4f months is %.4f minutes.\n\n", value, value*MON_DAY*DAY_HOU*HOU_MIN );
                        else if ( unit == 'o' && convert == 'h' )
                                printf( "%.4f months is %.4f hours.\n\n", value, value*MON_DAY*DAY_HOU );
                        else if( unit == 'o' && convert == 'd' )
                                printf( "%.4f months is %.4f days.\n\n", value, value*MON_DAY );
                        else if ( unit == 'o' && convert == 'o' )
                                printf( "%.4f months is %.4f months.\n\n", value, value*1 );
                        else if ( unit == 'o' && convert == 'y' )
                                printf( "%.4f months is %.4f years.\n\n", value, value*MON_YEA );
 
                        else if( unit == 'y' && convert == 's' )
                                printf( "%.4f years is %.4f seconds.\n\n", value, value*YEA_DAY*DAY_HOU*HOU_MIN*MIN_SEC );
                        else if ( unit == 'y' && convert == 'm' )
                                printf( "%.4f years is %.4f minutes.\n\n", value, value*YEA_DAY*DAY_HOU*HOU_MIN );
                        else if ( unit == 'y' && convert == 'h' )
                                printf( "%.4f years is %.4f hours.\n\n", value, value*YEA_DAY*DAY_HOU );
                        else if( unit == 'y' && convert == 'd' )
                                printf( "%.4f years is %.4f days.\n\n", value, value*YEA_DAY );
                        else if ( unit == 'y' && convert == 'o' )
                                printf( "%.4f years is %.4f months.\n\n", value, value*YEA_MON );
                        else if ( unit == 'y' && convert == 'y' )
                                printf( "%.4f years is %.4f years.\n\n", value, value*1 );
 
                        else
                        {
                                notok = TRUE;
                                printf( "\n\nERROR! You have inputed incompatible dimensions.\n\n\n" );
                        }
                        }

                else if ( quantity == 'w' )
                        {
                        notok = FALSE;
                        if( unit == 'l' && convert == 'l' )
                                printf( "%.4f lbs is %.4f lbs.\n\n", value, value*LBS_LBS );
                        else if ( unit == 'l' && convert == 'g' )
                                printf( "%.4f lbs is %.4f grams.\n\n", value, value*LBS_GRAMS );
                        else if ( unit == 'l' && convert == 'k' )
                                printf( "%.4f lbs is %.4f kilograms.\n\n", value, value*LBS_KILOGRAMS );
                        else if( unit == 'g' && convert == 'l' )
                                printf( "%.4f grams is %.4f lbs.\n\n", value, value*GRAMS_LBS );
                        else if ( unit == 'g' && convert == 'g' )
                                printf( "%.4f grams is %.4f grams.\n\n", value, value*GRAMS_GRAMS );
                        else if ( unit == 'g' && convert == 'k' )
                                printf( "%.4f grams is %.4f kilograms.\n\n", value, value*GRAMS_KILOGRAMS );
                        else if( unit == 'k' && convert == 'l' )
                                printf( "%.4f kilograms is %.4f lbs.\n\n", value, value*KILOGRAMS_LBS );
                        else if ( unit == 'k' && convert == 'g' )
                                printf( "%.4f kilograms is %.4f grams.\n\n", value, value*KILOGRAMS_GRAMS );
                        else if ( unit == 'k' && convert == 'k' )
                                printf( "%.4f kilograms is %.4f kilograms.\n\n", value, value*KILOGRAMS_KILOGRAMS );
                        else
                        {
                                notok = TRUE;
                                printf( "\n\nERROR! You have inputed incompatible dimensions.\n\n\n" );
                        }
                        }

                else
                        {
                        notok = TRUE;
                        printf( "\n\nThat is not a valid quantity.\n\n\n" );
                        }
}
}


Home Contents



© Francis O'Donovan 1999.