Заполнить массив случайными целыми числами и выделить в другой массив все числа, которые
встречаются более одного раза.(Паскаль)Ответы на вопрос
n = 15;
var
a, b: array[1..n] of integer;
i, j, step, t: integer;
flag: boolean;
begin
Randomize;
Writeln('Исходные элементы массива');
for i := 1 to n do
begin
a[i] := Random(10) - 5;
Write(a[i]:4)
end;
{ Сортируем массив (метод Шелла) }
step := n div 2;
while step > 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i <= n - step do
begin
if a[i] > a[i + step] then
begin
t := a[i]; a[i] := a[i + step]; a[i + step] := t
end;
i := i + step
end
end;
step := step div 2
end;
{
проходим по массиву и если элемент встречается более одного раза подряд,
переносим его в другой массив
}
j := 0; t := a[1]; flag := false;
for i := 2 to n do
begin
if (a[i] = t) and (not flag) then
begin
j := j + 1; b[j] := t; flag := true
end
else begin flag := false; t := a[i] end
end;
Writeln;
Writeln('Отобранные элементы массива');
for i := 1 to j do Write(b[i]:4);
Writeln
end.
Тестовое решение:
Исходные элементы массива
-2 4 1 -3 -1 -2 -5 -1 2 4 1 3 -5 -2 -3
Отобранные элементы массива
-5 -3 -2 -1 1 4
Для заполнения массива случайными целыми числами и выделения в другой массив всех чисел, которые встречаются более одного раза, вам потребуется использовать язык программирования Паскаль. Вот пример кода, который решает эту задачу:
```pascal program Main;
const MAX_SIZE = 100; // Максимальный размер массива MAX_VALUE = 100; // Максимальное значение случайных чисел
type IntArray = array[1..MAX_SIZE] of Integer;
procedure FillArrayRandomly(var arr: IntArray; size: Integer); var i: Integer; begin Randomize; // Инициализация генератора случайных чисел for i := 1 to size do arr[i] := Random(MAX_VALUE) + 1; // Заполнение массива случайными числами от 1 до MAX_VALUE end;
procedure FindDuplicates(const arr: IntArray; size: Integer; var duplicates: IntArray; var duplicatesCount: Integer); var i, j: Integer; begin duplicatesCount := 0; for i := 1 to size - 1 do begin for j := i + 1 to size do begin if (arr[i] = arr[j]) and (arr[i] <> 0) then begin duplicatesCount := duplicatesCount + 1; duplicates[duplicatesCount] := arr[i]; arr[j] := 0; // Помечаем повторяющееся число, чтобы не учитывать его повторно end; end; end; end;
var arr: IntArray; duplicates: IntArray; duplicatesCount: Integer; i: Integer; begin FillArrayRandomly(arr, MAX_SIZE); FindDuplicates(arr, MAX_SIZE, duplicates, duplicatesCount);
// Вывод исходного массива WriteLn('Исходный массив:'); for i := 1 to MAX_SIZE do Write(arr[i], ' ');
// Вывод повторяющихся чисел WriteLn; WriteLn('Повторяющиеся числа:'); for i := 1 to duplicatesCount do Write(duplicates[i], ' ');
ReadLn; end. ```
В этом коде используется процедура `FillArrayRandomly`, которая заполняет массив `arr` случайными числами от 1 до `MAX_VALUE`. Затем процедура `FindDuplicates` находит повторяющиеся числа в массиве `arr` и сохраняет их в массиве `duplicates`. Количество повторяющихся чисел сохраняется в переменной `duplicatesCount`.
Обратите внимание, что в этом коде используется константа `MAX_SIZE`, которая определяет максимальный размер массива, и константа `MAX_VALUE`, которая определяет максимальное значение случайных чисел. Вы можете изменить эти значения в соответствии с вашими потребностями.
Надеюсь, это поможет! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
