Напишите программу подсчета количества уникальных элементов в целочисленном массиве длины 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.
Объяснение кода листинга программы
- const mi = 100; mu = 50; - определяются константы mi и mu, которые представляют собой границы для массивов и переменных
- var num: array [1..mi] of integer; - определяется массив num типа integer для хранения целочисленных значений
- var uni: array [0..mu] of integer; - определяется массив uni типа integer для хранения количества уникальных элементов
- var i, n, u: integer; - определяются переменные i, n и u типа integer для удобства работы с индексами и счетчиком уникальных элементов
- randomize; - вызывается функция randomize для инициализации генератора случайных чисел
- for i := 0 to mu do uni[i] := 0; - инициализируется массив uni нулями
- repeat
- write('Count of elements = '); - выводится сообщение
Количество элементов =
- readln(n); - считывается количество элементов из ввода пользователя
- if (n < 1) or (n > mi) then writeln('n out of range 1..', mi, ', reenter.') - проверяется, что введенное значение n находится в допустимом диапазоне от 1 до mi
- until (n >= 1) and (n <= 100); - пока условие n >= 1 и n <= 100 истинно, выполняется цикл
- write('Source array:'); - выводится сообщение
Источниковой массив:
- for i := 1 to n do
- begin
- num[i] := random(mu + 1); - генерируется случайное число в диапазоне от 1 до mu + 1 и присваивается переменной num[i]
- if ((i - 1) * 3) mod (80 div 3) = 0 then writeln; - проверяется условие, при котором i-1 делится на 3 без остатка, и если это так, выводится число num[i]
- write(num[i]:3); - выводится число num[i] с тремя знаками после запятой
- inc(uni[num[i]]); - увеличивается значение uni[num[i]] на единицу
- end;
- writeln;
- u := 0; - инициализируется переменная u нулем
- for i := 0 to mu do if uni[i] = 1 then inc(u); - выполняется цикл по всем элементам массива uni
- writeln('Count of unique numbers = ', u); - выводится количество уникальных чисел
- readln
- end.