home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / vrac / afcalc.zip / AFCALC.C next >
C/C++ Source or Header  |  1995-07-31  |  5KB  |  247 lines

  1. /*--------------------------------------------------------------------------*/
  2. /*                                  AFCALC.C                                */
  3. /*--------------------------------------------------------------------------*/
  4. /*                         Antenna Factor Calculator                        */
  5. /*                               Version 1.00                               */
  6. /*                         Written by James Eagleson                        */
  7. /*                          Copyright - August 1995                         */
  8. /*--------------------------------------------------------------------------*/
  9. /* j. eagleson, WB6JNN                                                      */
  10. /* First Release: Version 1.00,  August 1, 1995                             */
  11. /*                                                                          */
  12. /* ------------------------------------------------------------------------ */
  13.  
  14.  
  15.  
  16. #include <stdio.h>
  17. #include <conio.h>
  18. #include <math.h>
  19.  
  20. /* FUNCTIONS */
  21.  
  22. int menu_select(void);
  23. int af_to_gain(void);
  24. int gain_to_af(void);
  25. int frame(int a, int b, int c, int d);
  26.  
  27. /* VARIABLES */
  28.  
  29. char ch;
  30.  
  31. int item;
  32. int pause;
  33. int top, left, right, bottom;
  34.  
  35. double ga_dbi;
  36. double ga_ratio;
  37. double frequency;
  38. double ant_factor;
  39.  
  40.  
  41. int main()
  42. {
  43.  
  44.   textbackground(WHITE);
  45.   clrscr();
  46.  
  47.   while(ch!='q')
  48.   {
  49.  
  50.  
  51.     if(ch=='1')
  52.     {
  53.       gain_to_af();
  54.     }
  55.  
  56.     if(ch=='2')
  57.     {
  58.       af_to_gain();
  59.     }
  60.  
  61.     menu_select();
  62.  
  63.   }
  64.  
  65.   window(1,1,80,25);
  66.   textcolor(WHITE);
  67.   textbackground(BLACK);
  68.   clrscr();
  69.  
  70.   return(0);
  71. } /* END OF MAIN() */
  72.  
  73.  
  74.  
  75.  
  76. /***************************  MENU_SELECT()  ****************************/
  77.  
  78. int menu_select(void)
  79. {
  80.  
  81.  
  82.   clrscr();
  83.   frame(2, 2, 79, 24);
  84.  
  85.   gotoxy(6,5);
  86.   cprintf( "     >>>>>>>>>>>>  ANTENNA FACTOR CALCULATOR v1.00  <<<<<<<<<<<");
  87.   gotoxy(6,6);
  88.   cprintf( "                      J. Eagleson WB6JNN c 1995");
  89.   gotoxy(6,9);
  90.   cprintf( "                         CALCULATE:"            );
  91.   gotoxy(6,11);
  92.   cprintf( "                           1) Antenna Factor"   );
  93.   gotoxy(6,12);
  94.   cprintf( "                           2) Antenna Gain  "   );
  95.   gotoxy(6,14);
  96.   cprintf( "                               q = quit"        );
  97.   gotoxy(6,17);
  98.   cprintf( "                           Enter selection.."   );
  99.   ch=getch();
  100.  
  101.   return(0);
  102.  
  103. } /* END OF MENU_SELECT() */
  104.  
  105.  
  106.  
  107.  
  108. /* ******************* ANTENNA FACTOR FROM GA & FR **********************/
  109.  
  110. gain_to_af()
  111. {
  112.  
  113.   double ga_dbi;
  114.   double ga_ratio;
  115.   double frequency;
  116.   double ant_factor;
  117.  
  118.   clrscr();
  119.   frame(2, 2, 79, 24);
  120.  
  121.   gotoxy(6,6);
  122.   cprintf("                      ANTENNA FACTOR CALCULATION" );
  123.   gotoxy(6,7);
  124.   cprintf("                           (Gain/Freq known)    " );
  125.   gotoxy(6,9);
  126.   cprintf("                           Gain (dBi) = "         );
  127.   cscanf("%lf",&ga_dbi);
  128.   flushall();
  129.   ga_ratio=pow(10,(ga_dbi/10));
  130.   gotoxy(6,10);
  131.   cprintf("                         Gain (ratio) = %3.2lf",ga_ratio);
  132.   gotoxy(6,12);
  133.   cprintf("                      Frequency (MHz) = "         );
  134.   cscanf("%lf",&frequency);
  135.   flushall();
  136.   ant_factor=(20*log10(frequency/(30.82*sqrt(ga_ratio))));
  137.   gotoxy(6,14);
  138.   cprintf("                       Antenna Factor = %3.2lf ",ant_factor);
  139.   gotoxy(6,16);
  140.   cprintf("                      <c> = continue, <q> = quit ");
  141.   cscanf("%d",&pause);
  142.   flushall();
  143.  
  144.   return(0);
  145. }
  146.  
  147.  
  148.  
  149.  
  150. /* ***************** CALCULATE ANTENNA GAIN FROM FR & AF *****************/
  151.  
  152.  
  153. af_to_gain()
  154. {
  155.  
  156.   clrscr();
  157.   frame(2, 2, 79, 24);
  158.  
  159.   gotoxy(6,7);
  160.   cprintf("                      ANTENNA GAIN CALCULATION"         );
  161.   gotoxy(6,8);
  162.   cprintf("                           (AF/Freq known)    "         );
  163.   gotoxy(6,10);
  164.   cprintf("                      Antenna Factor(dB) = "            );
  165.   cscanf("%lf",&ant_factor);
  166.   gotoxy(6,11);
  167.   cprintf("                         Frequency (MHz) = "            );
  168.   cscanf("%lf",&frequency);
  169.   ga_ratio=pow(frequency/(30.82*pow(10,(ant_factor/20))),2);
  170.   gotoxy(6,13);
  171.   cprintf("                         Gain (ratio) = %3.2lf",ga_ratio);
  172.   ga_dbi=10*log10(ga_ratio);
  173.   gotoxy(6,14);
  174.   cprintf("                         Gain (dBi)   = %3.2lf",  ga_dbi);
  175.   gotoxy(6,16);
  176.   cprintf("                     <c> = continue, <q> = quit "       );
  177.   cscanf("%d",&pause);
  178.   flushall();
  179.  
  180.   return(0);
  181. } /* END OF AF_TO_GAIN() */
  182.  
  183.  
  184.  
  185.  
  186.  
  187. /*********************************  FRAME() ********************************/
  188.  
  189.  
  190. #define      ULCOR      201
  191. #define      URCOR      187
  192. #define      LLCOR      200
  193. #define      LRCOR      188
  194. #define      VBAR       186
  195. #define      HBAR       205
  196.  
  197.  
  198. frame(top, left, right, bottom)
  199.  
  200.  
  201. {
  202.   int i, y;
  203.  
  204.   window(top+1, left+1, right, bottom);
  205.   textbackground(BLACK);
  206.   clrscr();
  207.  
  208.   window(top,left,right-1,bottom-1);
  209.   textbackground(BLUE);
  210.   textcolor(YELLOW);
  211.   clrscr();
  212.  
  213.   gotoxy(2,2);
  214.   putch(ULCOR);
  215.  
  216.   for(i = 3; i < ((right-left)-1); i++)
  217.   {
  218.     putch(HBAR);
  219.   }
  220.  
  221.   putch(URCOR);
  222.  
  223.   for(i = 3; i < ((bottom-top)-1); i++)
  224.   {
  225.  
  226.     gotoxy(2,i);
  227.     putch(VBAR);
  228.  
  229.     gotoxy(((right-left)-1),i);
  230.     putch(VBAR);
  231.  
  232.   }
  233.  
  234.  
  235.   gotoxy(2,i);
  236.   putch(LLCOR);
  237.  
  238.   for(i= 3; i < ((right-left)-1); i++)
  239.   {
  240.     putch(HBAR);
  241.   }
  242.  
  243.   putch(LRCOR);
  244.  
  245.   return(0);
  246. }
  247.