Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.02.2013, 22:08
shuppoo shuppoo вне форума
Прохожий
 
Регистрация: 21.02.2013
Сообщения: 1
Репутация: 10
По умолчанию Матрица инциденции 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  
Старый 22.02.2013, 12:51
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от shuppoo
...В каждом столбце матрицы должны быть либо две единицы со знаком+, т. е. 1 и 1, либо -1 и -1, либо -1 1, остальные нули...
Что-то типа этого:
Код:
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;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter