- •Уфимский государственный нефтяной технический
- •Университет
- •Кафедра вычислительной техники и инженерной кибернетики
- •Учебно-методическое пособие
- •К выполнению заданий по информатике
- •Введение
- •1. Состав работы
- •2. Требования к оформлению отчета
- •Часть 3. Определить наибольший элемент среди нечетных по номеру элементов второй трети массива.
- •Часть 4. Упорядочить нечетные по номеру элементы второй половины массива по убыванию квадратов значений.
- •3.2. Алгоритм решения
- •3.2.1. Структура алгоритма
- •3.2.2. Алгоритм основной программы
- •3.2.3. Алгоритмы подпрограмм
- •3.2.3.1. Получение элементов вектора
- •3.2.3.2. Вычисление параметра вектора
- •Вычислить сумму положительных элементов третьей четверти массива
- •3.2.3.3. Определение параметра вектора
- •4.2.3.4. Упорядочение элементов вектора
- •4.2.3.5. Вывод информации Алгоритм процедуры writevect
- •3.3. Паскаль-программа
- •3.4. Распечатка результатов
- •Результаты расчета
- •4. Задание 2. Обработка двумерных массивов.
- •4.1. Постановка задачи.
- •4.2. Алгоритм решения.
- •4.2.1. Структура алгоритма.
- •4.2.2. Алгоритм основной программы
- •4.2.3. Алгоритмы подпрограмм.
- •4.2.3.1. Получение матрицы.
- •Вычислить матрицу а по формуле
- •4.2.3.2. Получение вектора.
- •А n, a[1..N, 1..N] лгоритм процедуры vector
- •4.2.3.3. Матричные операции.
- •4.2.3.4. Упорядочение матрицы.
- •4.2.3.5. Вычисление параметра массива.
- •Вычислить значение функции
- •4.2.3.6. Вывод информации. Алгоритм процедуры вывода матрицы writematr
- •4.3. Паскаль-программа.
- •4.4. Распечатка результатов.
- •Список рекомендуемой литературы
- •Символы к блок-схемам по гост 19.003-80
4.2.3.6. Вывод информации. Алгоритм процедуры вывода матрицы writematr
name, n, a[1..n,1..n]
‘матрица’,
Таблица переменных
Имя |
Тип |
Назначение |
Параметр |
n |
Целый |
Размерность |
Формальный
|
a[1..n,1..n] |
Вещественный |
Матрица |
|
i,j |
Целый |
Параметр цикла |
Локальный |
name |
Строчный |
Имя матрицы |
Формальный |
procedure writematr(name:string;n:integer;a:matr);
var i,j:integer;
begin
writeln(' ':15,'матрица ',name);
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:7:2,' ');
writeln;
end;
end{writematr};
Алгоритм процедуры вывода вектора writevect
name, n, x[1..n]
Таблица переменных
Имя |
Тип |
Назначение |
Параметр |
n |
целый |
размерность вектора |
формальный |
i |
параметр цикла |
локальный
|
|
x[1..n] |
вещественный |
вектор |
формальный |
name |
строчный |
имя вектора |
procedure writevect(name:string;n:integer;x:vect);
var i:integer;
begin
writeln('':15,’вектор ',name);
for i:=1 to n do write(x[i]:7:2,' ');
writeln;
end{writevect};
4.3. Паскаль-программа.
program kursrab;{Хасанов А.А. ст.гр. АГ 98-02 вар. 111}
uses printer,crt;
type vect=array[1..30] of real;
matr=array[1..30,1..30] of real;
var i,j,n: integer;
x: vect; b,a,z: matr; y: real;
simvol: char;
{-----------Часть 1--------------}
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};
procedure writematr(name:string;n:integer;a:matr);
var i,j:integer;
begin
writeln('':15,'матрица',name);
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:7:2,' ');
writeln;
end;
end{writematr};
{-----------Часть 2--------------}
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{writematr};
procedure writevect(name:string;n:integer;x:vect);
var i,j:integer;
begin
writeln('':15,'вектор ',name);
for i:=1 to n do write(x[i]:7:2,' ');
writeln;
end{writevect};
{-----------Часть 3-------------}
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;
writematr('B=At',n,b);readln;
writematr('U=B-E',n,u);readln;
writematr('V=A-E',n,v);readln;
writematr('C=U*V ',n,c);readln;
write('скаляр y=X*X ');
writeln('y=',y:1:3);
end{matoper};
{-----------Часть 4----------------}
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;
end;
if k<>i then
begin
c:=b[i,n];
b[i,n]:=b[k,n];
b[k,n]:=c;
end;
end{porjadok};
{-----------Часть 5----------------}
function znachf(n:integer;a:matr;x:vect):real;
var i,j,k: integer; s,y1,y2,c: real;
begin
y1:=exp(30);
for i:=1 to n do
if odd(i) then
begin s:=0;
for k:=1 to n do if odd(k)=false then
if abs(a[i,k])>1e-6 then
s:=s+ln(abs(a[i,k]))/ln(10);
if s<y1 then y1:=s;
end;
y2:=0;
for k:=1 to n do if odd(k)=false then
begin
c:=1;
for j:=1 to k do c:=c*j; y2:=y2+x[k]*exp(1/k*ln(c));
end;
writeln('y1=',y1:1:3,' y2=',y2:1:3);
y:=y1+y2;
znachf:=y;
end{znachf};
{----------Основная программа---------}
begin
clrscr;
write(' Введите размерность матрица n ');readln(n);
writeln(' ':25,' Исходные данные');
writeln('размерность матрицы n=',n);
writeln(' ':20,' результаты расчетов');
writeln('------------------- часть 1--------------------');
writeln('Вычислить элементы матрицы А по формуле');
matrica(n,a);
writematr('A',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);
writeln('Результат: ');
writematr('Z',n,z);
writeln('------------------- часть 4---------------------');
writeln('Упорядочить по убыванию положительные элементы ');
writeln('последнего столбца мартицы А');
porjadok(n,a,b);
writematr('B',n,b);
writeln('------------------- часть 5----------------------- ');
writeln('значение функции y=y1+y2');
y:=znachf(n,a,x);
writeln('y=',y:1:3);
writeln('----------------конец задачи----------------------');
end{kursrab}.