Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Saktus
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 12
#1

Вставить число k после всех элементов массива, кратных своему индексу. - Delphi

28.05.2011, 13:39. Просмотров 1276. Ответов 15
Метки нет (Все метки)

Всем привет!
Не могу решить задачу.Вставить число k после всех элементов массива, кратных своему индексу.

Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2011, 13:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вставить число k после всех элементов массива, кратных своему индексу. (Delphi):

Вставить в массив число К после всех элементов, кратных своему номеру
Дан массив целых чисел из n элементов, заполненный случайным образом числами...

Вставить число К перед всеми элементами, кратными своему индексу. Где ошибка в коде?
procedure TForm3.Button3Click(Sender: TObject); var j,k,z: integer; begin...

Вставить в массив заданное число x после всех отрицательных элементов
Заданный массив с n чисел. Вставить в массив заданное число x после всех...

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

Вставить значение n перед всеми элементами массива, большими n, и значение m - после всех элементов, меньших m
Вставить в массив два числа: первое со значением n перед всеми элементами,...

Вставить значение минимального элемента массива после всех четных
Доброго времени суток! Необходимо выделить место в StringGrid для вставки...

15
вумудщзук
61 / 61 / 10
Регистрация: 19.05.2010
Сообщений: 198
28.05.2011, 14:36 #2
Delphi
1
2
3
4
for i:= 0 to length(mas)-1 do
  begin
    if mas[i] mod i =0 then mas[i]:=mas[i]+k;
  end;
0
Saktus
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 12
28.05.2011, 14:47  [ТС] #3
Он просто прибавляет к элементам.А мне в вставить между элементами.
0
вумудщзук
61 / 61 / 10
Регистрация: 19.05.2010
Сообщений: 198
28.05.2011, 15:41 #4
Щас свое проверю через 10 мин, тебе отвечу

Добавлено через 32 минуты
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
for i:= 1 to length(mas) do
  begin
    if mas[i] mod i =0 then
      begin
        setlength(mas, length(mas)+1);
        for j := length(mas) downto i+2 do
          begin
            mas[j]:=mas[j-1];
          end;
        mas[i+1]:=k;
      end;
  end;
2
Saktus
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 12
28.05.2011, 16:18  [ТС] #5
В строке setlength(mas, length(mas)+1); - incompatible types
0
вумудщзук
61 / 61 / 10
Регистрация: 19.05.2010
Сообщений: 198
28.05.2011, 16:36 #6
Сделай массив динамическим.
0
Saktus
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 12
28.05.2011, 16:39  [ТС] #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
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
const
  n=5;
var
  a:array[1..2*n] of integer;
  i,j,kol,k:integer;
 
begin
 
kol:=n;
  k:=10;
 
  writeln('Vvedite massiv');
    For i:=1 to kol do
      readln(a[i]);
 
  For i:=1 to kol do
  If (a[i] mod i=0) then
    begin
      inc(kol);
        For j:=kol downto i+1 do
        a[j]:=a[j-1];
        a[i+1]:=k;
 
     end;
 
   For i:=1 to kol do
    write(a[i]:5);
 
  readln;
end.
Но она не правильно работает.
0
Gelo
47 / 47 / 21
Регистрация: 30.04.2009
Сообщений: 119
28.05.2011, 16:42 #8
incompatible types
Если переменная mas типа string то в setlength нет необходимости.

Добавлено через 3 минуты
Чтобы задать динамический то вместо
Delphi
1
a:array[1..2*n] of integer;
необходимо писать
Delphi
1
a:array of integer;
но перед формированием массива задавать его размерносеь:
Delphi
1
setlength(a,n)
Где n - размер массива.
1
Saktus
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 12
28.05.2011, 16:56  [ТС] #9
Не хочет:
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
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
const
  n=2;
var
  A:array of integer;
  i,k,j:integer;
begin
  k:=10;
  setlength(a,n);
 
  writeln('vvedite massiv');
    for i:= 1 to length(a) do
      readln(A[i]);
 
  for i:= 1 to length(a) do
  begin
    if a[i] mod i =0 then
      begin
        setlength(a, length(a)+1);
        for j := length(a) downto i+2 do
          begin
            a[j]:=a[j-1];
          end;
        a[i+1]:=k;
      end;
  end;
 
    for i:=1 to length(a) do
    write(A[i],' ');
 
  readln;
end.
0
Gelo
47 / 47 / 21
Регистрация: 30.04.2009
Сообщений: 119
28.05.2011, 17:23 #10
Delphi
1
for i:= 1 to length(a) do
Нумерация элементов массива начинается с нуля, следовательно должно быть так:
Delphi
1
for i:= 0 to length(a)-1 do
Добавлено через 12 минут
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
  A:array of integer;
  i,k,j:integer;
begin
  k:=10;
  setlength(a,2);
 
    for i:= 0 to length(a)-1 do
      readln(A[i]);
 
  for i:= 0 to length(a)-1 do
  begin
    if a[i] mod (i+1) =0 then
      begin
        setlength(a, length(a)+1);
        for j := length(a)-1 downto i+2 do
          begin
            a[j]:=a[j-1];
          end;
        a[i+1]:=k;
      end;
  end;
 
    for i:=1 to length(a) do
    write(A[i],' ');
 
  readln;
 
end;
Это рабочий вариант, он в анализ включает также то число, которое добавляется (к=10).
0
Saktus
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 12
28.05.2011, 17:33  [ТС] #11
Вот что получилось.Я ввожу 1 2 3 4 5, выходит 1 10 10 2 3 4 5 0. Но ни как ни 1 10 2 10 3 10 4 10 5 10
0
Gelo
47 / 47 / 21
Регистрация: 30.04.2009
Сообщений: 119
28.05.2011, 18:10 #12
Обязательно все производить в одном массиве?
0
Saktus
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 12
28.05.2011, 18:17  [ТС] #13
Нет не обязательно.
0
Gelo
47 / 47 / 21
Регистрация: 30.04.2009
Сообщений: 119
28.05.2011, 18:18 #14
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
 A,b:array of integer;
  i,k,j:integer;
begin
  k:=10;
  setlength(a,5);
  setlength(b,5);
 
    for i:= 0 to length(a)-1 do
      A[i]:=i+1;
  j:=0;
  for i:=0 to length(a)-1 do
  begin
    if a[i] mod (i+1) =0 then
      begin
        setlength(b, length(b)+1);
        b[j]:=a[i]; inc(j); b[j]:=k; inc(j);
  end
  else begin b[j]:=a[i]; inc(j); end;
  end;
 
    for i:=1 to length(b) do
    write(b[i],' ');
 
  readln;
 
end;
Предыдущий код был актуален лишь для массива из 2х чисел.
1
Saktus
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 12
28.05.2011, 18:25  [ТС] #15
Я так понял что она ставить k на место тех элементов которые не кратны?
И можно объяснить как она работает?
0
Gelo
47 / 47 / 21
Регистрация: 30.04.2009
Сообщений: 119
28.05.2011, 18:38 #16
В массиве "а" исходное множество.
Проверяем его, если выполняется условие то увеличиваем размерность массива b на 1 и записываем в него текущий элемент из массива а, затем записываем число к.
Если условие не выполняется то размерность массива b не увеличиваем, записываем в него текущий элемент массива а.
Выводим массив b
1
28.05.2011, 18:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2011, 18:38
Привет! Вот еще темы с решениями:

Вставить максимальный элемент массива после всех элементами, в которых есть цифра 1
помогите пожалуйста сделать лабораторную... если что есть один вариант готовы,...

Вставить в натуральное число заданную цифру после всех четных цифр в записи числа(цифра вводится с клавиатуры)
Дано натуральное число. Вставить в него заданную цифру после всех четных цифр в...

Для каждой строки двумерного массива подсчитать и выдать на печать количество элементов, кратных 3 и кратных 7
надо консольное приложение , без рандомайза функций и процедур в делфи.Прошу...

Для каждой строки двумерного массива подсчитать и выдать на печать количество элементов, кратных 3 и кратных
21. Для каждой строки двумерного массива подсчитать и выдать на печать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru