Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Po_12S.docx
Скачиваний:
4
Добавлен:
11.09.2019
Размер:
127.85 Кб
Скачать

Програма

// Програма будує криву, задану параметричним рiвнянням

#include<iostream.h>

#include<conio.h>

#include<math.h>

#include<dos.h>

int main()

{

int X_ek, Y_ek, // Екраннi координати

i, n; // Змiнна циклу i

// Коефiцiєнти рiвнянь, що

float a, b, // задаються користувачем

X_dek, Y_dek, // Обчиcлювaнi координати тoчки

t, // Формальний параметр

s, s1;

clrscr();

cout<<"\nЦя програма будує епiциклоїду, задану параметричним рiвнянням:";

cout<<"\n x(t) = (a+b)·cos(t)-a·cos((a+b)·t/a)";

cout<<"\n y(t) = (a+b)·sin(t)-a·sin((a+b)·t/a),";

cout<<"\n де, a i b - вводяться;";

cout<<"\t i t належить дiапазону [0,2·Pi].";

cout<<"\n----------------------------------------------\n";

cout<<"\nДля початку побудови кривої введiть коефiцiєнти a, b i n:";

cout<<"\n a = ";

cin>>a;

cout<<"\n b = ";

cin>>b;

cout<<"\n n = ";

cin>>n;

cout<<"\n\n Для продовження натиснiть клавiшу ""ENTER""";

getch();

clrscr(); // Очищення экрана (для виводу кривої)

for (i=1; i<25; i++) // Побудова коорди-

{ gotoxy(39,i); // натної площини (y та x)

cout<<"│";

}

for (i=1; i<80;i++)

{ gotoxy(i,12);

cout<<"-";

}

gotoxy(39,12);

cout<<"+"; // Виведення центра координат

getch(); // Призупинка для огляду.

t=0; // Початкове значення параметра s=a+b; // Допомiжнi обчислення s i s1

s1=s/a;

do // Початок циклу "Повторювати".

{

X_dek=s*cos(t)-a*cos(s1*t); // Обчислення Хдек.

Y_dek=s*sin(t)-a*sin(s1*t); // Обчислення Yдек.

X_ek=(X_dek+40); // Переведення координат точки в

Y_ek=(12-Y_dek); // екранну систему координат

// (з округленням результатiв

// до цiлих значень integer).

if ((X_ek>0)&&(X_ek<=80)&& // Перевiрка на вихiд отриманих

(Y_ek>0)&&(Y_ek<=25)) // координат точки

{ // за межi екрана

// Якщо не виходять, то

gotoxy(X_ek,Y_ek); // - установлення курсора в точку

cout<<"*"; // - позначення точки зiрочкою

}

t+=0.04; // Нарощення параметра

delay(50); // Затримка на 50 мс для

} // спостереження процесу

while (t<M_PI*n); // Межа циклу ("До отримання ..."

getch(); // Призупинка для огляду результату

return 0;

}

Результати виконання завдання 7-3:

Вигляд першої сторінки екрана:

Ця програма будує епіциклоїду, задану параметричним рівнянням:

x(t) = (a+b) ·cos(t)-a·cos((a+b)· t/a);

y(t) = (a+b)·sin(t)-a·sin((a+b) ·t/a),

де, a i b - вводяться;

а t належить діапазону [0,2·Pi].

----------------------------------------------

Для початку побудови кривої введіть коефіцієнти a, b і n:

a= 3

b= 9

n= 6

Для продовження натисніть клавішу "ENTER" ');

Друга сторінка екрана:

|

| ****

*** ***

*** | **

** | **

******** | **

** | *

** | **

** | *

––––––––––––––––––––**––––––––––––––––-+––––––––––––**––––––––––––––––––––––––

* | **

** | *

** | *

** | *

****** | *

** | **

** | **

|**********

Завдання 7-3 (варіант №0 з побудовою таблиці координат кривої)

Крива задана системою параметричних рівнянь:

де -

Побудувати на екрані таблицю значень залежності координат точок кривої x і y від параметра t (режим роботи дисплею – текстовий).

Для виведення в таблицю інформації про 100 точок таблиця буде мати 20 рядків по 15 колонок.

Алгоритм побудови таблиці

  1. Очищення екрана.

  2. Виведення на екран анотації (короткого опису програми).

  3. Виведення запрошення до вводу інформації.

  4. Введення значень коефіцієнтів a, b, та n .

  5. При зупинка для огляду вхідної інформації.

  6. Призначення параметру початкового значення (t=0).

  7. Призначення змінній і номера рядка екрана, в який виводиться перший рядок таблиці (і=5).

  8. Призначення змінній j початкового значення j= 0 (Для фіксованого зміщення чергової трійки колонок таблиці).

  9. Очищення попередньої сторінки і виведення на екран бланку таблиці.

  10. Повторювати:

    1. Обчислення координат х і у за формулами.

    2. Установити курсор в позицію j*15+2 і-го рядка

    3. Вивести значення t .

    4. Установити курсор в позицію j*15+8 .

    5. Вивести х.

    6. Установити курсор в позицію j*15+13 .

    7. Вивести у.

    8. Наростити значення параметра.

    9. Збільшити значення номера рядка на 1.

    10. Перевірити номер рядка, якщо номер рядка перевищив кількість рядків таблиці, то установити початковий рядок таблиці і змістити все виведення на три колонки вправо.

    11. Перевірити умову повторення тіла циклу.

11. Призупинка для розгляду результатів. Вихід із програми.

Програма

#include<iostream.h>

#include<conio.h>

#include<math.h>

#include<dos.h>

#include<stdio.h>

int main()

{

int X_ek, Y_ek, // Екраннi координати

i,j, n; // Змiнна циклу i

// Коефiцiєнти рiвнянь, що

float a, b, // задаються користувачем

X_dek, Y_dek, // Обчиcлювaнi координати тoчки

t, // Формальний параметр

s, s1;

clrscr();

cout<<"\nЦя програма будує tablycu, задану параметричним рiвнянням:";

cout<<"\n x(t) = (a+b)·cos(t)-a·cos((a+b)·t/a)";

cout<<"\n y(t) = (a+b)·sin(t)-a·sin((a+b)·t/a),";

cout<<"\n де, a i b - вводяться;";

cout<<"\t i t належить дiапазону [0,2·Pi].";

cout<<"\n----------------------------------------------\n";

cout<<"\nДля початку побудови кривої введiть коефiцiєнти a, b i n:";

cout<<"\n a = ";

cin>>a;

cout<<"\n b = ";

cin>>b;

cout<<"\n n = ";

cin>>n;

cout<<"\n\n Для продовження натиснiть клавiшу ""ENTER""";

getch();

clrscr(); // Очищення экрана (для виводу tabl кривої)

t=0; i=5; j=0;

cout<<" Таблиця результатiв виконання завдання\n";

cout<<"┌─┬──┬──┬─┬─┬──┬─┬──┬──┬─┬─┬──┬─┬──┬──┐";

cout<<"│ t │ x │ y │ t │ x │ y │ t │ x │ y │ t │ x │ y │ t │ x │ y │";

cout<<"├─┼──┼──┼─┼─┼──┼─┼──┼──┼─┼──┼──┼─┼─┼──┤";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │";

cout<<"└─┴──┴──┴─┴─┴──┴─┴──┴──┴─┴─┴──┴─┴──┴───";

s=a+b;

s1=s/a; // Допомiжнi обчислення s i s1

do // Початок циклу "Повторювати".

{

X_dek=s*cos(t)-a*cos(s1*t); // Обчислення координати Хдек.

Y_dek=s*sin(t)-a*sin(s1*t); // Обчислення Yдек.

gotoxy(j*15+1+j,i); // Позицiонування курсора

printf("%2.2f",t); // Виведення значень параметра t

gotoxy(j*15+6+j,i); // Позицiонування*c`a.` Write(round(X_dek):2); // Виведення координати х

printf("%4.2f",X_dek); // Виведення координати у

gotoxy(j*15+12+j,i); // Позицiонування курсора

printf("%4.2f",Y_dek); // Виведення координати у

t=t+M_PI/100*2; // Прирощення параметра t

i++; // Збiльшення на 1 змiнної i

if (i>24)

{i=5; j++;} // Перехiд на слiдуючу колонку

// таблицi

}

while (t<n*M_PI);

getch();

return 0; // Призупинка для огляду результату

}

Результати виконання даної програми:

Вигляд першої сторінки екрана:

Ця програма будує епіциклоїду, задану параметричним рівнянням:

x(t) = (a+b) ·cos(t)-a·cos((a+b)· t/a);

y(t) = (a+b)·sin(t)-a·sin((a+b) ·t/a),

де, a i b - вводяться;

а t належить діапазону [0,2·т·Pii].

----------------------------------------------

Для початку побудови кривої введіть коефіцієнти a, b і n:

a= 3

b= 9

Для продовження натисніть клавішу "ENTER" ');

Друга сторінка екрана:

Таблиця результатів виконання завдання

t

x

y

t

x

y

t

x

y

t

x

y

t

x

y

0.00

15

0

1.26

5

24

2.51

-12

15

3.77

-12

-15

5.03

5

-24

0.06

15

0

1.32

2

24

2.58

-14

15

3.83

-11

-15

5.09

7

-24

0.13

15

0

1.38

0

23

2.64

-15

14

3.90

-10

-14

5.15

9

-23

0.19

16

0

1.45

-2

22

2.70

-17

13

3.96

-9

-14

5.22

12

-22

0.25

17

1

1.51

-4

21

2.76

-19

12

4.02

-8

-14

5.28

14

-21

0.31

17

1

1.57

-5

20

2.83

-21

11

4.08

-8

-13

5.34

16

-19

0.38

18

2

1.63

-6

19

2.89

-22

9

4.15

-8

-13

5.40

17

-17

0.44

19

4

1.70

-7

17

2.95

-23

7

4.21

-8

-13

5.47

19

-15

0.50

20

5

1.76

-7

16

3.02

-24

5

4.27

-8

-13

5.53

20

-13

0.57

20

7

1.82

-8

15

3.08

-25

2

4.34

-8

-14

5.59

20

-11

0.63

20

9

1.88

-8

14

3.14

-25

0

4.40

-8

-14

5.65

20

-9

0.69

20

11

1.95

-8

14

3.20

-25

-2

4.46

-8

-15

5.72

20

-7

0.75

20

13

2.01

-8

13

3.27

-24

-5

4.52

-7

-16

5.78

20

-5

0.82

19

15

2.07

-8

13

3.33

-23

-7

4.59

-7

-17

5.84

19

-4

0.88

17

17

2.14

-8

13

3.39

-22

-9

4.65

-6

-19

5.91

18

-2

0.94

16

19

2.20

-8

13

3.46

-21

-11

4.71

-5

-20

5.97

17

-1

1.01

14

21

2.26

-8

14

3.52

-19

-12

4.78

-4

-21

6.03

17

-1

1.07

12

22

2.32

-9

14

3.58

-17

-13

4.84

-2

-22

6.09

16

0

1.13

9

23

2.39

-10

14

3.64

-15

-14

4.90

0

-23

6.16

15

0

1.19

7

24

2.45

-11

15

3.71

-14

–15

4.96

2

-24

5.03

5

-24

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