Advertisement
Guest User

HARDCORE_LABA_01

a guest
Apr 22nd, 2014
1,172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 29.25 KB | None | 0 0
  1. program lab;
  2.  
  3.  
  4. uses
  5.         windows, crt;
  6.  
  7.  
  8.  
  9. label showMassive,showCPUtime,ShowSortResult,sortingstats,showmdlngrsltAve,showmdlngrsltFull,search,1,11,111,1111,112,113,12,121,1211,122,123,13,131,132,133,14,666;
  10.  
  11.  
  12.  
  13. procedure numSorting(scn:integer;a:array of integer;srtdA:array of integer;anum:array of integer;var srtdnum:array of integer);
  14. var i,j,k,povt:integer;
  15. begin
  16.         for i:=1 to scn do
  17.                 begin
  18.                         povt:=0;
  19.                         for j:=1 to scn do
  20.                                 begin
  21.                                         if srtdA[i]=a[j] then
  22.                                                 begin
  23.                                                    srtdnum[i]:=anum[j];
  24.                                                         if i>1 then
  25.                                                                 begin
  26.                                                                      for k:=1 to i-1 do
  27.                                                                            if srtdnum[i]=srtdnum[k] then
  28.                                                                              begin
  29.                                                                                 povt:=1;
  30.                                                                                 break;
  31.                                                                              end
  32.                                                                            else
  33.                                                                                 povt:=0;
  34.                                                                 end;
  35.                                                          if povt=1 then
  36.                                                                 continue;
  37.  
  38.  
  39.  
  40.  
  41.                                                 break;
  42.                                                 end;
  43.  
  44.                                 end;
  45.                 end;
  46. end;
  47. procedure Sliv(var a:array of integer;p,q : integer;var com1,per1:int64);{Їа®жҐ¤га  б«Ёў ой п ¬ ббЁўл, p-­ з «®, q-Є®­Ґж}
  48. var r,i,j,k : integer;
  49.     b:array[1..10000]of integer;
  50.  
  51. begin
  52.  r:=(p+q) div 2;{¤Ґ«Ё¬ ¬ ббЁў}
  53.  i:=p;{­ з «® «Ґў®© Ї®«®ўЁ­л}
  54.  j:=r+1;{­ з «® Їа ў®© Ї®«®ўЁ­л}
  55.  for k:=p to q do{ᬮваЁ¬ ®в ­ з «  ¤® Є®­ж }
  56.  begin
  57.  com1:=com1+3;
  58.  if (i<=r) and ((j>q) or (a[i]<a[j])) then
  59.  {ЇҐаҐбв ў«пҐ¬ н«Ґ¬Ґ­вл Ё§ Ї®«®ўЁ­ ў ­®ўл© ¬ ббЁў, гЇ®а冷稢 п Ї ал}
  60.   begin
  61.  
  62.    per1:=per1+1;
  63.    b[k]:=a[i];
  64.    i:=i+1;
  65.   end
  66.  else
  67.   begin
  68.  
  69.    per1:=per1+1;
  70.    b[k]:=a[j];
  71.    j:=j+1;
  72.   end ;
  73.   end;
  74.  for k:=p to q do
  75.  begin
  76.  per1:=per1+1;
  77.  a[k]:=b[k];
  78.  end;
  79. end;
  80. {४габЁў­ п Їа®жҐ¤га  б®авЁа®ўЄЁ, Їа®ўҐапҐв Ґб«Ё ®бв «®бм
  81. Ў®«миҐ ®¤­®Ј® н«Ґ¬Ґ­в , Ї®ўв®апҐв б«Ёп­ЁҐ ў «Ґў®© Ё«Ё Їа ў®© з бвпе ¬ ббЁў }
  82. procedure Sort(var a:array of integer;p,q : integer;var com,per:int64); {p,q - Ё­¤ҐЄбл ­ з «  Ё Є®­ж  б®авЁа㥬®© з бвЁ ¬ ббЁў }
  83. begin
  84.  if p<q then {¬ ббЁў Ё§ ®¤­®Ј® н«Ґ¬Ґ­в  ваЁўЁ «м­® гЇ®а冷祭}
  85.  begin
  86.   Sort(a,p,(p+q) div 2,com,per);{б®авЁа㥬 «Ґўго Ї®«®ўЁ­г}
  87.   Sort(a,(p+q) div 2 + 1,q,com,per);{Їа ўго Ї®«®ўЁ­г}
  88.   Sliv(a,p,q,com,per);{б«Ёў Ґ¬ ¤ўҐ Ї®«®ўЁ­л}
  89.  end;
  90. end;
  91.  
  92.  
  93. var
  94.         i,j,k,l:integer; {ЇҐаҐ¬Ґ­­лҐ жЁЄ«®ў}
  95.         f,e:text; {а Ў®в  б ⥪б⮬}
  96.         p1,p11,p12,p13:string; {Їг­Єв ¬Ґ­о (бва®Є®ўл© вЁЇ)}
  97.         cp1,cp11,cp12,cp13:integer; {Їг­Єв ¬Ґ­о}
  98.         n,CPUn:string; {Є®«-ў® Ї®в®Є®ў/ўаҐ¬Ґ­ Їа®ж-а  (бва®Є®ўл© вЁЇ)}
  99.         cn,cCPUn:integer; {Є®«-ў® Ї®в®Є®ў/ўаҐ¬Ґ­ Їа®ж-а }
  100.         c:integer; {"§ йЁв  ®в ¤га Є®ў"}
  101.         MINthrd:integer; {¬Ё­Ё¬ «м­л© Ї®в®Є (б®авЁа®ўЄ  ўлЎ®а®¬)}
  102.         MINthrdNUM:integer; {­®¬Ґа ¬Ё­Ё¬ «м­®Ј® Ї®в®Є  (б®авЁа®ўЄ  ўлЎ®а®¬)}
  103.         res,start1,finish1,start2,finish2,start3,finish3:int64; {Ё§¬ҐаҐ­ЁҐ ўаҐ¬Ґ­Ё}
  104.         permnum1,comparsnum1,permnum2,comparsnum2,permnum3,comparsnum3:int64; {Є®«ЁзҐбвў® ЇҐаҐбв ­®ў®Є Ё ба ў­Ґ­Ё©}
  105.         sthread:array [0..10000]of string; {Ї®в®ЄЁ (бва®Є. вЁЇ)}
  106.         thread:array [0..10000]of integer; {Ї®в®ЄЁ}
  107.         sortedthrd:array [0..10000] of integer; {б®авЁа®ў ­­л© ¬ ббЁў Ї®в®Є®ў}
  108.         sortednum:array [0..10000] of integer; {б®авЁа®ў ­­л© ¬ ббЁў ­®¬Ґа®ў Ї®в®Є®ў}
  109.         num:array [0..10000]of integer; {­®¬Ґа  н«-в®ў ¬ бЁў }
  110.         cs:array [byte]of integer; {б®авЁа®ўЄ  Ї®¤бзҐв®¬ (ўбЇ®¬. ¬ ббЁў)}
  111.         sort3:integer; {Їа®ўҐапҐв, ўлЇ®«­п« бм «Ё б®авЁа®ўЄ  Ї®¤бзҐв®¬}
  112.         sCPUtime:array [0..10000] of string; {ўаҐ¬Ґ­  Їа®ж-а  (бва®Є. вЁЇ)}
  113.         CPUtime:array [1..10000]of integer; {ўаҐ¬Ґ­  Їа®ж-а }
  114.  
  115.  
  116.         used:array[1..1000] of integer;
  117.         manual:byte;
  118.         usedthrds:integer;
  119.         ost:integer;
  120.         bin:integer;
  121.         min,max,mid:integer;
  122.         mdldmas,mdldnum:integer;
  123.         sumcpu,realsumcpu:integer;
  124.         stroka:integer;
  125.         found:integer;
  126.  
  127.  
  128.  
  129.  
  130.  
  131. begin
  132.  
  133.         sort3:=0;
  134.         queryperformancefrequency (res);
  135.         1:clrscr;
  136.         writeln ('                            ***OS Thread scheduler Emulator***');
  137.         writeln ('    Main Menu (Choose point 1-8)');
  138.         writeln (' 1.Insert threads');
  139.  
  140.         writeln (' 2.Sorting');
  141.         writeln (' 3.Modelling');
  142.  
  143.  
  144.  
  145.         writeln (' 4.Exit');
  146.         readln (p1);
  147.         clrscr;
  148.         val (p1,cp1,c);
  149.         if c <> 0 then
  150.                 begin
  151.                         writeln;
  152.                         writeln ('ERROR! Insert number from 1 to 8 (Press Enter to back to menu)');
  153.                         readln;
  154.                         goto 1;
  155.                 end;
  156.         case cp1 of
  157.         1: goto 11;
  158.  
  159.         2: begin
  160.                 if cn=0 then
  161.                         begin
  162.                                 clrscr;
  163.                                 writeln ('You must insert threads first');
  164.                                 readln;
  165.                                 goto 1;
  166.                         end;
  167.                 goto 13;
  168.            end;
  169.         3: begin
  170.                 if cn=0 then
  171.                         begin
  172.                                 clrscr;
  173.                                 writeln ('You must insert threads first');
  174.                                 readln;
  175.                                 goto 1;
  176.                         end
  177.                 else
  178.                         begin
  179.                                 if sortednum[1]=0 then
  180.                                   begin
  181.                                     clrscr;
  182.                                     writeln ('You must sort theads first');
  183.                                     readln;
  184.                                     goto 1;
  185.                                   end
  186.                                 else
  187.                                   if cCPUn=0 then
  188.                                     begin
  189.                                       clrscr;
  190.                                       writeln ('You must insert CPU times first');
  191.                                       readln;
  192.                                       goto 12;
  193.                                     end;
  194.                         end;
  195.                 goto 14;
  196.            end;
  197.  
  198.         4: goto 666;
  199.         else writeln ('Choose point 1-4 (Enter=Ok)'); readln; goto 1;
  200.         end;
  201.         11:clrscr;
  202.         writeln ('     Insert threads');
  203.         Writeln ('    Choose insert type (1-3)');
  204.         writeln (' 1.Manual filling (If number of threads < 20)');
  205.         writeln (' 2.Autofilling');
  206.         writeln (' 3.From file (Threads.txt)');
  207.         writeln (' 4.Back to main menu');
  208.         readln (p11);
  209.         clrscr;
  210.         val (p11,cp11,c);
  211.         if c <> 0 then
  212.                 begin
  213.                         writeln;
  214.                         writeln ('ERROR! Insert number from 1 to 4 (Press Enter to back to menu)');
  215.                         readln;
  216.                         goto 11;
  217.                 end;
  218.         c:=0;
  219.         case cp11 of
  220.         1:goto 111;
  221.         2:goto 112;
  222.         3:goto 113;
  223.         4: goto 1;
  224.         else writeln ('Choose point 1-4 (Enter=Ok)');readln;clrscr;goto 11;
  225.         end;
  226.         111:clrscr;writeln ('Insert number of threads (1-20)');
  227.         readln (n);
  228.         clrscr;
  229.         val (n,cn,c);
  230.         if c <> 0 then
  231.                 begin
  232.                         writeln;
  233.                         writeln ('ERROR! Insert number from 1 to 20 (Press Enter to back to menu)');
  234.                         readln;
  235.                         goto 11;
  236.                 end;
  237.         if (cn<1) or (cn>20) then
  238.                 begin
  239.                         writeln ('Insert number from 1 to 20 (Enter=Ok)');
  240.                         readln;
  241.                         goto 111;
  242.                 end;
  243.         1111:clrscr;
  244.         writeln ('Insert threads (Numbers from 0 to 255)');
  245.         for i:=1 to cn do
  246.                 begin
  247.                 write (i, ' thread: ');
  248.                 readln (sthread[i]);
  249.                 val (sthread[i],thread[i],c);
  250.                 if c<>0 then
  251.                         begin
  252.                                 clrscr;
  253.                                 writeln;
  254.                                 writeln ('ERROR! Insert number from 0 to 255 (Press enter to back to menu)');
  255.                                 readln;
  256.                                 goto 11;
  257.                         end;
  258.                 if (thread[i]<0) or (thread[i]>255) then
  259.                         begin
  260.                                 clrscr;
  261.                                 writeln;
  262.                                 writeln ('Insert number from 0 to 255 (Enter=Ok)');
  263.                                 readln;
  264.                                 goto 1111;
  265.                         end;
  266.                 num[i]:=i;
  267.                 end;
  268.         clrscr;
  269.         comparsnum1:=0;
  270.         comparsnum2:=0;
  271.         sort3:=0;
  272.         sortednum[1]:=0;
  273.         goto showmassive;
  274.         112:clrscr;writeln ('Insert number of threads (1-1000)');
  275.         readln (n);
  276.         clrscr;
  277.         val (n,cn,c);
  278.         if c<>0 then
  279.                 begin
  280.                         writeln;
  281.                         writeln ('ERROR! Insert number from 1 to 1000 (Press enter to back to menu)');
  282.                         readln;
  283.                         goto 11;
  284.                 end;
  285.         if (cn<1) or (cn>1000) then
  286.                 begin
  287.                         writeln ('Insert number from 1 to 1000 (Enter=Ok)');
  288.                         readln;
  289.                         goto 112;
  290.                 end;
  291.         for i:=1 to cn do
  292.                 begin
  293.                         thread[i]:=random(255);
  294.                         num[i]:=i;
  295.                 end;
  296.         clrscr;
  297.         comparsnum1:=0;
  298.         comparsnum2:=0;
  299.         sort3:=0;
  300.         sortednum[1]:=0;
  301.         goto showmassive;
  302.         113:clrscr;
  303.         assign (f,'Threads.txt');
  304.         reset (F);
  305.         i:=0;
  306.         while not eof(f) do
  307.                 begin
  308.                         i:=i+1;
  309.                         num[i]:=i;
  310.                         read (f,thread[i]);
  311.                         if (thread[i]<0) or (thread[i]>255) then
  312.                                 begin
  313.                                         clrscr;
  314.                                         writeln;
  315.                                         writeln ('Error! Threads.txt must be filled with numbers from 0 to 255 (Press Enter to back to menu)');
  316.                                         readln;
  317.                                         close (f);
  318.                                         goto 11;
  319.                                 end;
  320.                 end;
  321.         close (f);
  322.         cn:=i;
  323.         clrscr;
  324.         comparsnum1:=0;
  325.         comparsnum2:=0;
  326.         sort3:=0;
  327.         sortednum[1]:=0;
  328.         goto showmassive;
  329.         12:clrscr;
  330.         writeln ('       Insert CPU times');
  331.         Writeln ('    Choose insert type (1-3)');
  332.         writeln (' 1.Manual filling (If number of times < 20)');
  333.         writeln (' 2.Autofilling');
  334.         writeln (' 3.From file (CPUtimes.txt)');
  335.         writeln (' 4.Back to main menu');
  336.         readln (p12);
  337.         clrscr;
  338.         val (p12,cp12,c);
  339.         if c <> 0 then
  340.                 begin
  341.                         writeln;
  342.                         writeln ('ERROR! Insert number from 1 to 4 (Press Enter to back to menu)');
  343.                         readln;
  344.                         goto 12;
  345.                 end;
  346.         case cp12 of
  347.         1:goto 121;
  348.         2:goto 122;
  349.         3:goto 123;
  350.         4:goto 1;
  351.         else writeln ('Choose point 1-4 (Enter=Ok)');readln;clrscr;goto 12;
  352.         end;
  353.         121:clrscr; manual:=1;goto 14;
  354.         122:clrscr;writeln ('Insert number of CPU times (1-1000)');
  355.         readln (CPUn);
  356.         clrscr;
  357.         val (CPUn,cCPUn,c);
  358.         if c<>0 then
  359.                 begin
  360.                         writeln;
  361.                         writeln ('ERROR! Insert number from 1 to 1000 (Press enter to back to menu)');
  362.                         readln;
  363.                         goto 12;
  364.                 end;
  365.         if (cCPUn<1) or (cCPUn>1000) then
  366.                 begin
  367.                         writeln ('Insert number from 1 to 1000 (Enter=Ok)');
  368.                         readln;
  369.                         goto 122;
  370.                 end;
  371.         for i:=1 to cCPUn do
  372.                 begin
  373.                         CPUtime[i]:=random(255)+1;
  374.                 end;
  375.         clrscr;
  376.         goto ShowCPUtime;
  377.         123:clrscr;
  378.         assign (e,'CPUtimes.txt');
  379.         reset (e);
  380.         i:=0;
  381.         while not eof(e) do
  382.                 begin
  383.                         i:=i+1;
  384.                         read (e,CPUtime[i]);
  385.                         if (CPUtime[i]<0) or (CPUtime[i]>255) then
  386.                                 begin
  387.                                         clrscr;
  388.                                         writeln;
  389.                                         writeln ('Error! CPUtimes.txt must be filled with numbers from 0 to 255 (Press Enter to back to menu)');
  390.                                         readln;
  391.                                         close (e);
  392.                                         goto 12;
  393.                                 end;
  394.                 end;
  395.         close (e);
  396.         cCPUn:=i;
  397.         clrscr;
  398.         goto showCPUtime;
  399.         13:clrscr;
  400.         writeln ('       Sorting');
  401.         writeln ('  Choose sorting type');
  402.         writeln (' 1.Selection');
  403.         writeln (' 2.Merge ');
  404.         writeln (' 3.Counting');
  405.         writeln (' 4.Back to main menu');
  406.         readln (p13);
  407.         clrscr;
  408.         val (p13,cp13,c);
  409.         if c<>0 then
  410.                 begin
  411.                         writeln;
  412.                         writeln ('Error! Insert number from 1 to 4 (Enter=ok)');
  413.                         readln;
  414.                         goto 13;
  415.                 end;
  416.         case cp13 of
  417.         1: goto 131;
  418.         2: goto 132;
  419.         3: goto 133;
  420.         4: goto 1;
  421.         else writeln ('Choose point 1-4 (Enter=ok)'); readln; goto 13;
  422.         end;
  423.         131:clrscr;
  424.         permnum1:=0;
  425.         comparsnum1:=0;
  426.         write ('Sorting of threads.Please wait...  ');
  427.         for i:=1 to cn do
  428.                 begin
  429.                         sortedthrd[i]:=thread[i];
  430.                         sortednum[i]:=num[i];
  431.                 end;
  432.         queryperformancecounter (start1);
  433.         for i:=1 to cn-1 do
  434.                 begin
  435.                         minthrdnum:=i;
  436.                         minthrd:=sortedthrd[i];
  437.                         for j:=i+1 to cn do
  438.                                 begin
  439.                                         comparsnum1:=comparsnum1+1;
  440.                                         if sortedthrd[j]<minthrd then
  441.                                                 begin
  442.                                                         permnum1:=permnum1+1;
  443.                                                         minthrdnum:=j;
  444.                                                         minthrd:=sortedthrd[j];
  445.                                                         sortedthrd[minthrdnum]:=sortedthrd[i];
  446.                                                         sortedthrd[i]:=minthrd;
  447.                                                 end;
  448.  
  449.                                 end;
  450.                 end;
  451.          queryperformancecounter (finish1);
  452.          write ('ok');
  453.          writeln;
  454.          write ('Sorting of numbers.Please wait...  ');
  455.          numsorting(cn,thread,sortedthrd,num,sortednum);
  456.          writeln ('ok');
  457.          writeln;
  458.          writeln ('Press Enter to show sorting statistics');
  459.          readln;
  460.          goto ShowSortResult;
  461.          132:clrscr;
  462.          permnum2:=0;
  463.          comparsnum2:=0;
  464.          write ('Sorting of threads.Please wait...  ');
  465.          for i:=1 to cn do
  466.                 begin
  467.                         sortedthrd[i]:=thread[i];
  468.                         sortednum[i]:=num[i];
  469.                 end;
  470.          queryperformancecounter (start2);
  471.          sort(sortedthrd,1,cn,comparsnum2,permnum2);
  472.          queryperformancecounter (finish2);
  473.          write ('ok');
  474.          writeln;
  475.          write ('Sorting of numbers.Please wait...  ');
  476.          numsorting(cn,thread,sortedthrd,num,sortednum);
  477.          writeln ('ok');
  478.          writeln;
  479.          writeln ('Press Enter to show sorting statistics');
  480.          readln;
  481.          goto ShowSortResult;
  482.          133:clrscr;
  483.          sort3:=1;
  484.          permnum3:=0;
  485.          comparsnum3:=0;
  486.          write ('Sorting of threads.Please wait...  ');
  487.          queryperformancecounter (start3);
  488.          for i:=1 to 255 do
  489.                 cs[i]:=0;
  490.          for i:=1 to cn do
  491.                 begin
  492.                         cs[thread[i]]:=cs[thread[i]]+1;
  493.                         sortednum[i]:=num[i];
  494.                 end;
  495.          for i:=1 to 255 do
  496.                 cs[i]:=cs[i-1]+cs[i];
  497.          for i:=cn downto 1 do
  498.                 begin
  499.                         permnum3:=permnum3+1;
  500.                         sortedthrd[cs[thread[i]]]:=thread[i];
  501.                         cs[thread[i]]:=cs[thread[i]]-1;
  502.                 end;
  503.          queryperformancecounter (finish3);
  504.          write ('ok');
  505.          writeln;
  506.          write ('Sorting of numbers.Please wait...  ');
  507.          numsorting(cn,thread,sortedthrd,num,sortednum);
  508.          writeln ('ok');
  509.          writeln;
  510.          writeln ('Press Enter to show sorting statistics');
  511.          readln;
  512.          goto showsortresult;
  513.          14:clrscr;
  514.          gotoxy(1,1);write ('CPUt');gotoxy(6,1);write ('SumT');gotoxy (12,1);write ('Thrd');gotoxy(18,1);write('No');gotoxy(24,1);write('Res');gotoxy(30,1);write('Attmepts');
  515.          for i:=1 to cn do
  516.            used[i]:=0;
  517.  
  518.  
  519.  
  520.          stroka:=2;
  521.          usedthrds:=0;
  522.          ost:=0;
  523.          i:=0;
  524.          while usedthrds<>cn do
  525.           begin
  526.            i:=i+1;
  527.            if manual=0 then
  528.             if i>ccpun then
  529.              break;
  530.            if manual=1 then
  531.             begin
  532.              gotoxy(1,stroka);read(cputime[i]);
  533.             end
  534.            else
  535.             begin
  536.              gotoxy(1,stroka);write(cputime[i]);
  537.             end;
  538.            realsumcpu:=cputime[i]+ost;
  539.            sumcpu:=cputime[i]+ost;
  540.            found:=0;
  541.            bin:=0;
  542.            min:=1;max:=cn;
  543.            search:
  544.            while (min<=max) and (found=0) do
  545.             begin
  546.              bin:=bin+1;
  547.              mid:=(min+max)div 2;
  548.              if sumcpu<sortedthrd[mid] then
  549.               max:=mid-1
  550.              else
  551.               if  sumcpu>sortedthrd[mid] then
  552.                min:=mid+1
  553.               else
  554.                if used[mid]=1 then
  555.                 begin
  556.                  if mid<>cn then
  557.                   begin
  558.                    l:=1;
  559.                    while sortedthrd[mid+l]=sortedthrd[mid] do
  560.                     begin
  561.                      if used[mid+l]<>1 then
  562.                       begin
  563.                         mdldmas:=sortedthrd[mid+l];
  564.                         mdldnum:=sortednum[mid+l];
  565.                         ost:=realsumcpu-mdldmas;
  566.                         used[mid+l]:=1;
  567.                         found:=1;break;
  568.                       end;
  569.                     l:=l+1;
  570.                     if mid+l>cn then break;
  571.                   end;
  572.               end;
  573.             if (mid<>1) and (found=0) then
  574.               begin
  575.                 l:=1;
  576.                 while sortedthrd[mid-l]=sortedthrd[mid] do
  577.                   begin
  578.                     if used[mid-l]<>1 then
  579.                       begin
  580.                         mdldmas:=sortedthrd[mid-l];
  581.                         mdldnum:=sortednum[mid-l];
  582.                         ost:=realsumcpu-mdldmas;
  583.                         used[mid-l]:=1;
  584.                         found:=1;break;
  585.                       end;
  586.                     l:=l+1;
  587.                     if mid-l<1 then break;
  588.                   end;
  589.               end;
  590.             break;
  591.           end
  592.         else
  593.           begin
  594.             mdldmas:=sortedthrd[mid];
  595.             mdldnum:=sortednum[mid];
  596.             used[mid]:=1;
  597.             ost:=realsumcpu-mdldmas;
  598.             found:=1;
  599.             break;
  600.           end;
  601.       end;
  602.  
  603. if (found=0) and (sumcpu>0) then
  604.   begin
  605.     sumcpu:=sumcpu-1;bin:=0;min:=1;max:=cn;
  606.     goto search;
  607.   end;
  608. if found=0 then
  609.     ost:=realsumcpu
  610. else
  611.   begin
  612.     gotoxy(6,stroka);write (realsumcpu);gotoxy (12,stroka);write (mdldmas);gotoxy(18,stroka);write(mdldnum);gotoxy(24,stroka);write(ost);gotoxy(30,stroka);write(bin);
  613.     stroka:=stroka+1;
  614.   end;
  615. if found=1 then
  616.   begin
  617.     realsumcpu:=ost;
  618.     sumcpu:=ost;
  619.     found:=0;bin:=0;min:=1;max:=cn;
  620.     goto search;
  621.   end;
  622. usedthrds:=0;
  623. for j:=1 to cn do
  624.   if used[j]=1 then
  625.     usedthrds:=usedthrds+1;
  626. end;
  627. writeln;
  628. writeln ('Press ENTER to back to main menu');readln;readln;goto 1;
  629.  
  630.  
  631.  
  632.  
  633.  
  634.         showsortresult:
  635.         clrscr;
  636.         writeln ('Original massive of threads');
  637.         gotoXY (1,2); writeln ('T');
  638.         gotoXY (1,3); writeln ('N');
  639.         if cn<16 then
  640.                 begin
  641.                         for i:=1 to cn do
  642.                                 begin
  643.                                         gotoXY (5*i,2);
  644.                                         writeln (thread[i]);
  645.                                         gotoXY (5*i,3);
  646.                                         writeln (num[i]);
  647.                                 end;
  648.                         writeln;
  649.                 end
  650.         else
  651.                 begin
  652.                         for i:=1 to 14 do
  653.                                 begin
  654.                                         gotoXY (5*i,2);
  655.                                         writeln (thread[i]);
  656.                                         gotoXY (5*i,3);
  657.                                         writeln (num[i]);
  658.                                 end;
  659.                         gotoXY (75,2);
  660.                         writeln ('...');
  661.                         gotoXY (75,3);
  662.                         writeln ('...');
  663.                         writeln;
  664.                 end;
  665.         writeln ('Sorted massive');
  666.         gotoXY (1,6); writeln ('T');
  667.         gotoXY (1,7); writeln ('N');
  668.         if cn<16 then
  669.                 begin
  670.                         for i:=1 to cn do
  671.                                 begin
  672.                                         gotoXY (5*i,6);
  673.                                         writeln (sortedthrd[i]);
  674.                                         gotoXY (5*i,7);
  675.                                         writeln (sortednum[i]);
  676.                                 end;
  677.                         writeln;
  678.                 end
  679.         else
  680.                 begin
  681.                         for i:=1 to 14 do
  682.                                 begin
  683.                                         gotoXY (5*i,6);
  684.                                         writeln (sortedthrd[i]);
  685.                                         gotoXY (5*i,7);
  686.                                         writeln (sortednum[i]);
  687.                                 end;
  688.                         gotoXY (75,6);
  689.                         writeln ('...');
  690.                         gotoXY (75,7);
  691.                         writeln ('...');
  692.                         writeln;
  693.                 end;
  694.         sortingstats:writeln ('    Stats');
  695.         Writeln ('1. Selection sort');
  696.         if comparsnum1=0 then
  697.                 begin
  698.                         writeln ('      Sorting of that type has not been performed yet');
  699.                 end
  700.         else
  701.                 begin
  702.                         writeln ('      number of permutations = ', permnum1);
  703.                         writeln ('      number of comparisons = ', comparsnum1);
  704.                         writeln ('      time spent (sec) : ', (finish1-start1)/res);
  705.                 end;
  706.         Writeln ('2. Merge sort');
  707.         if comparsnum2=0 then
  708.                 begin
  709.                         writeln ('      Sorting of that type has not been performed yet');
  710.                 end
  711.         else
  712.                 begin
  713.                         writeln ('      number of permutations = ', permnum2);
  714.                         writeln ('      number of comparisons = ', comparsnum2);
  715.                         writeln ('      time spent (sec) : ', (finish2-start2)/res);
  716.                 end;
  717.         Writeln ('3. Counting sort');
  718.         if sort3=0 then
  719.                 begin
  720.                         writeln ('      Sorting of that type has not been performed yet');
  721.                 end
  722.         else
  723.                 begin
  724.                         writeln ('      number of permutations = ', permnum3);
  725.                         writeln ('      number of comparisons = ', comparsnum3);
  726.                         writeln ('      time spent (sec) : ',(finish3-start3)/res);
  727.                 end;
  728.         writeln;
  729.         writeln ('Press enter to back to main menu');
  730.         readln;
  731.         goto 1;
  732.         showCPUtime:
  733.         writeln ('CPUtimes');
  734.         gotoXY (1,3); writeln ('T');
  735.         if cCPUn<16 then
  736.                 begin
  737.                         for i:=1 to cCPUn do
  738.                                 begin
  739.                                         gotoXY (5*i,3);
  740.                                         writeln (CPUtime[i]);
  741.                                 end;
  742.                         writeln;
  743.                         writeln ('Press Enter to continue');
  744.                         readln;
  745.                         goto 14;
  746.                 end
  747.         else
  748.                 begin
  749.                         for i:=1 to 14 do
  750.                                 begin
  751.                                         gotoXY (5*i,3);
  752.                                         writeln (CPUtime[i]);
  753.                                 end;
  754.                         gotoXY (75,3);
  755.                         writeln ('...');
  756.                         writeln;
  757.                         writeln ('Press Enter to continue');
  758.                         readln;
  759.                         manual:=0;
  760.                         goto 14;
  761.                 end;
  762.         showmassive:
  763.         writeln ('   Threads');
  764.         gotoXY (1,3); writeln ('T');
  765.         gotoXY (1,4); writeln ('N');
  766.         if cn<16 then
  767.                 begin
  768.                         for i:=1 to cn do
  769.                                 begin
  770.                                         gotoXY (5*i,3);
  771.                                         writeln (thread[i]);
  772.                                         gotoXY (5*i,4);
  773.                                         writeln (num[i]);
  774.                                 end;
  775.                         writeln;
  776.                         writeln ('T-working time , N-number of thread');
  777.                         writeln;
  778.                         writeln ('Press Enter to back to main menu');
  779.                         readln;
  780.                         goto 1;
  781.                 end
  782.         else
  783.                 begin
  784.                         for i:=1 to 14 do
  785.                                 begin
  786.                                         gotoXY (5*i,3);
  787.                                         writeln (thread[i]);
  788.                                         gotoXY (5*i,4);
  789.                                         writeln (num[i]);
  790.                                 end;
  791.                         gotoXY (75,3);
  792.                         writeln ('...');
  793.                         gotoXY (75,4);
  794.                         writeln ('...');
  795.                         writeln;
  796.                         writeln ('T-working time , N-number of thread');
  797.                         writeln;
  798.                         writeln ('Press Enter to back to main menu');
  799.                         readln;
  800.                         goto 1;
  801.                 end;
  802. 666:end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement