|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.04.2009, 11:01 | #1 |
Пользователь
Регистрация: 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. |
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 |
Пользователь
Регистрация: 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. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подпрограмма и массивы.. | 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 |