Поиск элементов массива по заданному критерию

Пример 10. Переписать положительные элементы массива А, состоящего из n элементов, в массив В (n£20).

Программа Схема алгоритма

Поиск элементов массива по заданному критерию - student2.ru Program Prim10;

var

a,b : array[1..20] of real;

i,n,k : integer;

begin

writeln('Введите n');

readln(n);

writeln('Введите массив');

for i:=1 to n do

read(a[i]);

k:=0;

for i:=1 to n do

if a[i]>0 then begin

k:=k+1;

b[k]:=a[i];

end;

for i:=1 to k do

writeln('b[', i, ']=', b[i]:5:2);

end.

Исходные данные: Результат:

n = 10 b[1]= 4.00

Массив A b[2]= 5.00

4 5 -3 1 7 -2 12 -8 -14 26 b[3]= 1.00

b[4]= 7.00

b[5]=12.00

b[6]=26.00

Пример 11. Найти первый отрицательный элемент массива B, содержащего n элементов (n£20).

Программа Схема алгоритма

 
  Поиск элементов массива по заданному критерию - student2.ru

Program Prim11;

label 1;

var

b:array[1..20] of real;

i,n:integer;

begin

writeln('Введите n');

readln(n);

writeln('Введите массив');

for i:=1 to n do read(b[i]);

for i:=1 to n do

if b[i]<0 then begin

writeln('b[',i,']=',b[i]:6:2);

goto 1;

end;

writeln('Отрицательных элементов нет');

1: end.

Исходные данные: Результат:

I вариант n = 7 I вариант b[3]= -5.00

Массив B

3 8 -5 -2 6 -9 12

II вариант n = 6 II вариант

Массив B Отрицательных элементов нет

4 7 2 9 4 1

Циклы с неизвестным числом повторений

В циклах с неизвестным числом повторений используются, как правило, операторы repeat-untilи while-do.

Табулирование функции

Пример 12. Табулировать функцию y=2x-sin(x) на отрезке [xmin,xmax] с шагом Dx, т.е. вычислить таблицу значений функции y(x), если x задан на отрезке [xmin,xmax].

В данном примере для организации циклического процесса будем использовать оператор repeat-until.

Общий вид оператора repeat-until:

Repeat

оператор1;

оператор2;

операторn;

until логическое_выражение;

Выполнение оператора repeat-until:

1) выполняются операторы цикла;

2) если значение логического_выражения равно true(истина), происходит выход из цикла, в противном случае процесс повторяется, начиная с пункта 1).

Программа Схема алгоритма

Поиск элементов массива по заданному критерию - student2.ru Program Prim12;

var

x, y, xmin, xmax, dx : real;

begin

writeln('Введите xmin,xmax,dx');

readln(xmin,xmax,dx);

x:=xmin;

repeat

y:=2*x-sin(x);

writeln('x=', x:7:2, ' y=', y:7:2);

x:=x+dx;

until x>xmax;

end.

Исходные данные: Результат:

xmin = -2; xmax = 1; dx = 0.5 x= -2.00 y= -3.09

x= -1.50 y= -2.00

x= -1.00 y= -1.16

x= -0.50 y= -0.52

x= 0.00 y= 0.00

x= 0.50 y= 0.52

x= 1.00 y= 1.16

Итерационные вычислительные процессы

Пример 13. Найти методом итераций корень уравнения Поиск элементов массива по заданному критерию - student2.ruна интервале [a,b] с заданной точностью e и определить количество итераций.

Указания. 1. В качестве нулевого приближения корня уравнения выберем середину интервала [a,b] (x:=(a+b)/2).

2. Для получения предыдущего и последующего приближенных значений корня уравнения будем использовать две переменные x0 и x.

3.Условие выхода из цикла: |x - x0|£e.

Программа Схема алгоритма

Поиск элементов массива по заданному критерию - student2.ru Program Prim13;

var

a,b,x,x0,eps : real;

n : integer;

begin

writeln('a,b,eps');

readln(a,b,eps);

x:=(a+b)/2;

n:=0;

repeat

x0:=x;

x:=sqrt(18+x0)+sqrt(16-x0);

n:=n+1;

until abs(x-x0)<=eps;

writeln('x=', x:8:5,' n=', n:3);

end.

Исходные данные: Результат:

a = 6; b = 8; eps = 0.0001 x= 7.93272 n= 5

Вычисление суммы членов бесконечного ряда

Пример 14. Найти сумму бесконечного ряда:

Поиск элементов массива по заданному критерию - student2.ru

Условие выхода из цикла: |sin(nx)/n|£e

В этом примере будем использовать оператор while-do.

Общий вид оператора while-do:

Whileлогическое_выражениеdo

Begin

оператор1;

оператор2;

операторn;

end;

Выполнение оператораwhile-do:

Если значение логического_выражения равно true (истина), то выполняются операторы цикла, в противном случае происходит выход из цикла.

Программа Схема алгоритма

Поиск элементов массива по заданному критерию - student2.ru Program Prim14;

var

a,s,x,eps : real;

n : integer;

begin

writeln('Введите x, eps');

readln(x,eps);

s:=0;

n:=1;

a:=sin(x);

while abs(a)>eps do

begin

s:=s+a;

n:=n+1;

a:=sin(n*x)/n;

end;

writeln('s=', s:8:3);

end.

Исходные данные: Результат:

x = 3.48; eps = 0.0001 s= -0.168

Пример 15. Найти сумму ряда Поиск элементов массива по заданному критерию - student2.ru

Условие выхода из цикла: |xn/n!|£e

Указания. 1. В качестве начальных приближений переменных выберем следующие значения:

s:=0; n:=1; a:=x;гдеа -очередной (текущий) член ряда.

2. Каждый последующий член ряда будем получать умножением предыдущего члена на дробь x/nи умножать на –1,т.к. ряд знакопеременный, т.е. будем вычислять по формуле:a:= -a*x/n.

Программа Схема алгоритма

Поиск элементов массива по заданному критерию - student2.ru Program Prim15;

var

a,s,x,eps : real;

n : integer;

begin

writeln('Введите x,eps');

readln(x,eps);

s:=0;

n:=1;

a:=x;

while abs(a)>eps do

begin

s:=s+a;

n:=n+1;

a:= -a*x/n;

end;

writeln('s=', s:8:3);

end.

Исходные данные: Результат:

x = 1.3; eps = 0.0001 s= 0.727

Сложные циклы

Сложные циклы – это циклы, содержащие внутри себя другие циклы, называемые вложенными.

Цикл, не входящий в другие циклы, но содержащий в себе другие циклы, называется внешним циклом.

Цикл, входящий в другие циклы, но не содержащий в себе другие циклы, называется внутренним циклом.

Пример алгоритма, содержащего вложенный цикл

Пример 16. Вычислить элементы вектора C(n), который является произведением матрицы А(n,n) на вектор B(n). Причем элементы вектора B(n) вычисляются по формулам:

Поиск элементов массива по заданному критерию - student2.ru где i=1,2,…,n.

Указания.

1. Для вычисления элементов вектора Bнужно организовать циклический процесс, внутри которого присутствует разветвление.

2. Для организации разветвления можно использовать значение логического выражения (i mod 2) = 0. Если его значение равно true, т.е. остаток от деления значения индекса на 2 равен нулю, то индекс чётный, иначе – нечётный.

3. Элементы вектора Cрассчитываются по формулам:

Поиск элементов массива по заданному критерию - student2.ru .

4. Для вычисления элементов вектора Cиспользуются два цикла: внутренний с параметром j и внешний с параметром i.

Пусть элементы матрицы A(n,n) и вектора B(n) – вещественные числа и пусть n<=10.

На следующей странице представлена схема алгоритма, реализующего процесс решения данного примера.

 
  Поиск элементов массива по заданному критерию - student2.ru

Программа

Program Prim16;

Var

i, j, n : integer;

A : array [1..10,1..10] of real;

B, C : array [1..10] of real;

begin

writeln (' введите n');

readln (n);

writeln (' введите матрицу A');

for i:=1 to n do

for j:=1 to n do

read (a[i,j]);

for i:=1 to n do

if (i mod 2)=0 then b[i]:=1/(i*i+2)

else b[i]:=1/i;

for i:=1 to n do

begin c[i]:=0;

for j:=1 to n do

c[i]:=c[i]+b[j]*a[i,j];

end;

writeln (' вывод C');

for i:=1 to n do

writeln (c[i]:5:2);

end.

Исходные данные: Результат:

Размерность матрицы A:

n=3

Матрица A: Вектор C:

Поиск элементов массива по заданному критерию - student2.ru Поиск элементов массива по заданному критерию - student2.ru

Наши рекомендации