Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Программа




Укрупненная блок схема

Постановка задачи 3

Программа

Постановка задачи 2

При известных значениях a, b, t, r вычислить значение функции:

program prog3;

var a, b, t, r, y:real;

n, m: byte;

function kv (c, d:real):real;

begin

kv:=sqr(c)+sqr(d); {kv:=c*c+d*d:}

end;

begin {начало глобального блока}

writeln (‘введите исходные данные a, b, t, r’);

readln (a, b, t, r);

y:=sqr(kv(a, b))*kv(2, r/5)/kv(1, 1-t);

writeln (‘y=’, y:12:5);

end.

Сформировать и вывести на экран две матрицы путем ввода элементов с клавиатуры и по заданному правилу, используя процедуры пользователя. Фактическое число строк и столбцов вводить с клавиатуры и передавать в процедуры фактическими параметрами. Предусмотреть процедуру вывода результирующей матрицы на экран. Произвести вычисления в функции процедуре над матрицами согласно заданному требованию. Например, найти среднее арифметическое двух исходных матриц, а также сформировать две результирующие матрицы путем деления элементов исходных матриц на их максимальный элемент. Вывести результирующие матрицы на экран.


 

Рис. 1


 

Program prog4;

Uses Crt;

Type TArray=Array[1..10,1..10] of Real;

Var A, B, C, D: TArray; n,m,k,l: Byte; h: Char; Ar: Real;

{описание глобальных переменных; А, В – сформированные исходные матрицы; C,D – результирующие матрицы; n, m – число строк, столбов матрицы А; k, e – числов строк, столбцов матрицы В; h – признак задания исходных матриц; Ar - среднее арифметческое}

Procedure InMatr1(Var x:TArray; row,col:Byte);

{процедура формирования матрицы вводом ее элементов с клавиатуры, х, row, col - формальные параметры; x- параметр-переменная; row, col - параметры-значение}

Var d,i,j:Byte; S,y: String; {Описание локальных переменных }

Begin {Формирование матрицы вводом ее элементов с клавиатуры}

For i:=1 To row Do Begin

y:=' '; d:=WhereY;

GotoXY(1,d);

For j:=1 To col Do Begin

Readln(x[i,j]); {Считываем элемент с клавиатуры }

Str(x[i,j]:6:1,S); {Переводим его в строку S}

y:=y+S; {Сцепляем строку y со строкой S}

GotoXY(Length(y),d); {Перемещаем курсор в позицию ввода очередного элемента }

End;

Writeln;

End;

End; {--------------------------------------------}

Procedure InMatr2(Var x:TArray; row,col:Byte); {процедура формирования

случайной матрицы и вывод ее элементов на экран}

Var i,j:Byte; {Описание локальных переменных}

Begin {Формирование случайной матрицы и ее вывод на экран}

Randomize;

For i:=1 to row do Begin

For j:=1 to col do Begin

X[i,j]:=Random*50-25; {x[i,j] формируется случайно}

{При формировании матрицы по правилу sin(i+j/2) необходимо записать оператор присваивания x[i,j]:=sin(i+j/2)}

Write(x[i,j]:7:2,' '); {X[i,j] выводится на экран}

End;

Writeln;

End;

End; {--------------------------------------------}

Function Sum(x:TArray; row,col:Byte):Real; {функция нахождения суммы

положительных элементов матрицы}

Var S:Real; i,j:Byte; {Описание локальных переменных}

Begin {Нахождение суммы положительных элементов матрицы}

S:=0;

For i:=1 to row do

For j:=1 to col do

If x[i,j]>0 Then S:=S+X[i,j];

Sum:=S;

End; {--------------------------------------------}

Procedure NewMatr(x:TArray; row,col:Byte; Var y:TArray);

{процедура формирования результирующей матрицы по заданному алгоритму}

Var i,j:Byte; MMax:real; {Описание локальных переменных }

Function Max(x:TArray; row,col:Byte):Real; {функция нахождения

максимального элемента матрицы}

Var M:Real; i,j:Byte; {Описание локальных переменных}

Begin {Нахождение максимального элемента матрицы }

M:=x[1,1];

For i:=1 to row do

For j:=1 to col do IF x[i,j] > M Then M:=X[i,j];

Max:=M;

End;

Begin {Формирование новой матрицы по заданному алгоритму}

MMax:=Max(x,row,col);

For i:=1 to row do For j:=1 to col do y[i,j]:=x[i,j]/MMax;

End; {--------------------------------------------}

Procedure Print(x:TArray; row,col:Byte); {процедура вывода элементов

результирующей матрицы на экран}

Var i,j:Byte; {Описание локальных переменных}

Begin {Вывод матрицы на экран}

For i:=1 to row do Begin

For j:=1 to col do Begin

Write(x[i,j]:7:2,' ');

End;

Writeln;

End;

End;

BEGIN {глобальный блок – основная программа}

Write('Введите число строк и столбцов матрицы А (не более 10) ');

Readln(n,m);

Writeln('Выберите способ формирования элементов матрицы A');

Write('1 -> ввод с клавиатуры; 2 или любое другое число -> случайный процесс: ');

Readln(h); {вызов процедуры InMatr1 (A, n, m)}

IF h='1' Then InMatr1(A,n,m) Else InMatr2(A,n,m); {вызов процедуры

InMatr2 (A, n, m)}

Write('Введите число строк и столбцов матрицы B (не более 10) '); Readln(k,l);

Writeln('Выберите способ формирования элементов матрицы B');

Write('1 -> ввод с клавиатуры; 2 или любое другое число -> случайный процесс: ');

Readln(h); {вызов процедуры InMatr1 (B, k, l)}

IF h='1' Then InMatr1(B,k,l) Else InMatr2(B,k,l); {вызов процедуры InMatr2

(B, k, l)}

Ar:=(Sum(A,n,m)+Sum(B,k,l))/2; {вызов функции Sum (A, n, m), Sum (B, k, l) }

Writeln('Среднее арифметическое = ',Ar:8:3);

{можно вместо предыдущих операторов записать один оператор Writeln ('Среднее арифметическое = ', Sum (A, n, m)+ Sum (B, k, l))/2;}

NewMatr(A,n,m,C); {вызов процедуры InMatr1 (A, n, m)}

Writeln('******* Вывод матрицы С ******');

Print(C,n,m); {вызов процедуры Print (C, n, m)}

NewMatr(B,k,l,D); {вызов процедуры InMatr1 (B, k, l, D)}

Writeln('******* Вывод матрицы D ******');

Print(D,k,l); {вызов процедуры Print (D, k, l)}

Readkey; DoneWinCrt;

End.

 

 




Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 300; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.