Вы находитесь на странице: 1из 15

Содержание

Задание №1…………………………………………………………………….….2

Задание №2………………………………………………………………………..3

Задание №3…………………………………………………………………..…….4

Задание №4………………………………………………………………………...6

Задание №5…………………………………………………………………….…..8

Задание №6…………………………………………………………………….…10

Задание №7…………………………………………………………………...…..12

Задание №8……………………………………………………………………….14

1
Задание №1
Реализовать вычисление выражений z1 и z2 из задания лабораторной работы
№2 и проверку их на равенство друг другу с помощью функций следующего
вида

1)2 функции возвращающие значение z1 и z2

2)функция которая вычисляет z1, z2, сравнивает их и возвращает признак.


Равны друг другу или нет.

В основной программе необходимо проанализировать значение


возвращаемой функции.

Исходные данные:
x, y – значение переменных;
Результат:
- Z1 и Z2- значения функций.
- Вывод на экран сообщения - равны Z1 и Z2или нет.
Листинг программы
var

x,y:real;
pr:boolean;
function proverka(x,y:real):boolean;
var
z1,z2:real;
begin
z1:=power(cos(x),4)+power(sin(y),2)+1/4*power(sin(2*x),2)-1;
z2:=sin(y+x)*sin(y-x);
if Abs(z1-z2)<1E-9 then
proverka:=true
else
proverka:=false;
end;
begin
writeln('Введите х и у');
readln(x,y);
pr:=proverka(x,y);
if pr then
writeln('z1 равно z2')
else
writeln('z1 не равно z2');
end.

2
Иллюстрация работы приложения

Задание 2
Реализовать вычисление значение функции из задания 1 лабораторной
работы № 3 с помощью отдельной подпрограммы.

Исходные данные:
- x – значение аргумента x;
- r – радиус.

Результат:
- y- значение функции.

Листинг программы
3
var
x,r:real;
y:real;
function znachenie(x,r:real):real;
begin
if x<-6 then
znachenie:=-sqrt(power(r,2))-power(x,2)
else
if x<2 then
znachenie:=(x+2)/2
else
if x < 6 then
znachenie:=0
else
znachenie:=power(x-6,2);
end;
begin
writeln('Введите x и r');
readln(x,r);
y:=znachenie(x,r);
writeln('y=',y);
readln
end.

Иллюстрация работы приложения

Задание 3
Написать программу для реализации определения попадания точки в
заштрихованную область из задания №2 лабораторной работы №3 (модуль 1)
с помощью отдельной функции.

4
Исходные данные:
- x - значениe аргументaх;

- y – значение функции.

Результат:
- Вывод сообщения о попадании точки в область.

Листинг программы:
program p3;
var
x,y,r:real;
k:boolean;
function popadanie(x,y,r:real):boolean;
begin
if (x>=0) and (r<=sqrt(power(x,2)+power(y,2))) then
popadanie:=true
else
if (x<=0) and (x<=r) and (y<=x) then
popadanie:=true
else
if (x<=0) and (x<=r) and (y>=-x) then
popadanie:=true
else
popadanie:=false;
end;
begin
WriteLn('Введите x,r и y');
ReadLn(x);
ReadLn(r);
ReadLn(y);
k:=popadanie(x,y,r);
if k=true then
begin
writeln('Точка принадлежит данной области')
end
else
begin
writeln('Точка не принадлежит данной области');
end;
readln
end.
5
Иллюстрация работы приложения

Задание 4
Выполнить задание №3 (модуль 2), описывая точку на плоскости с помощью
структуры (записи).

Исходные данные:
 Запись Point(включающая в себя координаты х и у);

Результат:
 Вывод сообщения о попадании точки в область.

type point=record
x:real;
6
y:real;
end;
var
a:point;
r:real;
k:boolean;
function popadanie(a:point;r:real):boolean;
begin
if (a.x>=0) and (r<=sqrt(power(a.x,2)+power(a.y,2))) then
popadanie:=true
else
if (a.x<=0) and (a.x<=r) and (a.y<=a.x) then
popadanie:=true
else
if (a.x<=0) and (a.x<=r) and (a.y>=-a.x) then
popadanie:=true
else
popadanie:=false;
end;
begin
writeln('Введите x');
readln(a.x);
writeln('Введите y');
readln(a.y);
writeln('Введите r');
readln(r);
k:=popadanie(a,r);
if k=true then
begin
writeln('Точка принадлежит данной области')
end
else
begin
writeln('Точка не принадлежит данной области');
end;
readln
end.

Иллюстрация работы приложения

7
Задание 5
Написать программу для реализации вывода на экран таблицы значений
функции из задания №1 лабораторной работы №4 (модуль 1) с помощью
отдельных подпрограмм.

Исходные данные:
 a – начало отрезка;
 b – конец отрезка;
 n – количество разбиений;
 r – радиус.

Результат:
 Вывод таблицы значений функции.

Листинг программы
var
r: real;
a, b: real;
n: integer;

function znachenie(x, r: real): real;


begin
if x < -6 then
znachenie := -sqrt(power(r, 2)) - power(x, 2)
else
if x < 2 then
znachenie := (x + 2) / 2
else
if x < 6 then
znachenie := 0
else
znachenie := power(x - 6, 2);
end;

procedure vivod(r, a, b: real; n: integer);


var
x, y, h: real;
begin
x := a;

8
h := (b - a) / n;
repeat
y := znachenie(x,r);
writeln(x:0:3, ' ', y:0:3);
x := x + h;
until(x > b);
end;

begin
writeln('Введите r');
readln(r);
Writeln('Введите концы отрезка');
Readln(a, b);
Writeln('Введите число на которое делится отрезок');
readln(n);
vivod(r, a, b, n);
readln
end.

Иллюстрация работы приложения

Задание 6
Цель работы: написать программу для реализации стрельбы по мишени
из задания №2 лабораторной работы №4 (модуль 1) с помощью отдельных
подпрограмм. Проверка попадания выстрела в мишень выполняется с
помощью отдельной функции. Необходимо определить процент попадания в
мишень.

9
Исходные данные:
 x - значениe аргументaх;
 y – значение функции;
 n – количество выстрелов.

Результат:
 Вывод сообщения о проценте попадания.

Листинг программы
var
r, pr: real;
n: integer;

function popadanie(x, y, r: real): boolean;


begin
if (x >= 0) and (r <= sqrt(power(x, 2) + power(y, 2))) then
popadanie := true
else
if (x <= 0) and (x <= r) and (y <= x) then
popadanie := true
else
if (x <= 0) and (x <= r) and (y >= -x) then
popadanie := true
else
popadanie := false;
end;

function procent(n: integer; r: real): real;


var
x, y: real;
i, p: integer;
k: boolean;
begin
p := 0;
for i := 1 to n do
begin
writeln('Введите x');
readln(x);
10
Writeln('Введите у');
readln(y);
write('x=', x:5:2, ' y=', y:5:2);
k := popadanie(x, y, r);
if k = true then
begin
p := p + 1;
writeln('Выстрел попал в цель ')
end
else
begin
writeln('Выстрел не попал в цель ');
end;
end;
procent := (p / n) * 100;
end;

begin
writeln('Введите количество выстрелов');
readln(n);
writeln('Введите r');
readln(r);
pr := procent(n, r);
writeln('процент поаданий ', pr);
readln
end.

Иллюстрация работы приложения

Задание 7
Цель работы: выполнить задание №6 (модуль 2), описывая точку на
плоскости с помощью структуры (записи) .

11
Исходные данные:
 Запись point (включающая в себя координаты х и у);

Результат:
 Вывод сообщения о проценте попадания.

Листинг программы
type
point = record
x: real;
y: real;
end;

var
r, pr: real;
n: integer;

function popadanie(a: point; r: real): boolean;


begin
if (a.x >= 0) and (r <= sqrt(power(a.x, 2) + power(a.y, 2))) then
popadanie := true
else
if (a.x <= 0) and (a.x <= r) and (a.y <= a.x) then
popadanie := true
else
if (a.x <= 0) and (a.x <= r) and (a.y >= -a.x) then
popadanie := true
else
popadanie := false;
end;

function procent(n: integer; r: real): real;


var
a: point;
i, p: integer;
k: boolean;
begin
p := 0;
for i := 1 to n do
begin
writeln('Введите x');
readln(a.x);
Writeln('Введите у');
12
readln(a.y);
write('x=', a.x:5:2, ' y=', a.y:5:2);
k := popadanie(a, r);
if k = true then
begin
p := p + 1;
writeln('Выстрел попал в цель ')
end
else
begin
writeln('Выстрел не попал в цель ');
end;
end;
procent := (p / n) * 100;
writeln('процент поаданий ', pr);
end;

begin
writeln('Введите количество выстрелов');
readln(n);
writeln('Введите r');
readln(r);
pr := procent(n, r);
writeln('процент поаданий ', pr);
readln
end.

Иллюстрация работы приложения

Задание № 8
Цель работы: написать программу для реализации вычисления ряда из
задания №3 лабораторной работы №4 (модуль 1) тремя способами с
помощью отдельных функций.

Способы:

 Вычисление суммы заданного количества членов ряда;

13
 Вычисление ряда с заданной точностью;
 Вычисление ряда с заданной точностью, но не больше заданного
максимально допустимого количества членов ряда.

Исходные данные:
 x- значениe аргументaх;
 eps – заданная точность;
 Nmax – количество слагаемых.

Результат:
 Вывод на экран суммы ряда, посчитанной тремя способами.

Листинг программы
var
Nmax: integer;
x, eps, summa1, summa2, summa3: real;

function max(x: real; Nmax: integer): real;


var
p, s, sum: real;
n: integer;
begin
s := 0;
for n := 0 to Nmax do
begin
p := (power(-1, n + 1)) / ((2 * n + 1) * power(x, 2 * n + 1));
s := p + s;
end;
sum := s + PI / 2;
max := sum;
end;

function pogreshnost(x, eps: real): real;


var
p, s, sum: real;
n: integer;
begin
n := 0;
s := 0;
repeat
p := (power(-1, n + 1)) / ((2 * n + 1) * power(x, 2 * n + 1));
s := p + s;
n := n + 1;
14
until (abs(p) <= eps);
sum := s + PI / 2;
pogreshnost := sum;
end;

function maxpogreshnost(x, eps: real; Nmax: integer): real;


var
p, s, sum: real;
n: integer;
begin
n := 0;
s := 0;
repeat
p := (power(-1, n + 1)) / ((2 * n + 1) * power(x, 2 * n + 1));
s := p + s;
n := n + 1;
until ((n >= Nmax) or (abs(p) <= eps));
sum := s + PI / 2;
maxpogreshnost := sum;
end;

begin
WriteLn('Введите Nmax');
readLn(Nmax);
WriteLn('x');
readLn(x);
WriteLn('eps');
readLn(eps);
summa1 := max(x, Nmax);
writeln('Вычисление суммы заданного количества членов ряда ' + 'summa=',
summa1);
summa2 := pogreshnost(x, eps);
writeln('Вычисление ряда с заданной точностью ' + 'summa=', summa2);
summa3 := maxpogreshnost(x, eps, Nmax);
writeln('Вычисление ряда с заданной точностью, но не больше заданного
максимально допустимого количества членов ряда ' + 'summa=', summa3);
readln
end.

Иллюстрация работы приложения

15