![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 37
|
![]()
Народ, почему выдает 0 при расчете главной диагонали. Где я накасячил?
var Form1: TForm1; A: array of array of Integer; //исходные массива Ai, Aj: Byte; // размеры исходных данных implementation {$R *.dfm} procedure TForm1.install(); var i,j: Byte; begin Ai:= StrToInt(edt1.text); Aj:= Ai; SetLength(A,Ai,Aj); For i:=0 to (Ai-1) do For j:=0 to (Aj-1) do A[i,j]:=Random(10)-Random(10); end; procedure TForm1.print(); var i,j: Byte; begin For i:=0 to (Ai-1) do For j:=0 to (Aj-1) do stringrd1.Cells[j,i]:=IntToStr(A[i,j]); end; procedure TForm1.btn3Click(Sender: TObject); begin Close; end; procedure TForm1.btn2Click(Sender: TObject); begin edt1.Text:=''; end; procedure TForm1.btn1Click(Sender: TObject); const N=50; var A:array[1..N,1..N] of Integer; i,j,diag1: Integer; begin install(); diag1:=1; for i:=1 to N do for j:=1 to N do if(i=j) then diag1:=diag1*A[i,j]; print(); edt2.Text:= IntToStr(diag1); end; end. |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
![]() Код:
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]()
Если хоть один элемент диагонали равен 0, то произведение будет 0. При размере матрицы 10х10 вероятность этого, думаю, заметно больше половины.
А при таком вот заполнении: A[i,j]:=Random(10)-Random(10); - кучность к нулю повышенная. Значит, вероятность обнаружения нуля на главной диагонали еще больше. ПОпробуй изменить заполнение на A[i,j]:=Random(10)+1; Если проблема не уйдет - пиши. Но только тогда у тебя появится другая проблема: преполнение diag1 )).
Предпочитаю на "ты".
|
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]()
Конечно. Обычный динамический массив.
Предпочитаю на "ты".
|
![]() |
![]() |
#5 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 37
|
![]()
да дело в том, что даже при положительных результатах, выдает 0.
|
![]() |
![]() |
#6 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 37
|
![]()
И спасибо за совет A[i,j]:=Random(10)+1;. Действительно так лучше будет
|
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В чем ошибка? | DartDayring | Visual C++ | 5 | 09.11.2010 23:39 |
В чем ошибка? | Angelic_fiend | Помощь студентам | 12 | 02.06.2010 15:52 |
В чем ошибка? | hitman12 | Паскаль, Turbo Pascal, PascalABC.NET | 13 | 04.11.2009 12:38 |
В чем ошибка... | Эдвин Галстук | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 25.10.2009 20:01 |
в чем ошибка? | Lonix | Общие вопросы Delphi | 2 | 24.03.2007 09:41 |