- •Уфимский государственный нефтяной технический университет Кафедра вычислительной техники и инженерной кибернетики учебно-методическое пособие
- •Введение
- •Состав контрольной работы
- •Требования к оформлению отчета
- •Примеры алгоритмов и программ
- •1. Программирование алгоритмов линейной структуры
- •2. Программирование алгоритмов циклической структуры
- •3. Программирование алгоритмов разветвляющейся структуры
- •4. Суммирование рядов
- •Результаты
- •Результаты
- •5. Работа с массивами
- •Список рекомендуемой литературы
- •Министерство общего и профессионального образования российской федерации
- •Символы к блок-схемам по гост 19.003-80
- •Содержание
5. Работа с массивами
Задача. Разработать программу решения 4-х взаимосвязанных задач
расчёт элементов квадратной матрицы A=a(i,j), i,j=1,2,…
по заданной формуле;
вычисление элементов вектора X=x(i) i=1,2,…
по заданному правилу;
упорядочение элементов матрицы А или вектора Х;
вычисление значения функции y по заданной формуле.
Пример.
; ;
; ;
упорядочить элементы второго столбца матрицы А по
убыванию значений;
; .
Задание выполнить для n=6.
Замечание. Предварительно провести отладку программы при n=3, для чего получить решение задачи вручную (или с помощью калькулятора) и проверить полученные данные на ЭВМ.
Блок-схема алгоритма
y=1
s=0
k=i
ai,j=(2ij+4i)/j
нет
s=s+xk
да
k=j
нет
s=0
y=y*xi*s
нет
да
c=ai2
ai2=ak2
ak2=c
s=s+a2i,j
xi=
Паскаль-программа
program prim5;
var a:array[1..10,1..10] of real;
x:array [1..10] of real;
i,j,k,n:integer;
y,s,c:real;
begin
writeln(‘Введите n’); read(n);
{---------------------------------------часть 1-----------------------------------}
for i:=1 to n do
for j:=1 to n do
a[i,j]:=(2*j*i+4*i)/j;
writeln(‘ ‘:20,’МАТРИЦА А’);
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:8:3);
writeln;
end;
{---------------------------------------часть 2-----------------------------------}
for i:=1 to n do
begin
s:=0;
for j:=1 to n do s:=s+sqr(a[i,j]);
x[i]:=sqrt(s)/n;
end;
writeln(‘ ‘:20,’ВЕКТОР Х’);
for i:=1 to n do write(x[i]:8:3);
{---------------------------------------часть 3-----------------------------------}
for i:=1 to n-1 do
begin
k:=i;
for j:=i+1 to n do
if a[j,2]>a[k,2] then k:=j;
if i<>k then
begin
c:=a[i,2]; a[i,2]:=a[k,2]; a[k,2]:=c;
end;
end;
writeln(‘ ‘:14,’УПОРЯДОЧЕННАЯ МАТРИЦА’);
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:8:3);
writeln;
end;
{---------------------------------------часть 4-----------------------------------}
y:=1;
for i:=1 to n do
begin
s:=0;
for k:=1 to n do s:=s+x[k];
if x[i]<>0 then y:=y*x[i]*s;
end;
writeln(‘ЗНАЧЕНИЕ ФУНКЦИИ У=’,y:1:3);
end.
Результаты
Введите n=6
МАТРИЦА А
6.000 4.000 3.333 3.000 2.800 2.667
12.000 8.000 6.667 6.000 5.600 5.333
18.000 12.000 10.000 9.000 8.400 8.000
24.000 16.000 13.333 12.000 11.200 10.667
30.000 20.000 16.667 15.000 14.000 13.333
36.000 24.000 20.000 18.000 16.800 16.000
ВЕКТОР X
1.555 3.110 4.665 6.220 7.776 9.331
УПОРЯДОЧЕННАЯ МАТРИЦА А
6.000 24.000 3.333 3.000 2.800 2.667
12.000 20.000 6.667 6.000 5.600 5.333
18.000 16.000 10.000 9.000 8.400 8.000
24.000 12.000 13.333 12.000 11.200 10.667
30.000 8.000 16.667 15.000 14.000 13.333
36.000 4.000 20.000 18.000 16.800 16.000
ЗНАЧЕНИЕ ФУНКЦИИ Y=123454118108000.000