|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Матрица инциденции Delphi
Здравствуйте. Одна из задач - задать матрицу инцидентности путём введения количества вершин и количества рёбер.
В каждом столбце матрицы должны быть либо две единицы со знаком+, т. е. 1 и 1, либо -1 и -1, либо -1 1, остальные нули. Тоесть не больше двух единиц в столбце. Столбцов с одной единицей или полностью с нулями быть не должно. Написал код, вроде логически правильно, но чёто не работает) Подскажите что не так: Код:
procedure TForm1.Button1Click(Sender: TObject); begin s:=0; Str:=StrToInt(edit1.Text); Stlb:=StrToInt(edit2.Text); StringGrid1.ColCount:=Str+1; StringGrid1.RowCount:=Stlb+1; for i:=1 to Str do for j:=1 to Stlb do StringGrid1.Cells[i,j]:=IntToStr(random(3)-1); begin for i:=1 to Str do for j:=1 to Stlb do begin if Abs(StrToInt(StringGrid1.Cells[i,j]))=1 then begin s:=s+1; end; if s=2 then begin for m:=i+1 to Str do begin StringGrid1.Cells[m,j]:='0'; end; end; end; end; end; end. MAD: Учимся правильно оформлять код! Последний раз редактировалось M.A.D.M.A.N., 21.02.2013 в 22:25. |
#2
|
||||
|
||||
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject); var i, j, d, f, ColCnt, RowCnt: integer; begin Randomize; ColCnt:= StrToInt(Edit1.Text); RowCnt:= StrToInt(Edit2.Text); StringGrid1.ColCount:= ColCnt; StringGrid1.RowCount:= RowCnt; for i := 0 to ColCnt-1 do begin f:= 0; for j:= 0 to RowCnt-1 do begin d:= Random(3)-1; if ((d = 1) or (d = -1)) and (f <= 2 ) then Inc(f); if f = 3 then d:= 0; StringGrid1.Cells[i, j]:=IntToStr(d); end; end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |