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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2016, 16:07   #1
ralex35
Пользователь
 
Регистрация: 06.05.2016
Сообщений: 16
По умолчанию Delphi - двумерные массивы

Помогите, пожалуйста, Дан массив В (4*3). Элементы массива ввести с клавиатуры. Для ввода элементов массива использовать компонент StringGrid. Вставить перед всеми строками, в которых нет отрицательных элементов, вторую строку.

У меня вставляет вторую строку после,а не перед.Подскажите что сделать,чтобы верно работало?


Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,l:integer;
n: boolean;
a: array[0..3] of string;
begin
StringGrid1.rowCount := 3;
for i := 0 to 3 do
a[i] := StringGrid1.Cells[i,1];
for j:=2 downto 0 do begin
n := true;
for i := 0 to 3 do
if (StrToInt(StringGrid1.Cells[i,j]) < 0) then begin
n := false;
break;
end; 
if (n) then begin 
StringGrid1.rowCount := StringGrid1.rowCount + 1; 
for l := StringGrid1.RowCount - 1 downto j+1 do
StringGrid1.Rows[l] := StringGrid1.Rows[l-1]; 
for i := 0 to 3 do 
StringGrid1.Cells[i,j+1] := a[i]; 
end; 
end; 
end;
end.
ralex35 вне форума Ответить с цитированием
Старый 02.06.2016, 16:30   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

насколько я понимаю, нужно только одну строчку исправить:
StringGrid1.Cells[i, j] := a[i];

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i, j, l: integer;
  n: boolean;
  a: array[0..3] of string;
begin
  StringGrid1.rowCount := 3;
  for i := 0 to 3 do
    a[i] := StringGrid1.Cells[i, 1];
  for j := 2 downto 0 do begin
    n := true;
    for i := 0 to 3 do
      if (StrToInt(StringGrid1.Cells[i, j]) < 0) then begin
        n := false;
        break;
      end;
    if (n) then begin
      StringGrid1.rowCount := StringGrid1.rowCount + 1;
      for l := StringGrid1.RowCount - 1 downto j + 1 do
        StringGrid1.Rows[l] := StringGrid1.Rows[l - 1];
      for i := 0 to 3 do
        StringGrid1.Cells[i, j] := a[i];
    end;
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.06.2016, 17:03   #3
ralex35
Пользователь
 
Регистрация: 06.05.2016
Сообщений: 16
По умолчанию

Спасибо)
ralex35 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi - двумерные массивы ralex35 Помощь студентам 0 22.05.2016 15:04
Двумерные массивы (delphi 6) Роберто Помощь студентам 6 24.05.2012 01:07
Двумерные массивы Delphi Chevy Помощь студентам 2 23.05.2012 08:52
Delphi 7 двумерные массивы StudentFIU Помощь студентам 1 04.05.2010 18:55