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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.09.2011, 12:36   #1
robin39
Пользователь
 
Регистрация: 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.
robin39 вне форума
Старый 30.09.2011, 12:48   #2
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

Код:
A: array of array of Integer;
эмм... это типо двумерный массив???
unbanned вне форума
Старый 30.09.2011, 12:51   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Если хоть один элемент диагонали равен 0, то произведение будет 0. При размере матрицы 10х10 вероятность этого, думаю, заметно больше половины.

А при таком вот заполнении:
A[i,j]:=Random(10)-Random(10);
- кучность к нулю повышенная. Значит, вероятность обнаружения нуля на главной диагонали еще больше.

ПОпробуй изменить заполнение на
A[i,j]:=Random(10)+1;
Если проблема не уйдет - пиши.
Но только тогда у тебя появится другая проблема: преполнение diag1 )).
Предпочитаю на "ты".
TinMan вне форума
Старый 30.09.2011, 12:52   #4
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от unbanned Посмотреть сообщение
Код:
A: array of array of Integer;
эмм... это типо двумерный массив???
Конечно. Обычный динамический массив.
Предпочитаю на "ты".
TinMan вне форума
Старый 30.09.2011, 13:39   #5
robin39
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 37
По умолчанию

да дело в том, что даже при положительных результатах, выдает 0.
robin39 вне форума
Старый 30.09.2011, 14:02   #6
robin39
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 37
По умолчанию

И спасибо за совет A[i,j]:=Random(10)+1;. Действительно так лучше будет
robin39 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка? 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