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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2010, 17:46   #1
om3n
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 17
По умолчанию [Delphi]StringGrid - нужно отредактировать код

Мне нужно выполнить задания:
Цитата:
1. Заменить четный элемент каждого столбца максимальным по модулю
2. Поменять местами первый и средний столбцы.
У меня есть исходник похожего задания:
Цитата:
1. Заменить четный элемент каждой строки нулем
2. Поменять местами третий и последний столбцы.
Вот он:
Код:
procedure TForm1.Button1Click(Sender: TObject);
const n=5; m=3;
var
a:array[1..n,1..m] of integer;
b:array[1..m] of integer;
i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
begin
a[i,j]:=random(20);
StringGrid1.Cells[j-1,i-1]:=IntToStr(a[i,j]);
end;
for i:=1 to n do
for j:=1 to m do
begin
if a[i,j] mod 2 = 0 then a[i,j]:=0;
StringGrid2.Cells[j-1,i-1]:=IntToStr(a[i,j]);
end;
for i:=1 to n do
for j:=1 to m do
b[i]:=a[i,3];
a[i,3]:=a[i,5];
a[i,5]:=b[i];
StringGrid3.Cells[j-1,i-1]:=IntToStr(a[i,j]);
end;
end;
end.
Помогите пожалуйста отредактировать код к моему заданию.
om3n вне форума Ответить с цитированием
Старый 08.12.2010, 18:05   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
for j:=1 to m do
begin
if a[i,j] mod 2 = 0 then a[i,j]:=0;
StringGrid2.Cells[j-1,i-1]:=IntToStr(a[i,j]);
end;
Добавьте сюда поиск Максимального элемента по модулю(хотя непонятно по всей матрице надо или по столбцу)
Код:
for i:=1 to n do
 begin
  max:=1
 for j:=2 to m do
  if abs(a[i,j])>abs(a[i,max]) then max:=j;
 for j:=1 to m do
  begin
   if a[i,j] mod 2 = 0 then a[i,j]:=abs(a[i,max]);
   StringGrid2.Cells[i-1,j-1]:=IntToStr(a[i,j]);

  end;
 end;
А в чем проблема со средним столбцом
Код:
sr:=(m div 2);
if (m mod 2)=0 then inc(sr);
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 08.12.2010 в 18:08.
alex_fcsm вне форума Ответить с цитированием
Старый 08.12.2010, 18:08   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
2. Поменять местами третий и последний столбцы.
Код:
for i:=1 to n do
for j:=1 to m do
begin
b[i]:=a[i,3];
a[i,3]:=a[i,m];
a[i,m]:=b[i];
StringGrid3.Cells[j-1,i-1]:=IntToStr(a[i,j]);
end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 08.12.2010 в 20:03.
Mad_Cat вне форума Ответить с цитированием
Старый 08.12.2010, 18:35   #4
om3n
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 17
По умолчанию

[Error] Unit1.pas(68): Constant expression violates subrange bounds
Указывает на эту строчку:
Цитата:
a[i,3]:=a[i,n];
У меня и в исходнике была такая ошибка. Я так и не понял почему она появляется.
om3n вне форума Ответить с цитированием
Старый 08.12.2010, 19:07   #5
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

У вас матрица N*M так что там a[i,M]
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 08.12.2010, 20:12   #6
om3n
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 17
По умолчанию

На последний end. ссылается с ошибкой:
Цитата:
[Warning] Unit1.pas(47): FOR-Loop variable 'i' may be undefined after loop
For вроде не применяется после завершения цикла.

Последний раз редактировалось om3n; 08.12.2010 в 20:25.
om3n вне форума Ответить с цитированием
Старый 08.12.2010, 20:28   #7
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
Сообщение от om3n Посмотреть сообщение
На последний end. ссылается с ошибкой:

For вроде не применяется после завершения цикла.
Телепаты в отпуске. Код выкладывайте
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 08.12.2010, 20:59   #8
om3n
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 17
По умолчанию

Извиняюсь
Код:
procedure TForm1.Button1Click(Sender: TObject);
const n=5; m=3;
var
a:array[1..n,1..m] of integer;
b:array[1..m] of integer;
i,j,max:integer;
begin
for i:=1 to n do
for j:=1 to m do
begin
a[i,j]:=random(20);
StringGrid1.Cells[j-1,i-1]:=IntToStr(a[i,j]);
end;

for j:=1 to m do
begin
if a[i,j] mod 2 = 0 then a[i,j]:=0;
StringGrid2.Cells[j-1,i-1]:=IntToStr(a[i,j]);
end;

for i:=1 to n do
 begin
  max:=1;
 for j:=2 to m do
  if abs(a[i,j])>abs(a[i,max]) then max:=j;
 for j:=1 to m do
  begin
   if a[i,j] mod 2 = 0 then a[i,j]:=abs(a[i,max]);
   StringGrid2.Cells[i-1,j-1]:=IntToStr(a[i,j]);

  end;
 end;

 for i:=1 to n do
for j:=1 to m do
begin
b[i]:=a[i,3];
a[i,3]:=a[i,m];
a[i,m]:=b[i];
StringGrid3.Cells[j-1,i-1]:=IntToStr(a[i,j]);
end;

end.

Последний раз редактировалось Stilet; 09.12.2010 в 09:48.
om3n вне форума Ответить с цитированием
Старый 08.12.2010, 21:04   #9
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
StringGrid3.Cells[j-1,i-1]:=IntToStr(a[i,j]);
---->>
Определитесь с индексами: должны идти I,J
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 09.12.2010, 02:51   #10
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Уберите переменную i из глобальных. Или не обращайте на warning внимание
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно отредактировать документ nick-08 Microsoft Office Word 2 11.09.2010 15:59
Нужно перевести код с Delphi на C++ Дима я Общие вопросы C/C++ 2 28.06.2010 21:15
Списки(отредактировать немного код нужно) Lexeres Помощь студентам 4 25.03.2010 09:10