|
#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; |