Другие языки программирования и технологии

Delphi. Формы . заполнить матрицу

получилось так
как заполнить там? я уже не знаю как написать
Что-то у вас переменных слишком много.

procedure TForm1.Button1Click(Sender: TObject);
var
  n, i, j: integer;
begin
  n := StrToInt(Edit1.Text);
  StringGrid1.ColCount := n;
  StringGrid1.RowCount := n;
  for i := 0 to n - 1 do
    with StringGrid1 do
    begin
      RowHeights[i] := (Height - n + 1) div n;
      ColWidths[i] := (Width - n + 1) div n;
    end;
  for i := 0 to n - 1 do
  begin
    for j := 0 to n - i - 1 do
      StringGrid1.Cells[j, i] := IntToStr(i + 1 + j);
    for j := n - i to n - 1 do
      StringGrid1.Cells[j, i] := IntToStr(n);
  end;
end;



P.S. И if здесь, в общем-то, не нужен.
Виталий Мумрий
Виталий Мумрий
51 590
Лучший ответ
Эвелина, не усложняйте. Берем любую строку NR, в интервале [0..N-1], смотрим: при каком условии писать в ячейку N? Если колонка NC>=(N-NR-1), не? А что пишем если NC<(N-NR-1)? ИМХО пишем NR+NC+1, проверьте плззз, на вс. случай, сейчас плохо соображаю.
Берем Ваши 2 цикла, и пишем в ячейки:
for nr:=0 to N-1 do begin
for nc:=0 to N-1 do begin
if NC<(N-NR-1) then
StringGrid1.Cells[NC,NR]:=NR+NC+1
else
StringGrid1.Cells[NC,NR]:=N;
end;
end;
И всио.
А в StringGrid сделать FixedCols:=0 и FixedRows:=0;
Oleg Krivocheev
Oleg Krivocheev
48 987
А как надо заполнить?
Viktor Yedkov
Viktor Yedkov
34 701
код в студию