Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 семестр / ПрограммированиеCPP / ПрограммированиеCPP.pps
Скачиваний:
8
Добавлен:
14.05.2015
Размер:
748.03 Кб
Скачать

Основы алгоритмизации

Начало

A,B

+

A=B

-

- A>B +

НОД(A,B) = НОД(min(A,B), |A-B|)

B=B-A

 

A=A-B

 

 

 

A

Конец Рис.7. Алгоритм Евклида

Основы алгоритмизации

Задача о шахматном коне

Рис.8. Варианты ходов коня

Основы алгоритмизации

 

 

 

 

 

2x 3

 

 

 

 

 

 

 

 

1

 

4

5

6

7

8

 

 

1

2

3

4

4

4

4

3

2

 

 

 

 

 

 

 

 

 

 

 

 

y

2

3

4

6

6

6

6

4

3

 

 

3

4

6

8

8

8

8

6

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

4

6

8

8

8

8

6

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

4

6

8

8

8

8

6

4

 

 

6

4

6

8

8

8

8

6

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

3

4

6

6

6

6

4

3

 

 

8

2

3

4

4

4

4

3

2

Рис. 9. Матрица потенциалов

Основы алгоритмизации

 

1

2

3

4

5

6

7

8

 

 

 

 

 

 

 

 

 

1

38

3

40

19

50

5

42

21

 

 

 

 

 

 

 

 

 

2

33

18

37

4

41

20

44

6

 

 

 

 

 

 

 

 

 

3

2

39

34

63

36

51

22

43

 

 

 

 

 

 

 

 

 

4

17

32

1

52

45

64

7

48

 

 

 

 

 

 

 

 

 

5

54

13

56

35

62

47

44

23

 

 

 

 

 

 

 

 

 

6

31

16

53

46

57

26

61

8

 

 

 

 

 

 

 

 

 

7

12

55

14

29

10

54

24

27

8

15

30

11

58

25

28

9

60

 

 

 

 

 

 

 

 

 

Рис. 10. Решение при x=3, y=4

Основы алгоритмизации

Начало 1

x, y

2

Задать начальные значения C, R, Sx,Sy

i=2,64

Выбрать поле x1, y1

Сделать ход

R

Конец 8

3

4

5

6

7

С – матрица 8 8, содержащая

потенциалы полей;

R - матрица 8 8, содержащая решение

задачи в виде номеров ходов коня; Sx, Sy – массивы из 8 элементов,

содержащие смещения коня относительно текущей координаты, необходимые для реализации правила буквы "Г”:

Sx = ( 1, 2,

2,

1,-1,-2,-2,-1);

Sy = (-2,-1,

1,

2, 2, 1,-1,-2);

x, y – текущие координаты коня; x1,y1 – координаты поля с

минимальным потенциалом для текущих (x, y);

m – значение минимального потенциала допустимого поля.

Рис. 11. Алгоритм решения

Основы алгоритмизации

4

 

m=9

5.1

j=1,8

5.2

 

 

5.3

x0=x+Sx(j) y0=y+Sy(j) 6

-

5.4

Ход

 

допустим?

+ 5.5

Уменьшить потенциал поля (x0,y0). Запомнить координаты поля (x1,y1) с меньшим потенциалом.

5

 

C(y,x)=9; R(y1,x1)=i

6.1

x=x1; y=y1

 

4

Рис. 12 Детализация блока 5 Рис. 13. Детализация блока 6

Основы алгоритмизации

5.3

5.4.1

-

x0>0&y0>0&

5.2

x0<9&y0<9&

 

C(y0,x0)<9

 

+

 

5.5

Рис. 14. Детализация блока 5.4

 

5.4

 

 

C(y0,x0)=C(y0,x0)-1

5.5.1

5.2 -

C(y0,x0)<m

5.5.2

+

m=C(y0,x0) 5.5.3 y1=y0; x1=x0

Рис.15. Детализация блока 5.5

Методика решения задач

Проектирование

1.Постановка задачи.

2.Моделирование и формализация задачи.

3.Разработка алгоритма.

4.Тестирование алгоритма.

5.Программирование алгоритма.

6.Тестирование программы.

7.Эксплуатация программы и интерпретация результатов

Реализация

80-90%

10-20%

Методика решения задач

Начало

A,B

+

A=B

-

-A>B +

B=B-A

 

A=A-B

 

 

 

A

Конец

A 35

B14

A=B нет нет нет да

A>B

да

да нет

 

 

 

B

 

7

A

21

7

A

7

Рис. 16. Тестирование алгоритма Евклида

Методика решения задач

Листинг программы вычисления НОД

#include <iostream> using namespace std; void main(void) {

int a,b;

cout << "a = "; cin >> a;

cout << "b = "; cin >> b; while (a!=b) {

if (a>b) a-=b; else b-=a;

}

cout << "NOD=" << a << endl;

}

Соседние файлы в папке ПрограммированиеCPP