![]() |
|
|
|
|
#1
|
|||
|
|||
|
Всем привет!Помогите написать код!!!
Дано натуральное число n и массив действительных чисел a[1..n].Получить новый массив по правилу: если в заданном массиве ни одно четное число не расположено после нечетного, то в новый массив занести все отрицательные элементы иначе все положительные.Порядок следования элементов в новом массиве заменить на обратный |
|
#2
|
|||
|
|||
|
I) Первое условие:
1. найти первое нечетное число в массиве. 2. Проверить, что все осталные эдементы нечетные. 3. По результатам проверки выставить флаг. II) Копирование. Ну тут просто. Идем по массиву и в соотвествии с флагом копируем либо положительные, либо отрицательные. III) Перестановка. Тут еще проще. Бежим по результирующему массиву до середины и переставляем элементы с соответсвующими, но отсчитанными от конца массива. |
|
#3
|
|||
|
|||
|
помогите с кодом плиз очень нужно
|
|
#4
|
|||
|
|||
|
Не проверял, так что могут быть мелкие баги:
Код:
var
A : Array Of Integer;
B : Array Of Integer;
N, Z : Integer;
I : Integer;
F : Boolean;
begin
// init source array
N := 100;
SetLength(A,N);
For I := Low(A) To High(A) Do A[i] := Random(200) - 100;
// Definw seach condition
F := False;
For I := Low(A) To High(A)-1 Do
Begin
F := ((A[I+1] mod 2) = 0) And ((A[i] mod 2) = 1);
If F Then Break;
End;
// Copy
SetLength(B,0);
For I := Low(A) To High(A) Do
If F
Then
Begin
If A[i] >= 0 then
Begin
SetLength(B, Length(B)+1);
B[High(B)] := A[i];
End
End
Else
Begin
If A[i] < 0 then
Begin
SetLength(B, Length(B)+1);
B[High(B)] := A[i];
End
End
End;
// Reverse array B
For I := Low(B) To (High(B) div 2) Do
begin
Z := B[i];
B[i] := B[High(B)-I]
B[High(B)-I] := Z;
end;
end; |