Guest User

Untitled

a guest
Apr 2nd, 2014
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.29 KB | None | 0 0
  1.  
  2.  
  3. Program HelloWorld(output);
  4.  
  5.  
  6. type
  7.    arrayType = array[1..100, 1..100] of integer;
  8.    arrayOneRow = array[1..10000] of integer;
  9.    
  10. procedure prepareArray(var ext_array:arrayType; ext_ArraySize, ext_randomInterval:integer;
  11.     ext_NegativeNumbersAllowed: boolean);
  12.    var i,j: integer;
  13. begin
  14.     for  i:=1 to  ext_ArraySize do
  15.         for j:=1 to ext_ArraySize do
  16.             begin
  17.                 if ext_NegativeNumbersAllowed then
  18.                     ext_array[i,j]:= Random(2 * ext_randomInterval) - ext_randomInterval
  19.                 else
  20.                     ext_array[i,j]:=Random(ext_randomInterval);
  21.             end;
  22. end;
  23.  
  24. procedure outputArray(ext_array:arrayType; ext_ArraySize:integer);
  25. var i,j: integer;
  26. begin
  27.     for  i:=1 to ext_ArraySize do
  28.     begin
  29.         for j:=1 to ext_ArraySize do
  30.             write(ext_array[i,j],' ');
  31.         writeln('');
  32.     end;
  33. end;
  34.  
  35. procedure getMaxElementFromArray(ext_array:arrayType; ext_ArraySize:integer; var ext_max: integer);
  36. var i,j: integer;
  37. begin
  38.     ext_max := -99999;
  39.     for  i:=1 to ext_ArraySize do
  40.     begin
  41.         for j:=1 to ext_ArraySize do
  42.             if ext_array[i,j]> ext_max then ext_max:=ext_array[i,j];
  43.     end;
  44. end;
  45.  
  46. procedure getItemRepeatCount(ext_array:arrayType; ext_ArraySize, ext_item:integer; var ext_count : integer);
  47. var i,j: integer;
  48. begin
  49.     ext_count:= 0;
  50.     for  i:=1 to ext_ArraySize do
  51.     begin
  52.         for j:=1 to ext_ArraySize do
  53.             if ext_array[i,j] = ext_item then ext_count := ext_count+1;
  54.     end;
  55. end;
  56.  
  57. procedure qSort(ext_arrayLength: integer; var ar: array of integer);
  58.   procedure sort(var ar: array of integer; low, high: integer);
  59.   var i, j, m, wsp: integer;
  60.   begin
  61.       i:=low; j:=high; m:=ar[(i+j) div 2];
  62.       repeat
  63.         while ar[i]<m do Inc(i);
  64.         while ar[j]>m do Dec(j);
  65.         if i<=j then begin
  66.           wsp:=ar[i]; ar[i]:=ar[j]; ar[j]:=wsp;
  67.           Inc(i); Dec(j);
  68.          end;
  69.       until i>j;
  70.       if low<j then sort(ar, low, j);
  71.       if i<high then sort(ar, i, high);
  72.   end;
  73. begin
  74.   sort(ar, 0, ext_arrayLength);
  75. end;
  76.  
  77. procedure getMaxElementWithOffset(ext_array:arrayType; ext_ArraySize, ext_offset:integer; var ext_item : integer);
  78. var i,j,counter: integer;
  79. var arrayUnited: array[1..10000] of integer;
  80. begin
  81.     ext_item:= -9999;
  82.     counter:=1;
  83.     for i:=1 to ext_ArraySize do
  84.     begin
  85.         for j:=1 to ext_ArraySize do
  86.         begin
  87.             arrayUnited[counter]:=ext_array[i,j];
  88.             counter := counter+1;
  89.         end;
  90.     end;
  91.     qSort(counter-2,arrayUnited);
  92.     ext_item:=arrayUnited[counter-ext_offset-1];
  93. end;
  94.  
  95. procedure getMaxElementThatAlsoBelongsToAnotherArray(ext_arrayOne, ext_arrayTwo:arrayType; ext_ArraySize:integer; var ext_item:integer; var ext_success: boolean);
  96. var i,j, offset, maxElement,repeatCount: integer;
  97. begin
  98.     offset:=0;
  99.     repeat
  100.         getMaxElementWithOffset(ext_arrayOne, ext_ArraySize, offset, maxElement);
  101.         getItemRepeatCount(ext_arrayTwo, ext_ArraySize, maxElement, repeatCount);
  102.         if (repeatCount > 0) then
  103.         begin
  104.             ext_item := maxElement;
  105.             ext_success := true;
  106.         end
  107.         else inc(offset);
  108.         if offset > ext_arraySize then
  109.         begin
  110.             writeln('Item not found!');
  111.             ext_success := false;
  112.         end;
  113.     until (repeatCount > 0) or (offset > ext_ArraySize);
  114. end;
  115.  
  116. var matrixSize, randomInterval, dummyWhatever, maxElement, maxElementB, repeatCount, highestInFirst, highestInSecond :integer;
  117. var negativeNumbersAllowed, itemFound :boolean;
  118. var arrayOne, arrayTwo: arrayType;
  119.  
  120. begin
  121.     Randomize;
  122.     matrixSize := 0;
  123.     while (matrixSize < 1) or (matrixSize > 100) do
  124.     begin
  125.         write('set matrix size M=');
  126.         readln(matrixSize);        
  127.     end;
  128.     writeln(matrixSize);
  129.    
  130.     randomInterval := 0;
  131.     while (randomInterval < 1) or (randomInterval > 100) do
  132.     begin
  133.         write('set randomInterval rINT=');
  134.         readln(randomInterval);        
  135.     end;
  136.     writeln(randomInterval);
  137.    
  138.     dummyWhatever := 0;  
  139.     write('1 for negative numbers allowed, non-1 - not allowed: ');
  140.     readln(dummyWhatever);        
  141.     if (dummyWhatever = 1) then
  142.         negativeNumbersAllowed := true
  143.     else negativeNumbersAllowed := false;
  144.     writeln(negativeNumbersAllowed);
  145.    
  146.     prepareArray(arrayOne, matrixSize, randomInterval, negativeNumbersAllowed);
  147.     writeln('first array');
  148.     outputArray(arrayOne, matrixSize);
  149.    
  150.     prepareArray(arrayTwo, matrixSize, randomInterval, negativeNumbersAllowed);
  151.     writeln('second array');
  152.     outputArray(arrayTwo, matrixSize);
  153.    
  154.     writeln('SEPARATE MAX');
  155.    
  156.     getMaxElementFromArray(arrayOne, matrixSize, maxElement);
  157.     writeln('maximum element for first matrix: ', maxElement);
  158.     getItemRepeatCount(arrayOne, matrixSize, maxElement, repeatCount);
  159.     writeln('item repeat count for first matrix: ', repeatCount);
  160.     getMaxElementFromArray(arrayTwo, matrixSize, maxElement);
  161.     writeln('maximum element for second matrix: ', maxElement);
  162.     getItemRepeatCount(arrayTwo, matrixSize, maxElement, repeatCount);
  163.     writeln('item repeat count for first matrix: ', repeatCount);
  164.    
  165.     writeln('MAX OVERALL/OUTER JOIN');
  166.    
  167.     getMaxElementFromArray(arrayOne, matrixSize, maxElement);
  168.     writeln('maximum element for first matrix: ', maxElement);
  169.     getMaxElementFromArray(arrayTwo, matrixSize, maxElementB);
  170.     writeln('maximum element for second matrix: ', maxElementB);
  171.     if (maxElement<maxElementB) then maxElement := maxElementB;
  172.     writeln('maximum element for both arrays: ', maxElement);
  173.     getItemRepeatCount(arrayOne, matrixSize, maxElement, repeatCount);
  174.     writeln('item repeat count for first matrix: ', repeatCount);
  175.     getItemRepeatCount(arrayTwo, matrixSize, maxElement, repeatCount);
  176.     writeln('item repeat count for first matrix: ', repeatCount);
  177.    
  178.     writeln('MAX INNER JOIN');
  179.     getMaxElementThatAlsoBelongsToAnotherArray(arrayOne, arrayTwo, matrixSize, highestInFirst, itemFound);
  180.     if (itemFound) then
  181.     begin
  182.         getMaxElementThatAlsoBelongsToAnotherArray(arrayTwo, arrayOne, matrixSize, highestInSecond, itemFound);
  183.         writeln('Maximum element that belongs to both arrays is ', highestInFirst);
  184.         getItemRepeatCount(arrayOne, matrixSize, highestInFirst, repeatCount);
  185.         writeln('Repeat count for first matrix: ', repeatCount);
  186.         getItemRepeatCount(arrayTwo, matrixSize, highestInFirst, repeatCount);
  187.         write('Repeat count for first matrix: ', repeatCount);
  188.     end;
  189. end.
Advertisement
Add Comment
Please, Sign In to add comment