Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2012, 13:33   #1
hl_anton
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 13
По умолчанию Двумерный массив delfi

Доброго времени суток, товарищи. Прошу вас помочь решить задачу на двумерные массивы.

Задача:Составьте программу циклической перестановки столбцов двумерного массива K, при которой i-й столбец становится i+1-м, а последний столбец становится первым.

Вот то что я написал:

Код:
procedure TForm3.btn3Click(Sender: TObject);
 var
 i,j:Integer;
begin
Randomize;
m:=strtoint(edt1.Text)+1;
n:=strtoint(edt2.Text)+1;
strngrd1.RowCount:=m;
strngrd1.ColCount:=n;
  If chk1.Enabled=True
  then
      for i:=1 to m do
        for j:=1 to n do
          begin
          K[i,j]:=Random(20);
            strngrd1.cells[i,j]:=IntToStr(K[i,j]);
          end;
end;
procedure TForm3.btn4Click(Sender: TObject);
var
 i,j:Integer;
 T:array [1..100,1..100] of Integer;
begin
strngrd2.RowCount:=m;
strngrd2.ColCount:=n;
for i:=2 to m do
for j:=1 to n do
 begin
 if i=m then
  begin
  T[1,j]:=K[m,j];
  T[m,j]:=K[m-1,j];
  end
  else
  T[i,j]:=K[i-1,j];
end;
for i:=1 to m do
for j:=1 to n do
 strngrd2.cells[i,j]:=IntToStr(T[i,j]);
end;

Данная программа заменяет все столбцы кроме первого. Не подскажете в чём дело?

Последний раз редактировалось hl_anton; 08.01.2012 в 13:56.
hl_anton вне форума Ответить с цитированием
Старый 08.01.2012, 15:04   #2
hl_anton
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 13
По умолчанию

Массив К объявлен глобально, если что.
hl_anton вне форума Ответить с цитированием
Старый 08.01.2012, 15:45   #3
hl_anton
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 13
По умолчанию

Неужели никто не подскажет?
hl_anton вне форума Ответить с цитированием
Старый 08.01.2012, 16:06   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

T тут зачем если K глобальный?
Код:
begin
for i:=m+1 downto 2 do
for j:=1 to n do
 begin
  K[j,i]:=K[j,i-1];
end;
for j:=1 to n do
k[1,j]:=k[m+1,j];
for i:=1 to m do
for j:=1 to n do
strngrd2.cells[i,j]:=IntToStr(K[j,i]);
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 08.01.2012 в 17:57.
Mad_Cat вне форума Ответить с цитированием
Старый 08.01.2012, 16:58   #5
hl_anton
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
T тут зачем если K глобальный?
Мне нужно вывести на экран оба массива и неизменённый массив К и новый массив Т.
hl_anton вне форума Ответить с цитированием
Старый 08.01.2012, 17:00   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Мне нужно вывести на экран оба массива и неизменённый массив К
Дык выведи в 1 грид неизменённый K
А в другой изменённый K
Нужен будес старый массив считай обратно из Грида
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 08.01.2012, 17:05   #7
hl_anton
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 13
По умолчанию

Mad_Cat, спасибо. Но я не совсем понял зачем столько много циклов.
hl_anton вне форума Ответить с цитированием
Старый 08.01.2012, 17:10   #8
hl_anton
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 13
По умолчанию

Mad_Cat, вот что получилось.
Изображения
Тип файла: jpg Безымянный.jpg (72.1 Кб, 151 просмотров)
hl_anton вне форума Ответить с цитированием
Старый 08.01.2012, 18:02   #9
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
var i,j:integer;
begin
 Randomize;
 // заполним  1 массив
  for i:=0 to n-1 do
  for j:=0 to n-1 do  begin
  K[i,j]:=Random(25)-12;
  strngrd1.Cells[j,i] := IntToStr(k[i,j]);
  end;
 //  подвинем на 1 столбец вправо
 for j:=n downto 1 do
 for i:=0 to n-1 do
 k[i,j]:=k[i,j-1];

 for i:= 0 to n-1 do
 k[i,0]:=k[i,n];

 for i:=0 to n-1 do
  for j:=0 to n-1 do  begin
  strngrd2.Cells[j,i] := IntToStr(k[i,j]);
  end
Изображения
Тип файла: jpg Точечный рисунок.jpg (253.1 Кб, 145 просмотров)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 08.01.2012, 18:04   #10
hl_anton
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 13
По умолчанию

Спасибо, мэдкэт^^
hl_anton вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив!! masashama Общие вопросы C/C++ 2 11.05.2011 19:55
Двухмерный массив Delfi 7 superDmitry Помощь студентам 24 16.11.2010 19:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
массив двумерный 2 Babur4iK Помощь студентам 3 10.11.2009 19:38