Консультация № 178485
19.05.2010, 03:31
0.00 руб.
0 5 1
Уважаемые эксперты!Помогите пожалуйста реализовать 2 задачи по теме:"Модули"
1)Операции с прямоугольными матрицами:сложение,умножение,вычитание,умножение на число,транспонирование
2)Найти значение многочлена:
Pn(z)=[a][/o]*z^n+a1*z^n-1+....+[a][/n-1]*z+[a][/n],ai,z [$8712$]С

Обсуждение

давно
Профессор
401888
1232
19.05.2010, 07:19
общий
это ответ
Здравствуйте, angel.nero!
В приложении текст модуля для работы с матрицами, а также текст модуля для многочлена и пример программы по использованию этого модуля.
По матрицам у Вас примера задачи нет, выдумывать лень. Сами составите задачу и программу, не сможете, пишите в мини-форуме.

Приложение:
Матрицы.
Текст модуля.
Unit matrix;
interface
const nmax=50;
type Tmas=array[1..nmax] of integer;
Tmatr=array[1..nmax] of Tmas;
{ввод матрицы}
procedure VvMatr(var mt:Tmatr;var x,y:byte;c:string);
{вывод матрицы}
procedure VyvMtr(var mt:Tmatr;x,y:byte;c:string);
{траспонирование матрицы}
procedure Trans(mt:Tmatr; var mt1:Tmatr;x,y:byte);
{сложение матриц}
procedure Summa(mt1,mt2:Tmatr;x,y:byte; var mt3:Tmatr);
{вычитание матриц}
procedure Razn(mt1,mt2:Tmatr;x,y:byte; var mt3:Tmatr);
{умножение матрицы на число}
procedure UmnCh(mt:Tmatr;x,y:byte;var mt1:Tmatr;k:byte);
{умножение на матрицу}
procedure UmMtr(mt1,mt2:Tmatr;var mt3:Tmatr;x,y,z:byte);

implementation
procedure VvMatr;
var i,j:integer;
begin
writeln('Matrica ',c,':');
repeat
write('Vvedite kolichestvo strok: ');
readln(x);
until x in [1..nmax];
repeat
write('Vvedite kolichestvo stolbcov: ');
readln(y);
until y in [1..nmax];
writeln('Vvedite ',x*y,' elementov matricy:');
for i:=1 to x do
for j:=1 to y do
begin
write('el[',i,',',j,']=');
readln(mt[i,j]);
end;
end;
procedure VyvMtr;
var i,j:integer;
begin
writeln('Matrica ',c,':');
for i:=1 to x do
begin
for j:=1 to y do
write(mt[i,j]:4,' ');
writeln;
end;
end;

procedure Trans;
var i,j:byte;
begin
for i:=1 to x do
for j:=1 to y do
mt1[j,i]:=mt[i,j];
end;

procedure Summa;
var i,j:byte;
begin
for i:=1 to x do
for j:=1 to y do
mt3[i,j]:=mt1[i,j]+mt2[i,j];
end;

procedure Razn;
var i,j:byte;
begin
for i:=1 to x do
for j:=1 to y do
mt3[i,j]:=mt1[i,j]-mt2[i,j];
end;

procedure UmnCh;
var i,j:byte;
begin
for i:=1 to x do
for j:=1 to x do
mt1[i,j]:=mt[i,j]*k;
end;

procedure UmMtr;
var r,j,i:byte;
begin
for r:=1 to x do
for j:=1 to z do
begin
mt3[r,j]:=0;
for i:=1 to y do
mt3[r,j]:=mt3[r,j]+mt1[r,i]*mt2[i,j];
end;
end;
end.
Многочлен
1. Текст модуля.
unit unit2;
interface
const max=8;
type mas=array[0..max] of real;
{возведение в степень-pk аргумента-os}
function Pow(os:real;pk:byte):real;
{вычисление многочлена}
function Summ(x:real;m:mas;n:byte):real;
{вывод многочлена на экран}
procedure Vyvod(var v:mas;n:byte);
implementation
function Pow;
var i:byte;
res:real;
begin
res:=1;
for i:=1 to pk do
res:=res*os;
Pow:=res;
end;

function Summ;
var i:byte;
sm:real;
begin
sm:=0;
for i:=n downto 0 do
sm:=sm+Pow(x,i)*m[i];
Summ:=sm;
end;

procedure Vyvod;
var i:byte;
begin
write(v[0]:0:2,'x^',n);
for i:=1 to n-1 do
if v[i]<0 then write(v[i]:0:2,'x^',n-i)
else write('+',v[i]:0:2,'x^',n-i);
if v[n]<0 then write(v[n]:0:2,'x^0=')
else write('+',v[n]:0:2,'x^0=');
writeln;
writeln;
end;
end.
Текст примера программы.
uses crt,unit2;
var a:mas;
x,p:real;
n,i:integer;
begin
clrscr;
repeat
write('Порядок многочлена до ',max,' n=');
readln(n);
until n in [1..max];
writeln('Введите ',n+1,' коэффициентов полинома:');
for i:=0 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
clrscr;
writeln('Вид полинома:');
Vyvod(a,n);
writeln('Введите значение аргумента:');
readln(x);
p:=Summ(x,a,n);
writeln('При x=',x:0:2,' сумма=',p:0:2);
readln
end.
Неизвестный
24.05.2010, 18:34
общий
Пупорев Юрий Борисович:
добрый вечер!Помогите пожалуйста составить самый простой пример программы по матрицам,который будет использовать данные процедуры
Неизвестный
24.05.2010, 21:44
общий
angel.nero:
angel.nero - Обидно видеть Вашу невнимательность! Вы, видимо, невнимательно прочитали код, приведенный в ответе.
После слов
Текст примера программы.
uses crt,unit2;
идет текст программы, использующей модуль
Неизвестный
24.05.2010, 23:48
общий
Boriss:
Так это для многочлена,вроде как!
Неизвестный
25.05.2010, 00:56
общий
Ну а что мешает вызвать процедуры?
Форма ответа