Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ вычисление произведения

Автор: marwell 5.05.2010 21:55

Напишите подпрограмму вычисления произведения вида (прикрепил) где u – заданный вектор, N – верхний предел интегрирования.
т.е. U и N просто числа?
Прикрепленное изображение

Автор: volvo 5.05.2010 22:05

Поскольку Ui - то U - это массив, а N - его размер ...

Автор: Romtek 6.05.2010 1:41

Иными словами, вектор - это одномерный массив. И в задании подразумевается, что он задан изначально (или вводится пользователем).

Автор: marwell 6.05.2010 15:37

понял, спасибо

Автор: marwell 8.05.2010 18:03

не пойму, что я не так делаю...

var N,i,x:integer;
U:array [1..100] of integer;
function mas(U:array of integer):integer;
begin
for i:=1 to N do
x:=x*(1-sqr(U[i]));
end;
begin
x:=1;
write('введите N = ');
readln(N);
randomize;
for i:=1 to N do
U[i]:=2+random(4);
for i:=1 to N do
write(U[i],' ');
mas(U);
writeln ('произведение равно = ',x);
readln;
end.

результат неверный...

Автор: Ozzя 8.05.2010 21:28

function mas(U:array of integer):integer;
Это у тебя открытый массив, нумерация которого начинается с нуля. А в функции ты работаешь с обычным. У него с 1-цы.
Как-то так:


type
massiv=array [1..100] of integer;
var
n,q,i:integer;
U:massiv;
function mas(n1:integer; U:massiv):integer;
var
j,t,x:integer;
begin
x:=1;
for j:=1 to N1 do
begin
t:=1-sqr(U[j]);
x:=x*t;
end;
mas:=x;
end;

begin
write('??????? N = ');
readln(N);
randomize;
for i:=1 to N do
U[i]:=2+random(4);
for i:=1 to N do
write(U[i],' ');
q:=mas(n,U);
writeln ('???????????? ????? = ',q);
readln;
end.

Автор: marwell 8.05.2010 22:04

аа, вот оно что! спасибо good.gif

Автор: TarasBer 11.05.2010 14:14

> function mas(n1:integer; U:massiv):integer;

Тогда уж const U: massiv
Зачем лишний раз массив в стек копировать?