home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / misc / learnq / learnq.pas < prev    next >
Pascal/Delphi Source File  |  1988-10-28  |  5KB  |  187 lines

  1. Program learnq;
  2.  
  3. {
  4.  
  5. Ver 1.0    Oct 26,1988
  6.  
  7.  
  8.    An Amateur radio Qcode (QSO,QSL,etc) drill program
  9.    --------------------------------------------------
  10.  
  11. Peter Laidlaw
  12. No. 3 Squires Avenue,
  13. Toronto,Ontario,
  14. Canada.
  15. M4B-2R2
  16.  
  17. This program was written to assist prospective amateur operators (me)
  18. in learning the Qcodes. Personally, I found that many of the
  19. Qcodes are of no value however according to the Canadian DOC any one of them
  20. can show up on the test. I don't like flunking tests even though
  21. it requires learning something useless - hence, this program.
  22.  
  23. Just run it. Its simple. All you have to do is to answer the questions
  24. over and over until you've memorized the Qcodes. I found that I
  25. knew all the ones that are used on the ham bands but the message
  26. related ones were difficult. In the course of using this program
  27. I found that somehow my mind came up with nemonics to key my memory
  28. on the Qcodes..like QTC Q-TeleCrams .. silly but it worked. Now I Know
  29. them all!
  30.  
  31. The program and source code are free. If you improve upon it, Please
  32. send me a revised copy on floppy. It was written for PC's using
  33. Turbo Pascal IV, compiled with software arithmitic.
  34.  
  35. Hope it helps someone else! When I took the DOC test there were 7
  36. questions on Qcodes out of 25 questions total.
  37. }
  38.  
  39.  
  40. Uses crt;
  41. label loop,start;
  42.  
  43. var
  44.    qcode                             :   array[0..27] of string[5];
  45.    meaning                           :   array[0..27] of string[35];
  46.    know                              :   array[0..27] of string[3];
  47.    letter                            :   packed array [0..27] of char;
  48.    file1                             :   text;
  49.    play,ltr,ranvalue,guess,item      :   char;
  50.    i,j,k,noise,ran                   :   integer;
  51.    truescore,numtries,score,pcright  :   real;
  52.    set1                              :   set of char;
  53.  
  54. begin
  55.  
  56.  
  57.        clrscr;
  58.  
  59. start:  assign(file1,'QQQ.SDF');
  60.         reset (file1);
  61.         letter:='ABCDEFGHIJKLMNOPQRSTUVWXYZ10';
  62.         for i:=0 to 27 do
  63.           begin
  64.            readln(file1,qcode[i],meaning[i],know[i]);
  65.         {    writeln(qcode[i]:3,' ',meaning[i]:35,' ',know[i]:3);}
  66.           end;
  67.  
  68.  
  69.   for i:=0 to 13 do
  70.    begin
  71.    j:=i+1;
  72.    gotoxy(2,j);
  73.    write(letter[i]:1,'   ',meaning[i]:30);
  74.    gotoxy(38,j);
  75.    write(letter[i+14]:1,'   ',meaning[i+14]:30);
  76.    gotoxy(1,15);
  77.    write('-----------------------------------------------------------------------');
  78.    end;
  79.  
  80.  
  81.    numtries:=0.0;
  82.    score:=0.0;
  83.    set1:=[]; {this set contains the items which the user knows}
  84.  
  85.  
  86.     repeat
  87.  
  88.      {this produces a new random qcode to test the user}
  89.      randomize;
  90. loop:ran:=random(27);
  91.      ranvalue := letter[ran];
  92.      if(ranvalue in set1) then goto loop;
  93.  
  94.      gotoxy(15,20);
  95.      write(qcode[ran],' - Enter the correct number : ');
  96.  
  97.     gotoxy(50,20);
  98.     write('   ');
  99.     gotoxy(50,20);
  100.     guess:=upcase(readkey);
  101.  
  102.     gotoxy(15,22);
  103.      if(guess = ranvalue) then
  104.       begin
  105.        set1:=set1+[guess];
  106. {
  107. gotoxy(2,24);
  108. for item := 'A' to 'Z' do
  109. if item in set1 then write(item);
  110. gotoxy(15,22);
  111. }
  112.  
  113.        score:=score+1.0;
  114.        write('Right          - ',qcode[ran]:3,'Means:',meaning[ran]:30);
  115.        sound(440);delay(100);nosound;
  116.  
  117.  
  118.        if(ran<=13) then
  119.        begin
  120.        gotoxy(1,ran+1);write('                                    ');
  121.        end;
  122.  
  123.  
  124.        if(ran>13) then
  125.        begin
  126.        gotoxy(35,ran-13);write('                                    ');
  127.        end
  128.  
  129.  
  130.       end
  131.  
  132.        else write('                                                          ');
  133.  
  134.      gotoxy(15,23);
  135.      if ((guess <> ranvalue) and (guess <> '0')) then
  136.       begin
  137.        write('Wrong you goof - ',qcode[ran]:3,'Means: ',meaning[ran]:30);
  138.        for noise := 1 to 10 do
  139.        begin
  140.         sound(50);delay(10);nosound;
  141.        end;
  142.       end
  143.       else write('                                                          ');
  144.  
  145.      {calculate and write the score}
  146.      if guess<>'0' then numtries:=numtries+1.0;
  147.      if guess<>'0' then truescore:=100.0*(score/numtries);
  148.      pcright:=(score/27)*100.0;
  149.  
  150.      gotoxy(5,16); write('Number of tries: ',numtries:5:0);
  151.      gotoxy(5,17); write('Number right   : ',score:5:0);
  152.      gotoxy(5,18); write('Number wrong   : ',(numtries-score):5:0);
  153.  
  154.      gotoxy(43,16); write('Current score  : ',truescore:5:1,' %');
  155.      gotoxy(43,17); write('Percent right  : ',pcright:5:1,' %');
  156.      gotoxy(43,18); write('               : ');
  157.  
  158.  
  159.    until ((guess = '0') or( score=27));
  160.  
  161.        for noise :=500 to 2000 do
  162.        begin
  163.         sound(noise*2);
  164.        end;
  165.        nosound;
  166.  
  167.        clrscr;
  168.      gotoxy(5,2 ); write('Number of tries: ',numtries:5:0);
  169.      gotoxy(5,3 ); write('Number right   : ',score:5:0);
  170.      gotoxy(5,4 ); write('Number wrong   : ',(numtries-score):5:0);
  171.  
  172.      gotoxy(43,2 ); write('Current score  : ',truescore:5:1,' %');
  173.      gotoxy(43,3 ); write('Percent right  : ',pcright:5:1,' %');
  174.      gotoxy(43,4 ); write('               : ');
  175.  
  176.          play:='N';
  177.          close(file1);
  178.          gotoxy(30,13);write('Want to play again (Y/N) ? ');
  179.          gotoxy(58,13);write(play);
  180.          gotoxy(58,13);
  181.          play:=readkey;
  182.          gotoxy(58,13);write(play);
  183.          if((play ='Y') or( play= 'y')) then goto start;
  184.          clrscr;
  185. end.
  186.  
  187.