Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.10.2014
Сообщений: 29
1

Переставить элементы следующим образом

17.12.2015, 22:10. Показов 548. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Первые две части задания я сделал, а вот третья часть не работает. Помогите закончить программу. Заранее спасибо.

1.Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,60]. Удалить из него все элементы, в которых последняя цифра четная, а само число делится на нее.
2.Вставить элемент со значением К до и после всех элементов, заканчивающихся на цифру К.
3.Переставить элементы следующим образом: a[1], a[12], a[2], a[11], a[3], a[10],a[4], a[9], a[5], a[8], a[6], a[7].

Вот код:
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
84
85
86
87
88
89
90
91
92
93
94
resultArray: array of integer;
  n:integer;
 
procedure TForm3.BitBtn1Click(Sender: TObject);
  const
  rangemax=60;
  rangemin=-10;
  var
  i:integer;
begin
    randomize;
    n:=strtoint(Edit1.Text);
    StringGrid1.ColCount:=n;
    Setlength(resultarray,n);
    for i:=0 to n-1 do
  begin
    resultarray[i]:=rangemin+random(rangemax-rangemin);
    StringGrid1.Cells[i,0]:=(inttostr(resultarray[i]));
  end;
end;
 
procedure TForm3.BitBtn2Click(Sender: TObject);
  var i,j,chislo:integer;
begin
    i:=0;
    while i<n do
begin
    chislo:=resultArray[i] mod 10;
   if (chislo<>0) and (chislo mod 2=0)and(resultArray[i] mod chislo=0) then
begin
   if i=n-1 then n:=n-1 
   else
begin
     for j:=i to n-2 do 
     resultArray[j]:=resultArray[j+1];
     n:=n-1;
end;
end
   else
      inc(i);
end;
      Stringgrid2.ColCount:=n;
      for i:=0 to n-1 do
      Stringgrid2.Cells[i,0]:=(inttostr(resultarray[i]));
end;
 
Function FindK(element, K:integer):boolean;
begin
  if (abs(element) mod 10) <> K then
      Result := false
  else Result := true;
end;
 
 
procedure TForm3.BitBtn4Click(Sender: TObject);
var
  k,s,i,j:integer;
  tmpArray : array of integer;
begin
    k:=strtoint(Edit2.Text);
    i:=0;
    SetLength(tmpArray, N*3);
    j := -1;
    for i :=0 to N-1 do
      begin
        inc(j);
        if FindK(resultArray[i],K) then
          begin
            tmpArray[j] := K;
            inc(j);
            tmpArray[j] := resultArray[i];
            inc(j);
            tmpArray[j] := K;
            inc(n,2);
            end
        else
 
           tmpArray[j] := resultArray[i];
      end;
 
       Stringgrid3.ColCount:=n;
       for i:=0 to j do
       StringGrid3.Cells[i,0]:=(IntToStr(tmpArray[i]));
 
end;
 
 
procedure TForm3.BitBtn5Click(Sender: TObject);
var
i,j,x:integer;
begin
         Setlength(resultarray,n);
      while i<n do
       begin
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2015, 22:10
Ответы с готовыми решениями:

Переставить элементы следующим образом
одномерные массив. Дан массив целых чисел из n элементов, заполненный случайным образом....

Дано целое число N (>0). Последовательность вещественных чисел Ak определяются следующим образом: A0=2, Ak=2+1/Ak-1, K=1,2,. . Вывести элементы A1,A
Пожайлуйста помогите надо решить задачу за выходные!!! Дано целое число N (&gt;0)....

Массив: переставить элементы таким образом, чтобы сначала были записаны все положительные, затем все отрицател
Переставить члены последовательности так, чтобы сначала расположились все ее неотрицательные члены,...

*. В файле из вещественных чисел переставить элементы таким образом, чтобы сначала были записаны все положительные, затем все отрицательные, а потом
Помогите с задачей! Видел подобное решение в нижестоящей теме но оно слишком сложное желательно...

1
105 / 104 / 29
Регистрация: 15.01.2011
Сообщений: 501
18.12.2015, 07:17 2
glozigor, попробуйте вот так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure perestanovka(var Arr: TArr);
var
  i: integer;
  temp: variant;
begin
  for i := Low(Arr) to High(Arr) do
    if (i < High(Arr)-i) then
      begin
        temp:=Arr[i];
        Arr[i]:=Arr[High(Arr)-i];
        Arr[High(Arr)-i]:=temp;
      end
    else Exit;
end;
0
18.12.2015, 07:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2015, 07:17
Помогаю со студенческими работами здесь

Массив: переставить элементы таким образом, чтобы сначала были записаны все положительные, затем все отрицательные, а потом все нули.
Здравствуйте! помогите пожалуйста с задачей по информатике. Буду очень благодарна) В массиве из...

Заполнить таблицу СтрингГрид следующим образом
Есть таблица СтрингГрид на 3 строки и на 11 столбцов - первая строка и первый столбец фиксированы...

Нужно заполнить таблицу СтрингГрид следующим образом:
Есть таблица СтрингГрид на 3 строки и на 11 столбцов - первая строка и первый столбец фиксированы...

Преобразовать формат сведений об учащихся следующим образом
Здравствуйте уважаемые Программисты) Нужна помощь для решения задачи на Delphi: Задается файл...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru