Создать новый вектор, элементы которого получены сперва взяв простые числа исходного, потом остальные - Pascal
Формулировка задачи:
Дано натуральное число n и х вектор содержащий n элементов. Создать новый y вектор, элементы которого получены сперва взяв простые числа, потом остальные. Заранее спасибо...
Решение задачи: «Создать новый вектор, элементы которого получены сперва взяв простые числа исходного, потом остальные»
textual
Листинг программы
type
MainType = ShortInt;
function IsPrime(const x: MainType): Boolean;
var
Result: Boolean; //удалить строку при ошибке повторного объявления
i: MainType;
begin
Result := ((x >= 2) And (x mod 2 <> 0)); i := 3;
if (Result)
then
while ((Sqr(i) <= x) And Result) do
if (x mod i = 0)
then
Result := False
else
Inc(i, 2);
IsPrime := Result;
end;
var
x, y: Array[Byte] Of MainType;
i, n, j: Byte;
used: Set Of Byte;
begin
repeat
Write('Input n(>0): '); ReadLn(n);
until (n > 0);
Randomize; Write('X:');
j := 0; used := [];
for i := 0 to n - 1 do
begin
x[i] := Random(199) - 99;
Write(x[i]:4);
if (IsPrime(x[i]))
then
begin
Write('...');
Include(used, i);
y[j] := x[i];
Inc(j);
end;
end;
WriteLn; i := 0;
while (j < n) do
begin
if Not (i in used)
then
begin
y[j] := x[i];
Inc(j);
end;
Inc(i);
end;
Write('Y:');
for i := 0 to n - 1 do
Write(y[i]:4);
WriteLn;
end.
Объяснение кода листинга программы
- Объявляется пользовательский тип
MainTypeкакShortInt. - Объявляется функция
IsPrimeдля определения является ли число простым, гдеx- входной параметр,Result- результат проверки,i- переменная для цикла. - Вводятся переменные:
x,y- массивы байтов типаMainTypei,n,j- переменные типаByteused- множество байтов
- Выполняется ввод значения
n, пока оно не будет больше 0. - Генерируются значения для массива
x, выводятся и проверяются на простоту. Если значение простое, оно сохраняется в массивеy. - Переменная
iиспользуется для добавления оставшихся значений в массивy. - Значения массива
yвыводятся на экран. Код выполняет следующие действия:- Определяет простые числа в массиве
x. - Перемещает простые числа в новый массив
y. - Заполняет оставшиеся значения массива
yдругими значениями изx. - Выводит массив
yна экран.
- Определяет простые числа в массиве