КАТЕГОРИИ: Архитектура-(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; Просмотров: 301; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |