Please Help with this program 
Author Message
 Please Help with this program

  I would REALLY appreciate any help anyone could give on this program
as to why it is not doing what it should. This program is supposed to
use the multi-aray 'index' as a lookup table for calculating the wind
chill factor. Temperature is on the x axis and Wind velocity is on the
y axis. It would be a simple lookup with array subscripting except my
instructor threw a twist on it. He wants it to calculate any number
entered. (Each row and columns are in multiples of 10) So if a user
enters a temp of 12 and wind velocity of 23 then the computer can
figure it by linear interpolation. My instructor said to use the
distance formula for getting the distance to each of the corners
(do,d1,d2,d3) then to take those numbers and plug them into a weight
function. The formulas are in the program but something isn't working
right. Another immediate problem is that I JUST began using a macro
definition (SQR) and for some reason it isn't working. It keeps giving
me a 'undefined x' error. I am not sure how to #define this macro so
that it will work with my formulas. Well you could have a field day
with this program. If you can make any sense out of it at all, you
have my respect! Please ask any questions for more info if you need
it. I even asked the c.s. tutor and he couldn't even figure this one
out.

Thanks again,
Ryan

The terror begins here:
-------------------------------------------------------------------------------------------

#include <stdio.h>
#include <math.h>

#define SQR ((x)*(x))
#define NUM_TEMP 9
#define NUM_WIND 6

void error(void);

main()
{
  int itemp=0, iwind=0, d0=0, d1=0, d2=0, d3=0, wc=0, nd0=0, nd1=0,
nd2=0, nd3=0;
  double temp=0, wind=0, ftemp=0, fwind=0, ntemp=0, nwind=0;
  double index[NUM_TEMP][NUM_WIND] = /*I moved the array down for
clarity */
{{-20, -30, -55, -80, -105,-115},
 {-10, -20, -46, -63, -82,  -102},
 {  0,  -14,   -33, -52, -68,  -78 },
 { 10,  -5, -18, -35, -57,  -75    },
 { 20, 1, -12, -28, -42, -62       },
 { 30,  10,  -2, -14, -24,  -34    }
{ 40,  21,   8,  -1, -10,    -29    },
{ 50,  33,  22,  11,   2,  -8        },
{ 60,  42,  38,  22,  -9,   12     }};

  puts("Enter temperature (in F, 50 to -20): ");
  scanf("%lf", &temp);
        if (temp > 59 || temp < -20)
                error();                                                                                                                /* Give an error */

  puts("Enter wind speed (in MPH): ");
  scanf("%lf", &wind);
    if (wind > 49 || wind < 0)
                error();                                                                                                        /* Give an error */

  ntemp = ((temp + 20) / 10);
  nwind = (wind / 10);

  ftemp = temp - (int) temp;
  fwind = wind - (int) wind;

  itemp = ntemp - (float) temp;
  iwind - nwind - (float) wind;

  d0=sqrt((SQR(ntemp-ftemp)) + (SQR(nwind-fwind)));
  d1=sqrt((SQR(ntemp-ftemp)) + (SQR(nwind-fwind)));
  d2=sqrt((SQR(ntemp-ftemp)) + (SQR(nwind-fwind)));
  d3=sqrt((SQR(ntemp-ftemp)) + (SQR(nwind-fwind)));

  nd0=(SQR(1.4142135623 - d0) / 2);
  nd1=(SQR(1.4142135623 - d1) / 2);
  nd2=(SQR(1.4142135623 - d2) / 2);
  nd3=(SQR(1.4142135623 - d3) / 2);

wc=(nd0*index[itemp][iwind])+(nd1*index[itemp+1][iwind])+(nd2*index[itemp][iwind+1])+(nd3*index[itemp+1][iwind+1]);

  printf("\n\nThe wind chill factor would be: %g Degrees
Fahrenheit.",wc);

  return 0;

Quote:
}

void error(void)
{
      printf("\nYou entered a value out of range");

   exit (1);

Quote:
}



Sat, 28 Aug 1999 03:00:00 GMT  
 Please Help with this program

The SQR macro should read...

        #define SQR(x) ((x) * (x))

Even with that fix, the program gives weird results!



Quote:
>   I would REALLY appreciate any help anyone could give on this program



Sat, 28 Aug 1999 03:00:00 GMT  
 Please Help with this program

Quote:

>   I would REALLY appreciate any help anyone could give on this program
> as to why it is not doing what it should. This program is supposed to
> use the multi-aray 'index' as a lookup table for calculating the wind
> chill factor. Temperature is on the x axis and Wind velocity is on the
> y axis. It would be a simple lookup with array subscripting except my
> instructor threw a twist on it. He wants it to calculate any number
> entered. (Each row and columns are in multiples of 10) So if a user
> enters a temp of 12 and wind velocity of 23 then the computer can
> figure it by linear interpolation. My instructor said to use the
> distance formula for getting the distance to each of the corners
> (do,d1,d2,d3) then to take those numbers and plug them into a weight
> function. The formulas are in the program but something isn't working
> right. Another immediate problem is that I JUST began using a macro
> definition (SQR) and for some reason it isn't working. It keeps giving
> me a 'undefined x' error. I am not sure how to #define this macro so
> that it will work with my formulas. Well you could have a field day
> with this program. If you can make any sense out of it at all, you
> have my respect! Please ask any questions for more info if you need
> it. I even asked the c.s. tutor and he couldn't even figure this one
> out.

> Thanks again,
> Ryan

> The terror begins here:
> -------------------------------------------------------------------------------------------

> #include <stdio.h>
> #include <math.h>

> #define SQR ((x)*(x))

Write "#define SQR(x) ((x)*(x))" instead (this *should* be in
your compiler manual).

- Show quoted text -

Quote:
> #define NUM_TEMP 9
> #define NUM_WIND 6

> void error(void);

> main()
> {
>   int itemp=0, iwind=0, d0=0, d1=0, d2=0, d3=0, wc=0, nd0=0, nd1=0,
> nd2=0, nd3=0;
>   double temp=0, wind=0, ftemp=0, fwind=0, ntemp=0, nwind=0;
>   double index[NUM_TEMP][NUM_WIND] = /*I moved the array down for
> clarity */
> {{-20, -30, -55, -80, -105,-115},
>  {-10, -20, -46, -63, -82,  -102},
>  {  0,  -14,   -33, -52, -68,  -78 },
>  { 10,  -5, -18, -35, -57,  -75    },
>  { 20, 1, -12, -28, -42, -62       },
>  { 30,  10,  -2, -14, -24,  -34    }                                     ^^^

There is a ',' missing here.

- Show quoted text -

Quote:
> { 40,  21,   8,  -1, -10,    -29    },
> { 50,  33,  22,  11,   2,  -8        },
> { 60,  42,  38,  22,  -9,   12     }};

>   puts("Enter temperature (in F, 50 to -20): ");
>   scanf("%lf", &temp);
>         if (temp > 59 || temp < -20)
>                 error();  /* Give an error */

>   puts("Enter wind speed (in MPH): ");
>   scanf("%lf", &wind);
>     if (wind > 49 || wind < 0)
>                 error(); /* Give an error */

>   ntemp = ((temp + 20) / 10);
>   nwind = (wind / 10);

>   ftemp = temp - (int) temp;
>   fwind = wind - (int) wind;

>   itemp = ntemp - (float) temp;
>   iwind - nwind - (float) wind;

This as a 'void' expression: it calculates something, but the result is
lost, because you do not assign it to anything.
Maybe you wanted to write: "iwind = nwind - (float) wind;"

Quote:

>   d0=sqrt((SQR(ntemp-ftemp)) + (SQR(nwind-fwind)));
>   d1=sqrt((SQR(ntemp-ftemp)) + (SQR(nwind-fwind)));
>   d2=sqrt((SQR(ntemp-ftemp)) + (SQR(nwind-fwind)));
>   d3=sqrt((SQR(ntemp-ftemp)) + (SQR(nwind-fwind)));

>   nd0=(SQR(1.4142135623 - d0) / 2);
>   nd1=(SQR(1.4142135623 - d1) / 2);
>   nd2=(SQR(1.4142135623 - d2) / 2);
>   nd3=(SQR(1.4142135623 - d3) / 2);

> wc=(nd0*index[itemp][iwind])+(nd1*index[itemp+1][iwind])+(nd2*index[itemp][iwind+1])+(nd3*index[itemp+1][iwind+1]);

>   printf("\n\nThe wind chill factor would be: %g Degrees Fahrenheit.",wc);                                               ^^^^

Wrong 'printf' format specification: the argument is of type 'int' not
'double', so you should use '%d'.

Quote:

>   return 0;
> }

> void error(void)
> {
>       printf("\nYou entered a value out of range");

>    exit (1);

The prototype for 'exit()' is not in scope. You should include "stdlib.h".

Quote:
> }

MAYBE, just maybe, your program will work after making the corrections
indicated above, but it is unlikely. I didn't check, if the results are
correct, but your program contains a wild mix of various different data types
(mostly 'int' and 'double') in very suspect combinations.
Your compiler will have to perform a lot of implicite type conversions.

Stephan



Sun, 29 Aug 1999 03:00:00 GMT  
 Please Help with this program

Quote:

> #define SQR ((x)*(x))

    This should be something like...

        #define SQR(x)    ( (x) * (x) )

    Perhaps you should output intermediate results between your
    calculations, to check that you're getting the right numbers at
    each step.



Sun, 29 Aug 1999 03:00:00 GMT  
 
 [ 4 post ] 

 Relevant Pages 

1. please help with this program

2. PLEASE help UDP client programming

3. please help with this program

4. Please Help With C Program

5. Please help with C program

6. please help with this program

7. Please help beginner with programming problem

8. Oh gurus, please help getting VC program into DLL

9. Please help S3- card programming under TC?

10. Please help!!!!Please help!!!!Please help!!!!Please help!!!!Please help!!!!Please help!!!!Please help!!!!

11. Please help, question about programming in C to access COM1/COM2 in my FreeBSD.

12. Please help!!!!Please help!!!!Please help!!!!

 

 
Powered by phpBB® Forum Software