02.05.2014, 20:22 | #1 (permalink) |
Member
Регистрация: 29.11.2013
Сообщений: 50
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Формирование матрицы с помощью функции как параметра процедуры, Паскаль
Помогите пожалуйста с программой: Условие задания – головного модуля — предполагает обязательное использование разработанной процедуры П1 с функцией (f или f1, f2) в качестве параметра. В качестве исходного данного в большинстве заданий используется квадратная матрица А. Используя в качестве f1 синус, а в качестве f2 косинус, сформировать матрицу Е из А по правилу: первая строка матрицы Е формируется с помощью процедуры из двух первых столбцов матрицы А, вторая строка - из следующей пары столбцов и т.д. Как я понял, из матрицы А: 1 2 3 4 5 6 4 7 1 8 9 5 2 8 4 1 3 7 должна получиться матрица Е: 1 4 2 2 7 8 3 1 4 4 8 1 5 9 3 6 5 7 Вот я написал программу, но без процедур и функций: PHP код:
Заранее спасибо! |
02.05.2014, 20:22 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На нашем форуме так же есть аналогичные топики, которые создавались ранее Turbo Pascal. Процедуры и функции Написание программы через процедуры и функции. Паскаль |
02.05.2014, 23:27 | #2 (permalink) |
Member
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
|
Не моё. Случайно наткнулся.
uses crt; const max=10; type mas=array[1..max] of real;{массив} mtr=array[1..max] of mas;{матрица} proc=procedure(n:byte;b,c:mas;var t:mas);{процедурный тип} {опишем две функции} function f1(x:real):real; begin f1:=sin(x) end; function f2(x:real):real; begin f2:=cos(x) end; {$F+} {опишем процедуру для использования параметром в другой процедуре} procedure newmas(n:byte;b,c:mas;var t:mas); var m,i:byte; begin m:=0; for i:=1 to n do if (f1(b[i])>0)and(f2(c[i])>f1(b[i])) then begin m:=m+1; t[m]:=b[i]+c[i] end; if m<n then for i:=m+1 to n do t[i]:=0; end; {$F-} {основная процедура} procedure newmtr(a:mtr;n:byte;newmasroc;var e:mtr); var i:byte; begin for i:=1 to n div 2 do newmas(n,a[2*i-1],a[2*i],e[i]) end; var a,e:mtr; n,i,j:byte; begin clrscr; randomize; repeat write('Размер матрицы А четное число до ',max,' n='); readln(n); until (n in [2..max])and(n mod 2=0); {создадим матрицу А по столбцам} for j:=1 to n do for i:=1 to n do a[j,i]:=random; {выведем ее построчно} writeln('Матрица А:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:6:2); writeln end; {получим новую матрицу} newmtr(a,n,newmas,e); {выведемее построчно} writeln('Матрица E:'); for i:=1 to n div 2 do begin for j:=1 to n do write(e[i,j]:5:2); writeln end; readln end. |
05.05.2014, 00:30 | #3 (permalink) |
Member
Регистрация: 29.11.2013
Сообщений: 50
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо огромное!
Переписал под паскаль себе: без uses crt и randomize, а так же без усложнений с размером матрицы; может кому пригодится
PHP код:
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|