![]() ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Определение параметра вектора
Алгоритм функции 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
нет 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
нет
Таблица результатов
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. Вычислить элементы матрицы А по формуле
Часть 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 -го столбца матрицы. Математическая формулировка задачи
Таблица переменных
![]()
![]()
![]()
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. Матричные операции.
1)
2) U=A - E
3) V=A-E
4) C=U.V
5) 6) Таблица переменных
Алгоритм процедуры matoper
![]()
![]() ![]()
![]() ![]() нет
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
![]()
![]()
Таблица переменных
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. Вычисление параметра массива. Не нашли, что искали? Воспользуйтесь поиском:
|