оформите программу на ABC ПАСКАЛЕ, обеспечивающую:
-заполнение одномерного массива A с клавиатуры N вещественными значениями;
-За минимальное число проходов по массиву A последовательное (а-б-в-г) формирование одномерного массива Z значениями элементов массива A в указанном порядке от исходного расположения в массиве A;
а) сначала не положительные элементы, расположенные на четных позициях, в порядке, обратных данному,
б) потом положительные элементы на нечетных позициях в порядке, обратном исходному,
в) затем положительные элементы на четных позициях в исходном порядке,
г) потом не положительные элементы на нечетных позициях в исходном порядке;
- Вывод элементов массива Z;
p.s. прошу не просто решить, но и рассказать про алгоритм решения, даю все свои баллы)
Answers & Comments
Const
N = 100;//кол-во возможных элементов массива А и Z
M = 0;//при введении этого числа заканчивается заполнение ммасива А
Var
a,b,v,g,ak,bk,vk,gk,jjj,nn: integer;
masA,masZ: array[1..n] Of integer;
Begin
write('при введении числа ',M,
' заполнение массива прекращается');
writeln;
For jjj:=1 To N Do
Begin
read (masA[jjj]);
If masA[jjj]=M Then
Begin
nn := jjj-1;
break;
End;
End;
writeln('исходный массив А :');
For jjj:=1 To nn Do
write(masA[jjj],' ');
writeln;
For jjj:=1 To nn Do
If masA[jjj]<0 Then
Begin
If jjj Mod 2=0 Then a := a+1
Else g := g+1;
End
Else
Begin
If jjj Mod 2=0 Then v := v+1
Else b := b+1;
End;
writeln(a,' ',b,' ',v,' ',g);
ak := a;
bk := b;
vk := v;
gk := g;
For jjj:=1 To nn Do
If masA[jjj]>=0 Then
Begin
If jjj mod 2=0 Then
Begin
masZ[ak+bk+v] := masA[jjj];
v := v-1;
End
Else
Begin
masZ[ak+b] := masA[jjj];
b := b-1;
End
End
Else
Begin
If jjj mod 2=0 Then
Begin
masZ[a] := masA[jjj];
a := a-1;
End
Else
Begin
masZ[ak+bk+vk+g] := masA[jjj];
g := g-1;
End
End;
writeln ('полученный массив Z :');
For jjj:=1 To nn Do
write(masZ[jjj],' ');
End.
объяснить будет сложно , но я попробую . Крч, первый раз перебирая массив , программа считывает кол-во жлементов для каждой из групп (отрицательные с четным индексом-а, отрицательные с нечетным -g,положительные с четным-v,положительные с нечетным-b).
Перебирая массив второй раз , программа берет последовательно числа из масства А , определяет к какой группе они относятся , и дальше кидает в конец нужной часть массива (кол-во всех элемкнтов массива =a+b+v+g, чтобы кинуть числа -2 и -5 (стоящие на нечетных местах ) в нужную часть массива , мы должны кинуть число -2 в ячейку [а+b+v+g] , а число -5 в ячейку [а+b+v+(g-1)] )