0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 1
1

Сдвинуть все элементы с четными индексами в начало массива, а с нечетными – в конец, сохраняя порядок их следования.

17.05.2018, 20:38. Показов 742. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задан одномерный массив. Сдвинуть все элементы с четными индексами в начало массива, а с нечетными – в конец, сохраняя порядок их следования.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  type
    A = array[1..10]of integer;
    var arr,brr : A;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button2Click(Sender: TObject);
var i, j, temp: integer;
begin
  Edit1.Text:='';
  Edit2.Text:='';
  for i:= 1 to 10 do
  begin
    arr[i]:= 0;
  end;
  for i:= 1 to 10 do
  begin
    randomize;
    arr[i]:= random(9);
    Edit1.Text:=Edit1.Text+IntToStr(arr[i]);
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var i,k: integer;
begin
  Edit2.Text:='';
  k:=1;
  for i:= 1 to 10 do
  begin
    brr[i]:= 0;
  end;
    for  i := 1 to 10 do
      begin
        if ( i mod 2 = 0 )
        then
        begin
        brr[k]:=arr[i];
        k:=k+1;
        end;
end;
for  i := 1 to 5 do
Edit2.Text:=Edit2.Text+IntToStr(brr[i]);
    for  i := 1 to 10 do
      begin
        if ( i mod 2 <> 0 )
        then
        begin
        brr[k]:=arr[i];
        k:=k+1;
        end;
end;
for  i := 6 to 10 do
Edit2.Text:=Edit2.Text+IntToStr(brr[i]);
end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2018, 20:38
Ответы с готовыми решениями:

При нажатии на кнопку 2 сдвинуть все элементы с четными индексами в начало массива, а с нечетными – в конец
При нажатии на кнопку 2 сдвинуть все элементы с четными индексами в начало массива, а с нечетными –...

Сдвинуть все отрицательные элементы с в начало массива,сохраняя их порядок между собой, а все положительные элементы
Дан целочисленный список с количеством элементов 2n, не содержащий нулей. Сдвинуть все...

Все элементы, не равные нулю, переписать (сохраняя их порядок) в начало, а нулевые элементы – в конец массива
Задан одномерный массив. Все его элементы, не равные нулю, переписать (сохраняя их порядок) в...

одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало массива, а нулевые элементы в конец массива in c++
одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало...

2
Да так, от скуки захожу.
141 / 120 / 44
Регистрация: 25.06.2017
Сообщений: 360
Записей в блоге: 3
17.05.2018, 21:55 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
type A = array[1..10]of integer;
 
var arr:a;
 
procedure chetkiy_perenos(var m:a);
var b:a;
i,n:Integer;
begin
   n:=1;
   for i:=1 to 10 do b[i]:=m[i];
   for i:=1 to 10 do if not Odd(i) then begin m[n]:=b[i]; n:=n+1; end;
   for i:=1 to 10 do if Odd(i) then begin m[n]:=b[i]; n:=n+1; end;
end;
 
procedure TForm1.btn1Click(Sender: TObject);
var i:Integer;
begin
edt1.Text:='';
edt2.Text:='';
Randomize;
for i:=1 to 10 do begin arr[i]:=Random(9); edt1.Text:=edt1.Text+inttostr(arr[i]);  end;
chetkiy_perenos(arr);
for i:=1 to 10 do edt2.Text:=edt2.Text+inttostr(arr[i]);
end;
Надеюсь я правильно все понял.
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
18.05.2018, 10:11 3
Сдвинуть это не значит задействовать второй массив, все делается в одном
Delphi
1
2
3
4
5
6
7
8
if odd(n) then k:=n div 2+1 else k:=n div 2;
for i:=1 to k do
 begin
  x:=a[i];
  for j:=i to n-1 do
  a[j]:=a[j+1];
  a[n]:=x;
 end;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2018, 10:11
Помогаю со студенческими работами здесь

Все элементы массива, не равные нулю, переписать, сохраняя их порядок, в начало массива, а нулевые значения - в конец
Создать одномерный массив A. Все его элементы, не равные нулю, переписать, сохраняя их порядок, в...

Разместить сначала все положительные элементы массива, а затем все отрицательные и нули, сохраняя порядок их следования
Дан массив вещественных чисел, содержащий 20 элементов. Записать в этот же массив сначала все...

Все неравные 0 элементы массива переписать, сохраняя их порядок, в начало массива
Ввести одномерный массив Х(N). Все элементы массива неравные нулю переписать, сохраняя их...

Все элементы массива, не равные нулю, перепишите, сохраняя их порядок, в начало массива
Дан одномерный массив. Все его элементы, не равные нулю, перепишите (сохраняя их порядок) в начало...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru