Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМП к выполнению заданий 1-5 по информатике.doc
Скачиваний:
18
Добавлен:
17.03.2015
Размер:
429.06 Кб
Скачать

5. Работа с массивами

Задача. Разработать программу решения 4-х взаимосвязанных задач

  1. расчёт элементов квадратной матрицы A=a(i,j), i,j=1,2,…

по заданной формуле;

  1. вычисление элементов вектора X=x(i) i=1,2,…

по заданному правилу;

  1. упорядочение элементов матрицы А или вектора Х;

  1. вычисление значения функции y по заданной формуле.

Пример.

  1. ; ;

  1. ; ;

  1. упорядочить элементы второго столбца матрицы А по

убыванию значений;

  1. ; .

Задание выполнить для 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