ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Определение параметра вектора
Алгоритм функции max n, f[1..n]
нет
да нет
да
ma max Таблица переменных
function max(n:integer; f:vect):integer; var i,mx:integer; begin mx:=-1000; for i:=round(n/3)+1 to round(2*n/3) do if odd(i) then if f[i] > mx then mx:=f[i]; max:=mx; end{max}; 4.2.3.4. Упорядочение элементов вектора
Алгоритм процедуры porjadok n,f[1..n]
нет f[1..n]
да
Нет нет
да да
Таблица переменных
procedure porjadok(n:integer;var f:vect); var i,k,j,c:integer; begin for i:=round(n/2)+1 to n-1 do if odd(i) then begin k:=i; for j:=i+2 to n do if odd(j) then if sqr(f[j]) > sqr(f[k]) then k:=j; if i <> k then begin c:=f[i]; f[i]:=f[k]; f[k]:=c; end; end; end {porjadok};
4.2.3.5. Вывод информации
Алгоритм процедуры writevect n,k,f [1..n]
нет
да
Таблица результатов
procedure writevect(n,k:integer; f:vect); var i:integer; begin for i:=1 to n do begin write(f[i]:5);if i mod round(n/k)=0 then writeln; end; writeln; end {writevect};
Паскаль-программа
program kurslab1;{Хасанов А. А. ст.гр. АГ 98-02 вар. 111} uses crt; type vect=array[1..99] of integer; var f: vect; n,a,b,s,mx:integer;
{-----------Часть 1--------------} procedure vector(n,a,b:integer;var f:vect); var i:integer; begin for i:=1 to n do f[i]:=round((b-a)*random(100)/100+a); end;
{-----------Часть 2--------------} function sum(n:integer;f:vect):integer; var i,s:integer; begin s:=0; for i:=round(n/2)+1 to round(3*n/4) do if f[i] > 0 then s:=s+f[i]; sum:=s; end;
{-----------Часть 3-------------} function max(n:integer; f:vect):integer; var i,mx:integer;
begin mx:=-1000; for i:=round(n/3)+1 to round(2*n/3) do if odd(i) then if f[i] > mx then mx:=f[i]; max:=mx; end;
{-----------Часть 4----------------} procedure porjadok(n:integer;var f:vect); var k,j,c:integer; begin for i:=round(n/2)+1 to n-1 do if odd(i) then begin k:=i; for j:=i+2 to n do if odd(j) then if sqr(f[j]) > sqr(f[k]) then k:=j; if i <> k then begin c:=f[i]; f[i]:=f[k]; f[k]:=c; end; end; end;
{--------Вывод вектора--------------} procedure writevect(n,k:integer; f:vect); var i:integer; begin for i:=1 to n do begin write(f[i]:5);if i mod round(n/k)=0 then writeln; end; if n mod k <> 0 then writeln; end;
{----------Основная программа-----} begin clrscr; write('Введите размерность вектора ');readln(n); write('Интервал значений от ');read(a); write('до ');readln(b); writeln;writeln(' ':25,’Исходные данные’); writeln('Размерность вектора n = ',n); writeln('Интервал [',a,',',b,']');writeln; writeln(' ':26,'Результаты расчета'); randomize; vector(n,a,b,f); writeln('--------------------Часть 1---------------------------'); writeln(‘Вектор F из ‘,n,’ элементов в интервале [‘,a,’,’,b,’], полученных’); writeln(‘при помощи генератора случайных чисел’); writevect(n,4,f); writeln('--------------------Часть 2---------------------------'); writeln('Сумма положительных элементов третьей четверти вектора'); s:=sum(n,f); writeln(‘ s=’,s); writeln('--------------------Часть 3---------------------------'); writeln('Наибольший элемент второй трети среди нечетных по номеру'); writevect(n,3,f); mx:=max(n,f);writeln(‘ mx=’,mx); writeln('--------------------Часть 4---------------------------'); writeln(‘Вектор F с упорядоченными по убыванию квадратов значений’); writeln(‘нечетными по номеру элементами второй половины’); porjadok(n,f); writeln('Упорядоченный вектор F’); writevect(n,2,f); writeln('----------------Конец задачи-----------------------'); end.
3.4. Распечатка результатов
Исходные данные
Размерность вектора n = 30 Интервал [-7,8] Результаты расчета
--------------------------------Часть 1-------------------------------
Вектор F из 30 элементов в интервале [-7,8], полученных при помощи генератора случайных чисел
---------------------------------Часть 2------------------------------
Сумма положительных элементов третьей четверти вектора
s=40
---------------------------------Часть 3------------------------------
Наибольший элемент второй трети среди нечетных по номеру
mх=7
---------------------------------Часть 4------------------------------
Вектор F с упорядоченными по убыванию квадратов значений нечетными по номеру элементами второй половины
-----------------------------Конец задачи---------------------------
4. Задание 2. Обработка двумерных массивов. 4.1. Постановка задачи. Часть 1. Вычислить элементы матрицы А по формуле
, i, , где ; ; . Часть 2. Используя известную матрицу А, вычислить вектор () как наибольший среди принадлежащих отрезку [-10,10] элементов i -го столбца. Часть 3. Вычислить Z= , где , - вектор; , , - квадратная матрица; , - единичная матрица; – транспонированная матрица , , ; – инвенторованный вектор , .
Часть 4. Упорядочить по убыванию положительные элементы последнего столбца матрицы А.
Часть 5. Вычислить значение функции 4.2. Алгоритм решения. 4.2.1. Структура алгоритма. Алгоритм состоит из основного алгоритма (для основной программы) и вспомогательных алгоритмов (для подпрограмм): - вычисление матрицы – процедура matrica (n, a); - вычисление вектора – процедура vector (n, a, x); - матричные операции – процедура matoper (n, x, a, z); - сортировка массива – процедура porjadok (n, a, b); - вычисление значение функции - функция – znachf (n,a,x), где n – размерность матрицы, вектора (вводится в начале); A,B,Z– квадратные матрицы размерности n; X – вектор из n элементов.
Кроме того используются процедуры вывода: - матрицы - writmatr (’A’, n, a); - вектора - writvect (’X’, n, x); ‘A’, ‘X’ – имена соответственно матрицы A, вектора X.
4.2.2. Алгоритм основной программы
Таблица переменных
begin{Основная программа} clrscr; write(' Введите размерность матрица n ');readln(n); writeln(' ':25,'Исходные данные'); writeln('размерность матрицы n=',n); writeln(' ':20,'результаты расчетов'); writeln('------------------ часть 1--------------------------'); writeln('Вычислить элементы матрицы А по формуле'); matrica(n,a);writmatr('А',n,a); writeln('------------------- часть 2--------------------------'); writeln('Из матрицы А получить вектор Х, '); writeln('элемент которого х[i] определяется как наибольший '); writeln('среди принадлежащих отрезку [-10,10] '); writeln('элементов i-го столбца. '); vector(n,a,x);writevect('X',n,x); writeln('------------------- часть 3--------------------------'); writeln(' ':7, 'Вычислить Z=(At-E)(A-E)(X-Xи)'); matoper(n,a,x,z); write('Результат: '); writmatr('Z',n,z); writeln('------------------- часть 4--------------------------'); writeln('Упорядочить по убыванию положительные элементы'); writeln('последнего столбца мартицы А'); porjadok(n,a,b); writmatr('B',n,b); writeln('-------------------- часть 5------------------------ '); writeln('Вычислить значение функции y=y1+y2'); y:=znachf(n,a,x);writeln('y=',y:6:3); writeln('------------------конец задачи---------------------'); end.
4.2.3. Алгоритмы подпрограмм.
4.2.3.1. Получение матрицы.
Алгоритм процедуры matrica
Таблица переменных.
procedure matrica(n:integer;var a:matr); var i,j:integer; f1,f2,f3:real; begin for i:=1 to n do for j:=1 to n do begin f1:=cos(pi*(8.25+(i+j)/2))/sin(pi*(8.25+(i+j)/2)); f2:=pi*i*(1+i/j); f3:=ln(sqr(n)-i/j+1)/ln(2); a[i,j]:=f1/f2*f3; end; end{matrica}; 4.2.3.2. Получение вектора. Используя известную матрицу А, вычислить вектор X, если xi(i =1,2..n) вычисляется как наибольший среди принадлежащих отрезку [-10,10] элементов i -го столбца матрицы. Математическая формулировка задачи , , i = Таблица переменных
procedure vector(n:integer; a:matr; var x:vect); var i,j:integer; m:real; begin for i:=1 to n do begin m:=-exp(30); for j:=1 to n do if abs(a[j, i])<=10 then if a[j, i]>m then m:=a[j, i]; x[i]:=m; end; end{vector};
4.2.3.3. Матричные операции.
Выполнить матричную операцию Z=
1) ;
2) U=A - E ;
3) V=A-E ;
4) C=U.V ;
5) ; 6) . Таблица переменных
Алгоритм процедуры matoper n, a[1..n,1..n], x[1..n]
нет
да
procedure matoper(n:integer;a:matr;x:vect;var z:matr); var i,k,j:integer; s,y: real; b,u,v,c:matr; begin for i:=1 to n do for j:=1 to n do begin b[i,j]:=a [j, i]; u[i,j]:=b[i, j]; v[i, j]:=a[i, j]; if i=j then begin u[i,j]:=b[i,j]-1; v[i,j]:=a[i,j]-1; end; end; for i:=1 to n do for j:=1 to n do begin s:=0; for k:=1 to n do s:=s+u[i,k]*v[k,j]; c[i,j]:=s; end; y:=0; for i:=1 to n do y:=y+x[i]*(-x[i]); for i:=1 to n do for j:=1 to n do z[i,j]:=c[i,j]*y; writeln('B=At':20); writmatr('b',n,b);readln; writeln('U=B-E':21); writmatr('u',n,u);readln; writeln('V=A-E':21); writmatr('v',n,v);readln; writeln('C=U*V':21); writmatr('c',n,c);readln; writeln('скаляр y=X*Xи':26); writeln('y=',y:6:3); end{matoper};
4.2.3.4. Упорядочение матрицы. Упорядочить по убыванию положительные элементы последнего столбца матрицы А.
Алгоритм процедуры porjadok
n, a[1..n,1..n]
b[1..n,1..n]
Таблица переменных
procedure porjadok(n:integer; a:matr; var b:matr); var j,i,k:integer; c:real; begin for i:=1 to n do for j:=1 to n do b[i,j]:=a[i,j]; for i:=1 to n-1 do if b[i,n] > 0 then begin k:=i; for j:=i+1 to n do if b[j,n]>0 then if b[j,n]>b[k,n] then k:=j; if k<>i then begin c:=b[i,n]; b[i,n]:=b[k,n]; b[k,n]:=c; end; end; end{porjadok};
4.2.3.5. Вычисление параметра массива. Не нашли, что искали? Воспользуйтесь поиском:
|