Свертка массива
Мы попробовали решить задачу C4 из сборника подготовки к ЕГЭ, но сходу нам это не удалось. Поэтому было решено упростить задачу и решить одну из подзадач: составление списка уникальных элементов с подсчетом их количества. Упрощённое задание сформулировано так:
С клавиатуры вводятся не более 10 числовых значений. Нужно заполнить двумерный массив уникальными значениями введенных чисел (в 1-м столбце) и количеством вхождений этих чисел (2 столбец), вывести кол-во уникальных значений в массиве и содержимое массива с указанием № строки массива, значения элемента и количества повторов.
Пример входных данных:
- 1
- 2
- 3
- 4
- 5
- 1
- 1
- 2
- 3
- 4
Выходные данные:
№1
значение:1 кол-во повторов=3
№2 значение:2 кол-во повторов=2
№3 значение:3 кол-во повторов=2
№4 значение:4 кол-во повторов=2
№5 значение:5 кол-во повторов=1
Программа №1. Заполнения массива уникальными значениями с подсчетом
количества повторов.
{Заполнение массива уникальными числами, вводимыми с клавиатуры}
Uses CRT;
Const
MaxNum=10; // Максимальное количество чисел в массиве
var
arr: array[1..MaxNum] of integer;
i,g: integer; // Счетчики
num: integer; // Текущее введенное число
n: integer; // Заполнено элементов в массиве
IsFound: boolean; // Флаг результата поиска вхождения элемента в массив
begin
cls;
n:=0;
for i:=1 to 10 do
begin
write('Введите число:');
readln(num);
// Проверка на вхождение элемента в массив
// если элемент найден, то флаг IsFound := True
IsFound:=false;
for g:=1 to n do
begin
If arr[g]=num then
begin
IsFound:=true;
writeln('Число ',num, ' уже существует!');
break;
end;
end;
// Если элемент в массиве не найден, то добавить его
if Not IsFound then
begin
Inc(n);
arr[n]:=num;
writeln('Число ',num, ' добавлено в массив.');
end;
end;
writeln('Всего чисел в массиве:',n);
end.