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

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

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

Автор: Gera 18.02.2007 17:14

Текст задачи: заданы матрица А, имеющая n строк и m столбцов, вектор X={X1, X2,…, Xn} и r векторов Y, каждый из которых имеет m элементов. Составить программу для вычисления вектора Z={Z1, Z2,..., Zr}, каждый элемент которого вычисляется по формуле: Zi=(A*Yi)*X. Расположить элементы вектора Z в порядке возрастания.
Исходные данные: n=3, m=4, r=3.
X={1;2;3} Y1={1;0;-1;3}
Y2={2;1;0;-1}
Y3={3;-2;1;0}
2 3 4 1
A=( -1 1 2 -4 )
4 -3 -2 0
Проблема даже не в том, чтобы написать всю программу целиком, я приблизительно представляю, как она выглядит. Проблема в другом: задачу надо оформлять в общем виде, а исходные данные для проверки. Я не могу понять, как в общем виде написать алгоритм заполнения векторов Y, ведь у них будет у каждого свое имя (Y1,Y2,...).


for k:=1 to r do
for i:=1 to m do
begin
writeln('Vvedite ',i,' element vektora Y');
readln(y[i])
end;


Так я могу занести элементы только одного вектора, а их r штук. Помогите, пожалуйста!

Автор: volvo 18.02.2007 17:23

Во-первых, создаешь массив векторов Y, потому, как их у тебя несколько, и пользуешься процедурами:

Procedure FillVector(Var X: Vector);
var i: integer;
begin
for i:=1 to m do begin
writeln('Vvedite ',i,' element vektora: ');
readln(X[i]);
end;
end;

{ Основная программа: }
...
for k := 1 to r do begin
writeln('Ввод вектора Y', k);
FillVector(Y[k]);
end;
...

Автор: Gera 18.02.2007 18:28

Спасибо, я поняла, просто, когда нужн о использовать процедуры, до меня всегда туго доходит. smile.gif