Напишите программу подсчета количества уникальных элементов в целочисленном массиве длины N<100 - Pascal

Узнай цену своей работы

Формулировка задачи:

Всем привет!) надеюсь поможете сделать несколько программ с массивом. Первая, напишите программу подсчета количества уникальных элементов в целочисленном массиве длины N<100. Элементы данного массива могут принимать значения от 0 до 49.

Решение задачи: «Напишите программу подсчета количества уникальных элементов в целочисленном массиве длины N<100»

textual
Листинг программы
const mi = 100; mu = 50;
var num: array [1..mi] of integer;
    uni: array [0..mu] of integer;
    i, n, u: integer;
begin
  randomize;
  for i := 0 to mu do uni[i] := 0;
  repeat
    write('Count of elements = ');
    readln(n);
    if (n < 1) or (n > mi) then writeln('n out of range 1..', mi, ', reenter.')
  until (n >= 1) and (n <= 100);
  write('Source array:');
  for i := 1 to n do
    begin
      num[i] := random(mu + 1);
      if ((i - 1) * 3) mod (80 div 3) = 0 then writeln;
      write(num[i]:3);
      inc(uni[num[i]])
    end;
  writeln;
  u := 0;
  for i := 0 to mu do if uni[i] = 1 then inc(u);
  writeln('Count of unique numbers = ', u);
  readln
end.

Объяснение кода листинга программы

  1. const mi = 100; mu = 50; - определяются константы mi и mu, которые представляют собой границы для массивов и переменных
  2. var num: array [1..mi] of integer; - определяется массив num типа integer для хранения целочисленных значений
  3. var uni: array [0..mu] of integer; - определяется массив uni типа integer для хранения количества уникальных элементов
  4. var i, n, u: integer; - определяются переменные i, n и u типа integer для удобства работы с индексами и счетчиком уникальных элементов
  5. randomize; - вызывается функция randomize для инициализации генератора случайных чисел
  6. for i := 0 to mu do uni[i] := 0; - инициализируется массив uni нулями
  7. repeat
  8. write('Count of elements = '); - выводится сообщение Количество элементов =
  9. readln(n); - считывается количество элементов из ввода пользователя
  10. if (n < 1) or (n > mi) then writeln('n out of range 1..', mi, ', reenter.') - проверяется, что введенное значение n находится в допустимом диапазоне от 1 до mi
  11. until (n >= 1) and (n <= 100); - пока условие n >= 1 и n <= 100 истинно, выполняется цикл
  12. write('Source array:'); - выводится сообщение Источниковой массив:
  13. for i := 1 to n do
  14. begin
  15. num[i] := random(mu + 1); - генерируется случайное число в диапазоне от 1 до mu + 1 и присваивается переменной num[i]
  16. if ((i - 1) * 3) mod (80 div 3) = 0 then writeln; - проверяется условие, при котором i-1 делится на 3 без остатка, и если это так, выводится число num[i]
  17. write(num[i]:3); - выводится число num[i] с тремя знаками после запятой
  18. inc(uni[num[i]]); - увеличивается значение uni[num[i]] на единицу
  19. end;
  20. writeln;
  21. u := 0; - инициализируется переменная u нулем
  22. for i := 0 to mu do if uni[i] = 1 then inc(u); - выполняется цикл по всем элементам массива uni
  23. writeln('Count of unique numbers = ', u); - выводится количество уникальных чисел
  24. readln
  25. end.

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы