Другие языки программирования и технологии
2 задачи помогите решить
давно не занимался. сам чтото решить не могу. 1)дан одномернный массив А(N) Составить новый массив из простых чисел исходящего массива (делится только на себя и 1) 1)А(N)удалить из исходящего массива все совершенные числа (равно сумме соих делителей)
type
aType = array [1..200] of Word;
var
A, B, C : aType;
Nom, Na, Nb, Nc : Byte;
function isPrimary(N : Word) : Boolean;
var
D : Word; Q : Real;
begin
if N = 0 then begin isPrimary := False; Exit; end;
if N = 1 then begin isPrimary := True; Exit; end;
if N = 2 then begin isPrimary := True; Exit; end;
if N = 3 then begin isPrimary := True; Exit; end;
if N mod 2 = 0 then begin isPrimary := False; Exit; end;
if N mod 3 = 0 then begin isPrimary := False; Exit; end;
D := 3; Q := Sqrt(N);
while D <= Q do
begin
if N mod D = 0 then begin isPrimary := False; Exit; end;
D := D + 2;
end;
isPrimary := True;
end;
procedure Primary;
var
Nom : Byte;
begin
Nb := 0;
for Nom := 1 to Na do
if isPrimary(A[Nom]) then
begin
Inc(Nb);
B[Nb] := A[Nom];
end;
end;
function isIdeal(N : Word) : Boolean;
var
D, S : Word; Q : Real;
begin
S := 1; D := 2; Q := N / 2;
while D <= Q do
begin
if N mod D = 0 then S := S + D;
D := D + 1;
end;
isIdeal := (S = N);
end;
procedure Ideal;
var
Nom : Byte;
begin
Nc := 0;
for Nom := 1 to Na do
if isIdeal(A[Nom]) then
begin
Inc(Nc);
C[Nc] := A[Nom];
end;
end;
procedure DelIdeal;
var
Nom, Pos : Byte;
begin
for Nom := Na downto 1 do
if isIdeal(A[Nom]) then
begin
Dec(Na);
for Pos := Nom to Na do A[Pos] := A[Pos + 1];
end;
end;
procedure OutArr(S : String; M : aType; N : Byte);
var
Nom : Byte;
begin
WriteLn(S);
for Nom := 1 to N do Write(M[Nom], ' '); WriteLn;
end;
begin
Write('Введите N = '); ReadLn(Na);
for Nom := 1 to Na do begin Write('A[', Nom, '] = '); ReadLn(A[Nom]); end;
Primary;
Ideal;
OutArr('Исходный массив :', A, Na);
OutArr('Массив простых чисел :', B, Nb);
OutArr('Массив идеальных чисел :', C, Nc);
DelIdeal;
OutArr('Исходный массив без идеальных чисел :', A, Na);
end.
aType = array [1..200] of Word;
var
A, B, C : aType;
Nom, Na, Nb, Nc : Byte;
function isPrimary(N : Word) : Boolean;
var
D : Word; Q : Real;
begin
if N = 0 then begin isPrimary := False; Exit; end;
if N = 1 then begin isPrimary := True; Exit; end;
if N = 2 then begin isPrimary := True; Exit; end;
if N = 3 then begin isPrimary := True; Exit; end;
if N mod 2 = 0 then begin isPrimary := False; Exit; end;
if N mod 3 = 0 then begin isPrimary := False; Exit; end;
D := 3; Q := Sqrt(N);
while D <= Q do
begin
if N mod D = 0 then begin isPrimary := False; Exit; end;
D := D + 2;
end;
isPrimary := True;
end;
procedure Primary;
var
Nom : Byte;
begin
Nb := 0;
for Nom := 1 to Na do
if isPrimary(A[Nom]) then
begin
Inc(Nb);
B[Nb] := A[Nom];
end;
end;
function isIdeal(N : Word) : Boolean;
var
D, S : Word; Q : Real;
begin
S := 1; D := 2; Q := N / 2;
while D <= Q do
begin
if N mod D = 0 then S := S + D;
D := D + 1;
end;
isIdeal := (S = N);
end;
procedure Ideal;
var
Nom : Byte;
begin
Nc := 0;
for Nom := 1 to Na do
if isIdeal(A[Nom]) then
begin
Inc(Nc);
C[Nc] := A[Nom];
end;
end;
procedure DelIdeal;
var
Nom, Pos : Byte;
begin
for Nom := Na downto 1 do
if isIdeal(A[Nom]) then
begin
Dec(Na);
for Pos := Nom to Na do A[Pos] := A[Pos + 1];
end;
end;
procedure OutArr(S : String; M : aType; N : Byte);
var
Nom : Byte;
begin
WriteLn(S);
for Nom := 1 to N do Write(M[Nom], ' '); WriteLn;
end;
begin
Write('Введите N = '); ReadLn(Na);
for Nom := 1 to Na do begin Write('A[', Nom, '] = '); ReadLn(A[Nom]); end;
Primary;
Ideal;
OutArr('Исходный массив :', A, Na);
OutArr('Массив простых чисел :', B, Nb);
OutArr('Массив идеальных чисел :', C, Nc);
DelIdeal;
OutArr('Исходный массив без идеальных чисел :', A, Na);
end.
Похожие вопросы
- Скільки до Нового Року? задача Помогите решить в паскале
- Помогите решить задачу на Турбо паскале
- Помогите решить задачу.
- Помогите решить задачу на языке Паскаль. Найти сумму всех чётных чисел от 1 до 1000 (задачу решить 2 способами)
- Помогите решить задачу на программирование!
- Народ, слезно прошу помочь решить задачу по информатике (програмирование), я просто ноль в этом(((
- Turbo Pascal. Помогите решить 2 задачи! Совершено не понимаю в этом.
- помогите решить задачи по Си. 2 неделю с ними бьюсь. выкладываю свое решение. скажите просто что не правильно
- Помогите решить задачу на Basic
- Помогите решить задачи на Си! Пожалуйста!!!