Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
96
Добавлен:
10.02.2014
Размер:
749.89 Кб
Скачать

s:=s+slag;

end;

writeln(’!’,x:7:2,’ !’,y:7:3,’ !’,s:7:3,’ !’); x:=x+h;

end;

Далее остается лишь написать пустой оператор ввода readln для задержки результатов на экране.

readln;

end.

Ниже представлен полный текст программы.

program lab4;

 

 

 

 

 

 

 

const n=10;

 

 

 

 

 

 

 

h=0.05;

 

 

 

 

 

 

 

var i:byte;

 

 

 

 

 

 

 

x,y,s,slag:real;

 

 

 

 

 

 

Begin

 

 

 

 

 

 

 

writeln;

 

 

 

 

 

 

 

writeln(’

Автор – Иванов И.П., студент гр. ИСЭд-11’);

writeln(’

Вариант № 100’);

 

 

 

 

writeln(’ Программа табулирования функции y=3^x, а также суммы

ряда ’);

 

 

 

 

 

 

 

writeln(’

ln(x)

 

ln(x)^2

 

 

ln(x)^n ’);

writeln(’s= 1 + -----x + -------x^2 + ... +--------x^n’);

writeln(’

1!

 

2!

 

 

n!’);

writeln(’на отрезке [0.1;1] с шагом 0.05’);

 

 

writeln;

 

 

 

 

 

 

 

writeln (’!

x

!

y

!

s

!’);

 

x:=0;

 

 

 

 

 

 

 

while x<1+h do

 

 

 

 

 

 

begin

 

 

 

 

 

 

 

y:=exp(x*ln(3));

 

 

 

 

 

 

s:=1;

{Начальное значение суммы, включая нулевое слагаемое}

slag:=1; {Значение нулевого слагаемого}

 

 

for i:=1 to n do

 

 

 

 

 

 

begin

 

 

 

 

 

 

 

slag:= slag*ln(3)/i*x;

 

 

 

 

s:=s+slag;

 

 

 

 

 

 

end;

 

 

 

 

 

 

 

writeln(’!’,x:7:2,’

 

!’,y:7:3,’

!’,s:7:3,’

!’);

x:=x+h;

 

 

 

 

 

 

 

end;

 

 

 

 

 

 

 

readln;

end.

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 4.1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Варианты заданий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Диапазон

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сумма S

 

изменения

n

 

 

 

 

Функция Y

 

 

 

 

 

вар.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1 +

 

 

 

 

 

+

 

 

 

 

 

 

 

 

+K

 

 

 

 

 

 

 

[1;2 ]

15

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1!

 

 

2!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

cos x + cos 2x

 

+ cos3x

+K

[-π/5; 9π/5]

40

 

 

 

 

 

ln

 

2sin

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

x

 

 

x

3

 

+

 

 

x5

 

−K

 

 

 

 

 

 

 

[0,1; 1]

10

 

 

 

 

 

 

sin x

 

 

 

 

 

 

 

 

 

 

 

 

3!

 

 

 

5!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

sin x sin 2x + sin 3x −K

[-π/5; 4π/5]

40

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

cos x +

 

 

cos 3x

 

+

cos 5x

+K

[π/5; π]

40

 

 

 

 

 

 

π2

 

 

π

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

25

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

cos π

 

 

 

 

 

 

 

 

cos 2 π

 

 

 

[0,1; 1]

25

 

 

 

 

x cosπ

 

 

 

 

 

 

 

 

 

 

 

 

π

 

 

 

1+

 

 

 

 

 

 

 

 

 

4

 

 

x +

 

 

 

 

 

 

 

4

x2

+K

 

 

 

e

 

 

4 cos(x sin

4 )

 

 

 

 

 

 

 

1!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

x2

 

 

 

 

 

x4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0,1; 1]

10

 

 

 

 

 

 

cos x

 

 

 

 

 

 

 

 

 

 

 

12! + 4! −K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π

 

 

 

 

40

 

 

 

 

 

 

x sin

π

 

 

 

 

 

 

 

 

 

 

 

8

 

x sin

 

 

 

+ x

2

sin 2

+K

[0,1; 0,8]

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

4

 

 

 

1

 

2x cos

π

 

+ x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

x5

 

 

 

 

 

 

x9

 

 

 

 

x13

 

 

 

 

 

[0,1; 0,8]

30

 

1

 

1 + x 1

 

 

 

 

 

 

 

 

 

 

 

 

x +

 

 

+

 

 

 

 

 

 

+

 

 

 

 

K

 

 

 

 

ln

 

 

+

 

arctgx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

1 x

2

 

 

 

5

 

 

9

 

13

 

 

 

 

 

 

10

1+

cos x

+

cos 2x

 

 

+K

 

[0,1; 1]

10

 

 

 

 

ecos x cos(sin x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1!

 

 

 

 

 

 

 

 

 

 

 

 

 

2!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

1+

 

3x2

 

+

 

5x4

 

+K

 

 

 

[0,1; 1]

10

 

 

 

 

(1+2x2 ) ex2

 

 

 

 

 

 

 

1!

 

 

2!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x cos

π

 

 

 

 

 

 

 

 

x2 cos 2

π

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

π

+ x

2

)

 

12

 

 

 

 

 

 

 

3

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

+K

[0,1; 0,8]

35

2 ln(12x cos 3

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

Окончание таблицы 4.1

13

 

x 1

+

1

 

 

x

1 3

+

1

x

1 5

+K

[0,2; 1]

10

 

 

 

 

 

 

 

 

 

1

 

ln x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

x +1

3

 

 

 

 

 

 

+

1

5

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

x

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

 

cos x +

cos 2x

 

cos3x

 

+K

 

[-π/5; π]

20

 

 

 

 

1

 

(

 

 

x

2

π 2

)

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

3

 

 

15

 

x3

 

x5

 

+

 

x7

 

 

−K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0,1; 1]

30

 

1 + x2

arctgx

x

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

16

sin x + sin 3x + sin 5x +K

 

 

 

[π/10; 9π/10]

40

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

17

1+

 

 

 

 

x2

 

+

 

 

x4

 

 

+K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0,1; 1]

10

 

 

 

 

 

 

 

 

 

 

 

e x

 

+ex

 

 

 

 

 

 

 

 

 

 

2!

 

 

 

 

4!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

 

cos 2x

 

+

 

cos 4x

 

 

+

cos6x

K

 

 

 

[0,1; 0,8]

50

 

 

 

 

 

1

π

 

sin x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x

 

 

 

 

 

(2x)2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x

 

 

 

 

 

 

 

 

 

 

 

19

1+

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0,1; 1]

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1!

 

 

 

 

 

2!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 x

 

 

 

 

 

 

 

 

 

 

5 x

2

 

 

 

10

 

x

 

3

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

1+

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

+K

[0,1; 1]

30

 

 

 

 

 

 

 

 

+

 

 

 

 

+1 e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

2

 

 

 

1!

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2! 2

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21

 

 

 

 

 

 

 

x3

 

 

 

 

 

 

x5

 

 

 

 

 

 

 

 

x7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0,1; 0,5]

40

 

 

 

 

 

 

 

 

 

 

 

arctgx

 

 

 

 

 

 

 

 

 

 

x 3 + 5 7 +K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 2

 

 

 

 

 

 

5 4

 

 

 

 

 

 

10 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin x

22

1

2!

x

 

 

 

+

 

4!

 

x

 

 

 

6!

 

 

x +K

 

 

 

[0,1; 1]

35

1

2

 

 

cos x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23

 

(2x)2

 

 

+

 

(2x)4

 

 

 

 

 

(2x)6

 

 

+K

 

[0,1; 1]

15

 

 

 

 

 

 

 

2cos2 x 1

 

 

 

 

 

2!

 

 

 

 

 

 

 

 

 

 

 

 

 

4!

 

 

 

 

 

 

 

 

 

 

 

 

6!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

24

(1+ x)2

+

 

(1+ x)

 

 

 

(1+ x)

+K

[-0,2; -0,1]

40

 

 

 

ln

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 + 2x + x

2

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

25

 

x +

x3

 

+

x5

 

 

+

x7

 

+K

 

 

 

 

 

 

 

 

 

 

 

 

 

[0,1; 1]

20

 

 

 

 

 

 

 

 

 

 

 

e x

 

ex

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3!

 

 

 

 

 

 

 

5!

 

 

 

 

 

 

7!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

32

Лабораторная работа № 5

Обработка одномерных массивов

Задание: составить программу заданной обработки массива целых чисел. В процессе обработки использовать перестановки элементов внутри массива, не создавая новых массивов. Заполнение исходного массива организовать с помощью генератора случайных чисел, если иное не предусмотрено вариантом задания. Исходный и обработанный массив выводить на экран.

Теоретический материал

При выполнении лабораторных работ 5 и 6 будет использоваться структурированный тип данных массив, который представляет собой фиксированное количество упорядоченных однотипных компонент, снабженных индексами. Он может быть однономерным и многомерным. В лабораторной работе № 5 будут использоваться одномерные массивы, в лабораторной работе № 6 – двумерные.

Тип-массив описывается в разделе описания типов следующим образом: type <имя типа> = аrrау[<тип индекса(индексов)>] of <тип компонент>;

Размерность массива может быть любой, компоненты массива могут быть любого (в том числе и структурированного) типа, индекс (индексы) может (могут) быть только интервального или перечисляемого типа. При употреблении в качестве типа индекса типа Integer или Word можно использовать только его диапазон.

При описании типа индекса (индексов) можно использовать константы, которые должны быть определены до определения типа.

Определенный в разделе описания типов тип-массив можно использовать для описания переменных и типизированных констант. Тип-массив можно вводить непосредственно и при определении соответствующих переменных или типизированных констант.

При задании значений константе-массиву компоненты указываются в круглых скобках и разделяются запятыми, причем, если массив многомерный, внешние круглые скобки соответствуют левому индексу, вложенные в них круглые скобки – следующему индексу и т. д. При этом все компоненты массива должны быть заполнены.

Доступ к компонентам массива осуществляется указанием имени массива, за которым в квадратных скобках помещается значение индекса (индексов) компоненты. В многомерных массивах значения индексов перечисляются через запятую.

Для работы с массивом как с единым целым используется идентификатор массива без указания индексов в квадратных скобках. Массив может участвовать только в операциях отношения («=», «<>») и в операторе присваивания.

33

Массивы, участвующие в этих действиях, должны быть идентичны по структуре, то есть иметь одинаковые базовые типы и типы индексов.

Задание значений переменной типа массив может осуществляться с клавиатуры, путем генерирования случайным образом либо иным способом. Когда значения элементов задаются с клавиатуры или генерируются случайным образом, необходима организация цикла, в котором последовательно происходит обращение к каждому элементу массива. Вывод значений элементов массива на экран или в файл также происходит в цикле.

При написании программ необходимо следить за тем, чтобы значения индексов не превышали границ, указанных при объявлении массива, так как выход индекса за границы массива приводит к сбою в работе программы. Контроль значений индексов массивов можно организовать при помощи директивы компилятора {$R+}, которая приводит к проверке всех индексных выражений на соответствие их значений диапазону индекса.

Пример выполнения лабораторной работы

Для примера рассмотрим следующую задачу. Дан одномерный массив целых чисел. Удалить все отрицательные элементы, расположенные справа от максимального.

Прежде всего, определим алгоритм решения данной задачи. Вначале надо найти максимальный элемент среди элементов массива и запомнить его индекс. Затем, начиная со следующего за максимальным элементом, проверять элементы массива на знак, и если число оказывается отрицательным, то удаляем этот элемент из массива путем «сдвига» элементов массива влево и уменьшаем длину массива. При этом следует заметить, что в памяти переменная типа массив будет занимать столько же места, как и до удаления элементов.

В графическом виде этот алгоритм будет блок-схему, представленную на рис. 5.1.

Теперь пишем код программы.

Поскольку в программе требуется использование генератора случайных чисел, то необходимо подключить стандартный модуль CRT, в котором описана функция генерации случайных чисел.

Uses crt;

В разделе описания типов определим тип-массив: type arr=array[1..15] of integer;

В разделе описания переменных описываем необходимые переменные:

var a:arr;

{массив}

i,j,n: byte;

{индексы, длина массива}

i_max: byte;

{индекс максимального элемента массива}

max:integer;

{максимальный элемент}

34

начало

Информационный

блок

i от 1 до n шаг 1

ai = случ. число

 

Вывод ai

 

max=a1; i_max=1

 

i от 2 до n шаг 1

нет

ai >max

 

 

да

 

max=ai; i_max=i

Генерация случайным образом

элементов массива

 

 

и вывод их на экран

 

 

Нахождение максимального элемента

i = i_max+1

 

 

i<= n

нет

 

 

 

да

нет

Удаление

ai <0

отрицательных

 

элементов

да

 

 

справа от

j от i до n-1 шаг

 

максимального

aj = aj+1

 

 

n=n-1

 

 

i=i+1;

 

 

Вывод

i от 1 до n шаг 1

результирующего

 

Вывод ai

массива

 

 

 

 

 

конец

Рис. 5.1. Блок-схема алгоритма удаления из массива отрицательных элементов, расположенных справа от максимального элемента массива

Далее описываем основное тело программы. Как отмечено на рисунке, алгоритм состоит из нескольких частей. Первая часть – генерация исходного массива:

begin writeln;

writeln(’ Автор – Иванов И.П., студент гр. ИСЭд-11’); writeln(’ Вариант № 100’);

writeln(’ Дан одномерный массив целых чисел.’);

35

writeln(’ Удалить все отрицательные элементы, расположенные справа от максимального ’);

writeln;

 

{$R+}

{Включаем контроль значений индексов}

clrscr;

 

n:=15;

 

randomize;

writeln('Исходный массив:');

for i:=1 to n do

{генерация элементов массива}

begin

 

a[i]:=-20+random(41); {в диапазоне [-20; 20]} write(a[i]:4);

end;

writeln;

Генератор случайных чисел активизируется командой randomize. Далее в цикле случайным образом задаются элементы массива. Функция random(41) возвращает случайное число в диапазоне от 0 до 40. Получается, что минимально возможное значение элементов массива будет равно -20 (к -20 прибавить 0, сгенерированный функцией random), максимально возможное – 20 (-20 плюс число 40, сгенерированное функцией random). Сразу же выводим значение элемента массива на экран. В цикле все элементы будут выводиться в строчку, т. к. используется команда вывода write. После генерации и вывода всех элементов массива осуществляется переход на новую строку.

Вторая часть алгоритма – поиск максимального элемента. Предположим, что первый элемент – максимальный, тогда запомним значение первого элемента в переменной max, а в переменную i_max, где будет запоминаться положение максимального элемента, запишем 1. Далее организуется цикл, в котором ищется элемент, больший чем max.

max:=a[1]; i_max:=1;

for i:=2 to n do

if a[i]>max then begin

max:=a[i]; i_max:=i;

end;

Далее, начиная с элемента, следующим за максимальным, организуется цикл проверки элементов массива на знак (важно заметить, что в данном случае нужно использовать цикл while, т. к. длина массива будет изменяться, и, соответственно, число итераций цикла также будет меняться). Если число оказывается отрицательным, то удаляем этот элемент из массива, для чего организуется еще один цикл, в котором на место удаляемого записывается стоящий следом элемент.

36

Внутренний цикл сдвига можно проиллюстрировать на примере удаления седьмого элемента из массива, содержащего 10 элементов (рис. 5.2).

Исходный массив

a1

 

a2

 

a3

 

a4

 

a5

 

a6

 

a7

 

a8

 

a9

 

a10

Удаляемый элемент

1-я итерация цикла

a1

 

a2

 

a3

 

a4

 

a5

 

a6

 

a7

 

a8

 

a9

 

a10

 

 

 

 

 

 

 

результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

a2

 

a3

 

a4

 

a5

 

a6

 

a8

 

a8

 

a9

 

a10

 

 

 

 

 

 

2-я итерация цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

a2

 

a3

 

a4

 

a5

 

a6

 

a8

 

a8

 

a9

 

a10

 

 

 

 

 

 

 

результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

a2

 

a3

 

a4

 

a5

 

a6

 

a8

 

a9

 

a9

 

a10

 

 

 

 

 

 

3-я итерация цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

a2

 

a3

 

a4

 

a5

 

a6

 

a8

 

a9

 

a9

 

a10

 

 

 

 

 

 

 

результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

a2

 

a3

 

a4

 

a5

 

a6

 

a8

 

a9

 

a10

 

a10

Рис. 5.2. Схема удаления элемента из массива

В программе удаление элементов, находящихся справа от максимального, будет выглядеть следующим образом:

i:=i_max; while i<=n do begin

if a[i]<0 then begin

for j:=i to n-1 do a[j]:=a[j+1];

n:=n-1;

end else

i:=i+1;

end;

Еще одна тонкость данного фрагмента состоит в том, что переход к следующему элементу (i:=i+1) для проверки осуществляется только тогда, когда элемент не удовлетворяет условию. Если же i-й элемент окажется отрицательным, то

37

после удаления на его месте окажется i+1-й элемент, который и нужно проверять на следующей итерации цикла.

Остается вывести результирующий массив на экран. writeln('Результат обработки:');

for i:=1 to n do write(a[i]:4);

readln;

{$R-} {Выключаем контроль значений индексов} end.

Ниже представлен полный текст программы. program lab5_var100;

Uses crt;

type arr=array[1..15] of integer;

var a:arr;

{массив}

i,j,n: byte;

{индексы, длина массива}

i_max: byte;

{индекс максимального элемента массива}

max:integer;

{максимальный элемент}

begin

 

 

writeln;

 

 

writeln(’

Автор –

Иванов И.П., студент гр. ИСЭд-11’);

writeln(’

Вариант

№ 100’);

writeln(’ Дан одномерный массив целых чисел.’);

writeln(’ Удалить все отрицательные элементы, расположенные справа от максимального ’);

writeln;

 

 

{$R+}

{Включение контроля значений индексов}

clrscr;

{Очистка экрана}

n:=15;

 

 

randomize;

 

 

writeln('Исходный массив:');

for i:=1 to n do

{генерация элементов массива}

begin

 

 

a[i]:=-20+random(41); {в диапазоне [-20; 20]} write(a[i]:4);

end;

 

writeln;

 

max:=a[1];

 

i_max:=1;

 

for i:=2 to n do

{поиск максимального элемента массива}

if a[i]>max

then

begin

 

max:=a[i];

 

i_max:=i;

 

38

end;

 

 

i:=i_max+1;

 

while

i<=n do

{цикл для проверки элементов на знак }

begin

 

 

if

a[i]<0 then

{если элемент отрицательный, то}

begin

 

 

for j:=i to n-1 do {цикл удаления i-го элемента}

 

a[j]:=a[j+1];

end

n:=n-1;

{уменьшение длины массива}

 

 

else

 

 

i:=i+1;

{иначе переход к следующему элементу}

end;

writeln('Результат обработки:'); for i:=1 to n do

write(a[i]:4);

readln;

{$R-} {Выключение контроля значений индексов} end.

Варианты заданий

1.Скорректировать массив A=(a1, а2, ..., аn), переписав в начало массива группу, содержащую наибольшее число подряд идущих положительных элементов. Элементы массива вводить с клавиатуры.

2.В массиве A=(a1, а2, ..., аn) все элементы, равные нулю, поставить сразу после максимального элемента данного массива. Элементы массива вводить с клавиатуры.

3.В массиве A=(a1, а2, ..., аn) все отрицательные элементы отправить в «хвост» массива.

4.В массиве A=(a1, а2, ..., аn) удалить последнюю группу положительных элементов. Группой называется подряд идущие элементы одного знака, число которых больше или равно 2.

5.В массиве A=(a1, а2, ..., аn) все положительные элементы, стоящие перед минимальным положительным элементом, переслать в «хвост» массива.

6.В массиве A=(a1, а2, ..., аn) удалить все подряд идущие отрицательные элементы, идущие вслед за минимальным элементом массива.

7.В массиве A=(a1, а2, ..., аn) удалить все отрицательные элементы, стоящие перед минимальным элементом массива.

8.В массиве A=(a1, а2, ..., аn) удалить все элементы, меньшие, чем элемент массива, расположенный слева от максимального.

39

Соседние файлы в папке методические указания для лабораторных работ