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

Элементы массива X циклически сдвинуть на k позиций влево

25.06.2015, 21:36. Показов 3055. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Элементы массива X циклически сдвинуть на k позиций влево.
Массив записан в StringGrid.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2015, 21:36
Ответы с готовыми решениями:

Дан массив, состоящий из символов. Элементы массива циклически сдвинуть на k позиций влево
пожалуйста кто может???

Элементы массива Х циклически сдвинуть на п позиций вправо
Элементы массива Х циклически сдвинуть на п позиций вправо. помогите написать этот массив в Delphi...

Элементы массива X циклически сдвинуть на n позиций вправо. (код delphi)
Элементы массива X циклически сдвинуть на n позиций вправо. (код delphi)

Элементы массива циклически сдвинуты на k позиций влево или вправо.
const n=100; var x:array of real; Элементы массива циклически сдвинуты на k позиций влево или...

4
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
25.06.2015, 22:16 2
самый простой способ K раз циклически сдвинуть элементы массива на один элемент влево.
ну, это в коде выглядит так (допустим, что в гриде массив расположен горизонтально в строке с индексом 0 (заголовков строк/столбцов НЕТ - т.е. fixedRow=0 и fixedCol=0 ):
Delphi
1
2
3
4
5
6
7
8
9
10
var i,j, N, K : integer;
   FirstElement, tmp : string;
begin
N := StringGrid1.ColCount;
for j:=1 to K mod N do begin
  // циклический сдвиг на 1 элемент влево
  FirstElement := StringGrid1.Cells[0, 0];
  for i:=0 to N-2 do StringGrid1.Cells[i, 0] := StringGrid1.Cells[i+1, 0];
  StringGrid1.Cells[N-1, 0] := FirstElement
end;
1
0 / 0 / 0
Регистрация: 25.06.2015
Сообщений: 5
25.06.2015, 23:15  [ТС] 3
Опираясь на ваш код пытаюсь сделать так, чтобы элементы сдвигались в каждой строке, но не получается
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
var
  Form1: TForm1;
    n,m,i,j,a:integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var a: array of array of integer;
begin
randomize;
n:=strtoint(edit1.Text);
m:=strtoint(edit2.Text);
Setlength(a,n,m);
StringGrid1.RowCount:=n;
StringGrid1.ColCount:=m;
for i:=0 to n-1 do
for j:=0 to m-1 do
 begin
  a[i,j]:=-10+random(21);
  StringGrid1.Cells[j,i]:=IntToStr(a[i,j]);
 end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var K : integer;
   FirstElement, tmp : string;
begin
K:=StrToInt(Edit3.Text);
N := StringGrid1.ColCount;
M:= StringGrid1.ColCount;
for i:=1 to K mod N do
for j:=1  to K mod M do begin
  // циклический сдвиг на 1 элемент влево
  FirstElement := StringGrid1.Cells[0, 0];
 
  for i:=0 to N-2 do StringGrid1.Cells[i, 0] := StringGrid1.Cells[i+1, 0];
  for j:=0 to M-2 do StringGrid1.Cells[0,j ] := StringGrid1.Cells[0,j+1 ];
  StringGrid1.Cells[N-1, M-1] := FirstElement;
end;
     end;
end.
Массив.rar
0
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
26.06.2015, 00:01 4
Лучший ответ Сообщение было отмечено DmitriuA как решение

Решение

ты всё напутал..
попробуй так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button2Click(Sender: TObject);
var i,j, row, K : integer;
   FirstElement, tmp : string;
begin
 K:=StrToInt(Edit3.Text);
 N := StringGrid1.RowCount;
 M:= StringGrid1.ColCount;
 for row := 0 to N do
 for j:=1 to K mod M do begin
   // циклический сдвиг на 1 элемент влево
   FirstElement := StringGrid1.Cells[0, row];
   for i:=0 to M-2 do StringGrid1.Cells[i, row] := StringGrid1.Cells[i+1, row];
   StringGrid1.Cells[M-1, row] := FirstElement;
 end;
end;
0
0 / 0 / 0
Регистрация: 25.06.2015
Сообщений: 5
26.06.2015, 00:22  [ТС] 5
Огромное спасибо за помощь, все работает.
0
26.06.2015, 00:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2015, 00:22
Помогаю со студенческими работами здесь

Сдвинуть элементы массива Х на заданное число К позиций влево
Дан массив X из 10 чисел. Воспользовавшись вспомогательным массивом такой же размерности, сдвинуть...

Процедура: преобразует массив S, циклически сдвигая его элементы на K позиций влево
Объявлены типы и переменные : TYPE SHIFT = 1..9; SCALE = ARRAY OF BOOLEAN ;...

Сдвинуть элементы массива циклически на M позиций влево
Элементы массива циклически сдвинуть на M позиций влево

Элементы массива циклически сдвинуть на k позиций влево
Помогите пожалуйста написать программу!!!понимаю что все должно быть оч легко, но... В С++: 1. Дан...


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

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