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

Основы алгоритмизации и программирования. Часть 1. Задачи и упражнения. Практикум. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
543 Кб
Скачать

28. найти решение системы уравнений:

ax +by = c,dx +ey = f .

29.определить, является ли заданный год N високосным. год високосный, если N не кратно 100 и число, изображаемое его двумя последними цифрами, кратно четырем. если N кратно 100, то год високосный лишь при N, кратном 400.

30.заданы координаты вершин прямоугольника со сторонами, параллельными осям координат. определить площадь части прямоугольника, расположенной в первой координатной четверти.

31.на плоскости заданы точки M1(x1, y1), M2(x2, y2), N1(x3, y3), N2(x4, y4). проверить, являются ли параллельными прямые, одна из которых проходит через точки M1, M2, а другая – через точки N1, N2. если прямые пересекаются, то найти координаты точки пересечения.

32.два прямоугольника со сторонами, параллельными осям координат, заданы координатами двух своих противоположных

вершин: M1(x1, y1), M2(x2, y2) – первый, N1(x3, y3), N2(x4, y4) – второй прямоугольник. найти площадь их пересечения.

33.найти координаты точек пересечения прямой y = k x + b

иокружности радиуса R с центром в начале координат. определить, сколько точек пересечения расположены в первой координатной четверти.

34.заданы числа k, a, b. определить число точек пересечения прямой y = kx + b с гиперболой y = a/x и их координаты.

35.заданы числа k, a, b. проверить, попадают ли вещественные корни уравнения x2 + ax + b = 0 в интервал (−k, k).

36.заданы числа a, b, x, y, z (a < b). определить, какие из чисел x, y, z попадают в отрезок [a, b]. напечатать также количество таких чисел.

37.заданы координаты двух точек на плоскости (x1, y1), (x2, y2)

ичисла R, P (R > 0). определить, попадают ли обе точки внутрь полукруга радиуса R с центром в точке (P, 0), лежащего в верхней полуплоскости.

21

38. заданы числа a, b, c, d (a < b, c < d) и x. определить, принадлежит ли x какому-либо из отрезков [a, b], [c, d] или их общей части. ответ выдать в виде сообщения.

39. заданы числа k, b, c, d, e. определить количество и координаты точек пересечения прямой у = k x + b и параболы y = cx2 + dx + eи расстояние от каждой точки до начала координат.

40.заданы числа k, b, a, l. определить, попадают ли обе точки пересечения прямой y = k x + b и параболы y = a x2 в квадрат со стороной l и центром в начале координат (стороны параллельны осям). напечатать сообщение и координаты точек.

41.заданы числа a, b, c, u, v. найти наибольшее и наименьшее значения функции у = ax2 + bx + c на отрезке [u, v].

42.составить программу, определяющую число действительных корней биквадратного уравнения ax4 + bx2 + c = 0.

43.заданы k1, b1, k2, b2 и e (e > 0). определить, содержится ли точка пересечения прямых у = k1х + b1 и у = k2х + b2 в e – окрестности начала координат. если прямые совпадают, то проверить пересечение прямой с e – окрестностью начала координат.

44.ввести N1, N2, N3 – количества пропущенных часов занятий в среднем на студента за неделю для трех групп. если min (N1, N2, N3) < 10, то напечатать: «есть хорошая группа».

45.ввести N1, N2, N3 – количества рекламаций на 3 вида товаров. напечатать текст «все товары хорошие», если

max (N1, N2, N3) < 5, иначе – «есть плохие товары».

46. по номеру дня недели выдать сообщение, каким он является – рабочим или выходным.

3. ПрОгрАммирОвАние итерАциОнных циКлОв

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

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

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

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

Пример типовой задачи

вычислить значения функции y = cos(x) – ex/2 при изменении аргумента х на заданном интервале [c, d] с заданным шагом h.

решение с использованием цикла с предусловием

Блок-схема алгоритма

приведена на рис. 3.

23

Начало c, d, h

x = c

x d

нет

 

 

да

y = cos(x) ex/2

x, y

x = x + h

Конец

рис. 3. блок-схема алгоритма с использованием цикла с предусловием

текст программы на языке Паскаль

program prim3;

var с, d, h, x, y: real; begin

write('c='); readln(c); write('d='); readln(d); write('h='); readln(h); x := c;

d := d + h/2; while x <= d do begin

y := cos(x) – exp(x/2); writeln('x=', x:6:2, 'y=', y:6:2 ); x := x + h

end;

end.

24

текст программы на языке С#

using System;

namespace ConsoleApplication21

{

class Program

{

static void Main(string[] args)

{

Console.Write("введите c=");

double c = double.Parse(Console.ReadLine()); Console.Write("введите d=");

double d = double.Parse(Console.ReadLine()); Console.Write("введите h=");

double h = double.Parse(Console.ReadLine()); double y, x = c;

d = d + h/2; while (x <= d) {

y = Math.Cos(x) – Math.Exp(x/2); Console.WriteLine("x={0}, y={1}", x, y); x = x + h;

}

Console.ReadLine();

}

}

}

решение с использованием цикла с постусловием

Блок-схема алгоритма

приведена на рис. 4

текст программы на языке Паскаль

program prim4;

var с, d, h, x, y: real; begin

write('c='); readln(c); write('d='); readln(d);

25

write('h='); readln(h); x := c;

d := d + h/2; repeat

y := cos(x) – exp(x/2); writeln('x=', x:6:2, 'y=', y:6:2 ); x := x + h

until x > d; end.

Начало

c, d, h

x = c

y = cos(x) ex/2

x, y

x = x + h

x > d

Конец

рис. 4. блок-схема алгоритма с использованием цикла с постусловием

26

текст программы на языке С#

using System;

namespace ConsoleApplication22

{

class Program

{

static void Main(string[] args)

{

Console.Write("введите c=");

double c = double.Parse(Console.ReadLine()); Console.Write("введите d=");

double d = double.Parse(Console.ReadLine()); Console.Write("введите h=");

double h = double.Parse(Console.ReadLine()); double y, x = c;

d = d + h/2; do {

y = Math.Cos(x) – Math.Exp(x/2); Console.WriteLine("x = {0}, y = {1}", x, y); x = x + h;

} while (x <= d); Console.ReadLine();

}

}

}

Задачи

1.найти наибольшее целое n такое, что

1)3n4 – 730n < 5;

2)en – 1000 ln(n) ≤ 10.

2.дано целое число m > 1. получить наибольшее целое k, при котором 4k < m.

3.дано натуральное число n. получить наименьшее число вида 2r, превосходящее n.

4.Числа Фибоначчи определяются формулами:

f0 = f1 = 1; fn = fn −1 + fn −2 при n = 2, 3, … .

1)найти f – первое число Фибоначчи, большее заданного m

(m > 1).

27

2)вычислить S – сумму всех тех чисел Фибоначчи, которые не превосходят 1000.

5.вычислить число через разложение в ряд

π =1

1 + 1 1 + = (1)k +1

1

 

 

 

 

 

4

3 5 7

 

 

k =1

2k 1

 

сточностью ε = 10−3. сравнить с точным значением.

6.составить программу приближенного вычисления значе-

ния π2 с точностью ε = 10−4, используя формулу

π

 

2

 

2

 

4

4

6

6

 

(2i)

2

 

=

 

 

=

 

.

2

1

3

3

7

(2i 1)(2i +1)

 

 

 

5

5

 

i =1

 

вычисления заканчивать, если

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(2i)2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

< ε.

 

 

 

 

 

 

 

 

 

(2i 1)(2i +1)

 

 

сравнить с точным значением.

7. вычислить бесконечную сумму с заданной точностью

ε = 10−4.

1)i12 ;

i=1

3)(1)i ;

i=1 i!

1

 

2)

;

i(i +1)

i =1

 

4)(2)i .

i=1 i!

8. составить программы

вычисления

 

значений функций

с помощью разложений в ряд:

 

 

 

 

 

 

 

 

x

2

 

 

 

x

3

 

 

x

k

 

 

1) ln (1+ x) = x

 

+

 

− = (1)k +1

 

;

 

 

 

 

 

 

 

k

 

 

 

2

 

 

3

 

k =1

 

 

 

 

x

3

 

 

 

x

5

 

 

 

x

2n +1

 

2) sin (x) = x

 

 

+

 

 

− = (1)n

 

 

 

;

 

 

 

 

 

 

(2n +1)!

3!

 

 

5!

 

 

 

n = 0

 

28

3)cos (x) =1

4)ex =1+1!x +

x2

2!

x2

2!

 

x

4

x

2n

 

+

 

− = (1)n

 

;

 

 

(2n)!

4!

n =0

 

+ = xn .

n =0 n!

вычислять с точностью до члена ряда, меньшего ε. сравнить

сточными значениями функций.

9.определить приближенное (с точностью до 0,1) значение корня уравнения x – arctg (x) = π. изменять x от 2 с шагом h = 0,1; изменение знака функции является признаком пересечения оси Ox.

10.найти корень уравнения F(x) = 0 методом деления отрезка пополам с точностью ε = 10−4. (ниже рядом с каждым уравнением указан отрезок, содержащий корень.)

1)F(x) = lg (x) – 2,1 + x; [1, 3].

2)F(x) = lg (x) – 0,16/x; [1, 10].

3)F(x) = x + ln (x + 0,5) – 0,5; [0, 2].

4)F(x) = x5 x – 0,2; [1, 1,1].

5)F(x) = x4 + 2x x – 1; [0, 1].

6)F(x) = x3 – 0,2x2 – 0,2x – 1,2; [1, 1,5].

Метод деления отрезка пополам для уравнения F(x) = 0 состоит в многократном делении отрезка [a, b] точкой с пополам и выборе той половины отрезка, на которой остался корень уравнения. вычисления производятся до достижения точно-

сти ε: |b – a| < ε.

11. вычислить приближенное значение корня уравнения x = j (x) методом простой итерации с точностью ε = 10−4. (ниже рядом с каждой функцией j (x) в скобках указано начальное приближение x0 к корню.)

1) j(x) =

ex

; (0).

2) j(x) =

1+ x4

; (0,2).

4,7

6

 

 

 

 

29

3)

j(x) =

sin (x)

+1; (0).

4)

j(x) =

12x3

; (0,11).

2

 

4

 

 

 

 

 

 

 

 

5)

j(x) =

2 x3

; (0,95).

6)

j(x) =

8+8ln (x)

; (4,32).

12

5

 

 

 

 

 

 

 

 

 

Метод простой итерации для решения уравнения x = φ( x) состоит в последовательном приближении к корню по формулам xk + 1 = φ(xk). вычисления заканчиваются, когда |xk + 1 xk| < ε.

12. найти корень уравнения F(x) = 0 методом ньютона с точностью ε = 10 −4. (ниже рядом с каждым уравнением указано начальное приближение x0 к корню.)

1)x3 – 2x2 + x – 3 = 0; (2,2).

2)tg(x) – x = 0; (4,67).

3)1,8x4 – sin(10x) = 0; (0,22).

4)x3 – 6x2 + 20 = 0; (2,31).

Метод ньютона (касательных) для уравнения F(x) = 0 состоит

в нахождении xk + 1 = xk F(xk) /F(xk). вычисления заканчиваются,

когда |xk + 1 xk| < ε.

13.решить уравнение cos(x) – 4,7x = 0 упрощенным методом

ньютона: xk + 1 = xk F(xk ) /F(x0) с точностью ε = 10−4. вычисления заканчиваются, когда |xk + 1 xk | < ε.

14.решить с точностью ε = 10−4 уравнение sin(x) – x + 2,7 = 0 методом неподвижных хорд:

xk +1 = xk F(xk )(xk x0). F(xk )F(x0)

выбрать x0 и x1. вычисления заканчиваются, когда |xk +1 xk| < ε.

15. решить с точностью ε = 10 −4 уравнение 1,7cos(x) – ex = 0 методом подвижных хорд:

xk +1 = xk F((xk )()xk (xk 1)).

F xk F xk 1

вычисления заканчиваются, когда |xk + 1 xk | < ε.

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]