Serge_Bliznykov, somewhere, попробовал, не помогло(
впрочем это уже не так важно, ибо работа отправлена, а делать её надо было через рекуррентную ф-лу с чем я не знаком вобщемто, точнее не могу её составить для этого конкретного ряда..есть конечно время ещё переделать но шансов мало на то что смогу её составить(
тяжёлая математическая задача
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 35
- Зарегистрирован: 02 окт 2007, 14:43
Нужно изменить структуру алгоритма так, чтобы количество используемых операторов цикла в программе было минимальным. Можно ли добиться уменьшения количества форов по сравнению с исходным вариантом?
Собсно коммент в проге
Код: Выделить всё
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.
По-сути здесь обнуление матрицы, тогда можно без форов вообще:" писал(а): for i:=1 to m do {вот цикл к-рый имхо можно убрать}
for k:=1 to r do {всё равно на суть проги не влияет,}
c[i,k]:=0; {а что ещё и можно ли не догадываюсь}
Код: Выделить всё
FillChar(c, sizeof(c), 0);
It's a long way to the top if you wanna rock'n'roll
-
- Сообщения: 35
- Зарегистрирован: 02 окт 2007, 14:43
ещё вопрос: заполняю обычный одномерный массив обычными случайными числами.
если целыми то всё норм, если реаловыми, то выдаёт, как я понял на месте отрицательных, от 65532 до 65535 и получается у меня массив, например такой:
65532.0000
65535.0000
2.0000
65533.0000
5.0000
65532.0000
65534.0000
65535.0000
5.0000
4.0000
мало того что не заполняется дробная часть так ещё и какие-то совсем не к месту эти десятки тысяч.. что делать?!
если целыми то всё норм, если реаловыми, то выдаёт, как я понял на месте отрицательных, от 65532 до 65535 и получается у меня массив, например такой:
65532.0000
65535.0000
2.0000
65533.0000
5.0000
65532.0000
65534.0000
65535.0000
5.0000
4.0000
мало того что не заполняется дробная часть так ещё и какие-то совсем не к месту эти десятки тысяч.. что делать?!
a[x] := RangeLow + (RangeHigh - RangeLow)*Random
например
a[x] := 5 + 15*random
выберет случайные действительные числа от 5 до 20
например
a[x] := 5 + 15*random
выберет случайные действительные числа от 5 до 20
It's a long way to the top if you wanna rock'n'roll
псевдослучайные чтоб быть точным 

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