Страница 3 из 3

Re: тяжёлая математическая задача

Добавлено: 19 окт 2007, 16:28
somebody_now
Serge_Bliznykov, somewhere, попробовал, не помогло(
впрочем это уже не так важно, ибо работа отправлена, а делать её надо было через рекуррентную ф-лу с чем я не знаком вобщемто, точнее не могу её составить для этого конкретного ряда..есть конечно время ещё переделать но шансов мало на то что смогу её составить(

Re: тяжёлая математическая задача

Добавлено: 23 окт 2007, 14:12
somebody_now
Нужно изменить структуру алгоритма так, чтобы количество используемых операторов цикла в программе было минимальным. Можно ли добиться уменьшения количества форов по сравнению с исходным вариантом?

Код: Выделить всё

program proizv_matric;
var n,m,r:integer;
i,j,k:integer;
a,b,c:array[1..15,1..15] of real;
begin
write('zadaite pr-ie dvuh matric');
readln(m,n,r);
write('zadaite A postrochno');
for i:=1 to m do
    for j:=1 to n do
    read(a[i,j]);
write('zadaite B postrochno');
for j:=1 to n do
    for k:=1 to r do
    read(b[j,k]);
  for i:=1 to m do  {вот цикл к-рый имхо можно убрать}
  for k:=1 to r do   {всё равно на суть проги не влияет,}
  c[i,k]:=0;           {а что ещё и можно ли не догадываюсь}
for i:=1 to m do
for k:=1 to r do
begin
     for j:=1 to n do
     c[i,k]:=c[i,k]+a[i,j]*b[j,k];
     {writeln('c[',i:2,',',k:2,']=',c[i,k]:7:3);}
     end;
for i:=1 to n do
begin
    for k:=1 to r do
    begin
    write('c[',i:2,',',k:2,']=',c[i,k]:7:3);
    end;
writeln;
end;
     readln;
     readln;
     end.
Собсно коммент в проге

Re: тяжёлая математическая задача

Добавлено: 23 окт 2007, 14:20
somewhere
&quot писал(а): for i:=1 to m do {вот цикл к-рый имхо можно убрать}
for k:=1 to r do {всё равно на суть проги не влияет,}
c[i,k]:=0; {а что ещё и можно ли не догадываюсь}
По-сути здесь обнуление матрицы, тогда можно без форов вообще:

Код: Выделить всё

FillChar(c, sizeof(c), 0);

Re: тяжёлая математическая задача

Добавлено: 25 окт 2007, 12:35
somebody_now
ещё вопрос: заполняю обычный одномерный массив обычными случайными числами.
если целыми то всё норм, если реаловыми, то выдаёт, как я понял на месте отрицательных, от 65532 до 65535 и получается у меня массив, например такой:
65532.0000
65535.0000
2.0000
65533.0000
5.0000
65532.0000
65534.0000
65535.0000
5.0000
4.0000
мало того что не заполняется дробная часть так ещё и какие-то совсем не к месту эти десятки тысяч.. что делать?!

Re: тяжёлая математическая задача

Добавлено: 25 окт 2007, 12:44
somewhere
a[x] := RangeLow + (RangeHigh - RangeLow)*Random
например
a[x] := 5 + 15*random
выберет случайные действительные числа от 5 до 20

Re: тяжёлая математическая задача

Добавлено: 25 окт 2007, 13:09
Duncon
псевдослучайные чтоб быть точным :)

Re: тяжёлая математическая задача

Добавлено: 08 ноя 2007, 09:12
Uphiander
Если быть точным - равномерно распределенные на некотором отрезке. Так как в Паскале Random выдает на интервале 0..1, то растащить их по интервалу можно по формуле постом выше.
Если нужен другой закон распределения - нужно преобразовывать по формулам этих законов.