Advertisement
olegartys

Untitled

Nov 26th, 2014
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.98 KB | None | 0 0
  1. program
  2.     lab5_3;
  3.  
  4. const
  5.     lmax = 100;
  6.    
  7. type
  8.     Arr = array [1..lmax] of integer;
  9.    
  10. var
  11.     i, n, k : integer;
  12.     A, B, C : Arr;
  13.     r : real;
  14.  
  15. {Подсчёт числа повторяющихся элементов
  16.  [in]A - исходный массив
  17.  [in]n - число его элементов
  18.  [in]B - массив, содержащий все элементы A по подному разу
  19.  [in]k - его размерность
  20.  [out]C - массив, содердащий число повторений каждого элемента в массиве A}
  21. Procedure createArrayWithRepetitionOfElements (var A, B, C : Arr; n, k : integer);
  22. var
  23.     i, j, count : integer;
  24. begin
  25.     for i := 1 to k do
  26.     begin
  27.         count := 0;
  28.         for j := 1 to n do
  29.             if B[i] = A[j] then
  30.                 count := count + 1;
  31.         C[i] := count;
  32.     end;
  33. end;
  34.  
  35. {Формирует массив, содержащий все элементы A по 1 разу
  36.  [in]A - исходный массив
  37.  [in]n - число его элементов
  38.  [out]B - новый массив
  39.  [out]k - число его ээлементов}
  40. Procedure createArrayWithoutRepeatedElements (var A, B : Arr; var k : integer; n : integer);
  41. var
  42.     i, j : integer;
  43.     is_contains : boolean;
  44. begin
  45.     k := 0; // размерность нового массива
  46.     for i := 1 to n do
  47.     begin
  48.         j := 1;
  49.         is_contains := false;
  50.         // проверяем содержится ли уже элемент в новом массиве
  51.         while (j <= k) and not is_contains do
  52.             if a[i] = b[j] then
  53.                 is_contains := true
  54.             else
  55.                 j := j + 1;
  56.         // если нет, запоминаем его в массив
  57.         if not is_contains then
  58.         begin
  59.             k := k + 1;
  60.             B[k] := A[i];
  61.         end;
  62.     end;
  63. end;
  64.  
  65.  
  66. BEGIN
  67.     writeln ('Лабораторная работа №5.');
  68.     writeln ('Задание 3');
  69.     write ('Введите n. n = '); read (n);
  70.     while (n <= 0) or (n > lmax) do
  71.     begin
  72.         writeln ('Введено недопустимое значение.');
  73.         write ('Введите n. n = '); read (n);
  74.     end;
  75.    
  76.     {Ввод данных}
  77.     writeln ('Введите массив A: ');
  78.     {randomize;
  79.     for i := 1 to n do
  80.     begin
  81.         A[i] := random (50);
  82.         write (A[i], ' ');
  83.     end;}
  84.     for i := 1 to n do
  85.     begin
  86.         repeat
  87.             write ('Введите целое число a[', i, '] = '); read (r);
  88.             writeln;
  89.         until (r = round (r));
  90.         a[i] := round (r);
  91.     end;
  92.    
  93.     {Вычисление}
  94.     writeln;
  95.     createArrayWithoutRepeatedElements (A, B, k, n);
  96.     createArrayWithRepetitionOfElements (A, B, C, n, k);
  97.     for i := 1 to k do
  98.         writeln('Элемент B[', i, '] = ', B[i], ' повторяется ', C[i], ' раз.');
  99. END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement