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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2009, 11:01   #1
alex1313
Пользователь
 
Регистрация: 01.04.2009
Сообщений: 12
По умолчанию подпрограмма

Помогите пожалуйста

Для заданных четырёх матриц X1(N1*N1), X2(N2*N2), X3(N3*N3), X4(N4*N4) и найти и напечатать длины векторов Ya3=s1,s2,s3 и Yb3=s2,s3,s4, где s1,s2,s3,s4 – суммы положительных элементов соответствующих матриц. Следует напомнить, что длина вектора вычисляется как квадратный корень из суммы квадратов координат. (При решении реализовать процедуры ввода и вывода массивов: Vvod2m(A,N,Name), Vivod2m(A,N,Name); а также функции SummPol(A,N):<тип массива> – сумма положительных элементов; и Dlina(p,q,r):real – длина вектора с координатами p,q,r)

вот что я смог решить:

program ABC;
type T1m=array[1..100] of integer;
T2m=array[1..10,1..10] of integer;
var X1,X2,X3,X4:T2m;
Ya3,Yb3:T1m;
s1,s2,s3,s4:byte;
procedure Vvod2m(var A:T2m; var N:byte; const Name:TName);
var i,j:byte;
begin
writeLn('введите массив ', Name,':');
write('размерность массива N=');
readLn(N);
for i:=1 to N do
for j:=1 to N do
begin
write(Name,'[',i,',',j,']=');
readLn(A[i,j]);
end;
end;
procedure Vivod2m(const A:T2m; const N:byte; const Name:TName);
var i,j:byte;
begin
writeLn('введите массив ', Name,':');
for i:=1 to N do
begin
for j:=1 to N do
write(A[i,j]:5);
writeLn;
end;
end;
function SummPol(const A:T2m; N,M:byte):integer;
var S:integer;
i,j:byte;
begin
S:=0;
for i:=1 to N do
for j:=1 to M do
if A[i,j]>0 then
S:=S+A[i,j];
writeln('S=',S);
end;
function Dlina(p,q,r:real;B:T1m)
begin
B:=SQRT(SQR(p)+SQR(q)+SQR(r))
end;

Последний раз редактировалось alex1313; 01.04.2009 в 12:00.
alex1313 вне форума Ответить с цитированием
Старый 02.04.2009, 04:21   #2
Костя КС
Пользователь
 
Аватар для Костя КС
 
Регистрация: 22.01.2008
Сообщений: 78
По умолчанию

точно не правильно function Dlina - не задан ее тип и массив приравнивается переменной. И переменную N все равно как то придется вводить в основной программе.

А так несколько вопросов..
Ya3,Yb3 - массивы всего из 3 чисел, зачем им целых сто!
В function Dlina будут вводиться элементы массивов Ya3,Yb3 типа integer, значит по идее p,q,r должны быть integer. Хотя из-за этого тоже не будет ошибки
Костя КС вне форума Ответить с цитированием
Старый 02.04.2009, 21:13   #3
alex1313
Пользователь
 
Регистрация: 01.04.2009
Сообщений: 12
По умолчанию

type
Tmtx=array[1..10,1..10] of real;
var
X1,X2,X3,X4:Tmtx;
s1,s4,s2,s3:Real;
N1,N2,N3,N4:byte;
procedure Vvod2m(var A:Tmtx;var N:byte;const Name:string);
var i,j:integer;
begin
writeLn('введите массив ', Name,':');
write('размерность массива N=');
readLn(N);
for i:=1 to N do
for j:=1 to N do
begin
write(Name,'[',i,',',j,']=');
readLn(A[i,j]);
end;

end;

procedure Vivod2m(const A:Tmtx;const N:byte; const Name:string);
var i,j:integer;
begin
writeLn('введите массив ', Name,':');
for i:=1 to N do
begin
for j:=1 to N do
write(A[i,j]:5);
writeLn;
end;
end;


function SummPol(const A:Tmtx; N,M:byte):real;
var i,j:integer; s:real;
begin
s:=0;
for i:=1 to N do
for j:=1 to M do

if A[i,j]>0 then s:=s+A[i,j];
SummPol:=s;
end;

function Dlina(p,q,r:real):real;
begin
Dlina:=SQRT(SQR(p)+SQR(q)+SQR(r));
end;

begin
Vvod2m(X1,N1,'X1');
Vivod2m (X1,N1,'X1');
s1:=summpol(X1,N1,N1);
Vvod2m(X2,N2,'X2');
Vivod2m(X2,N2,'X2');
s2:=summpol(X2,N2,N2);
Vvod2m(X3,N3,'X3');
Vivod2m(X3,N3,'X3');
s3:=summpol(X3,N3,N3);
Vvod2m(X4,N4,'X4');
Vivod2m(X4,N4,'X4');
s4:=summpol(X4,N4,N4);
writeln('Длина Ya3=',Dlina(summpol(X1,N1,N1),s2,s3 ));
writeln('Длина Yb3=',Dlina(s2,s3,summpol(X4,N4,N4) ));
end.
alex1313 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подпрограмма и массивы.. phantom4eg Помощь студентам 2 04.03.2009 10:55
подпрограмма-процедура в Pascal Танюсик Помощь студентам 6 21.04.2008 07:28
С++.Массив и подпрограмма функции SkyDreamer Помощь студентам 0 23.11.2007 20:45
подпрограмма в Борланд Паскаль Jasper Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2006 20:40