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

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

.docx
Скачиваний:
35
Добавлен:
14.12.2018
Размер:
109.66 Кб
Скачать

Одеський національний політехнічний університет

Інститут комп’ютерних систем

Кафедра інформаційних систем

Варіант №1

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

По дисципліні “Алгоритмізація і програмування”

Тема:“ Програмування алгоритмів циклічної структури.”

Виконав:

Студент гр. АІ-171

Анищенко М.О.

Перевірили:

Шпиньковський О.А.

Одеса 2017

Мета роботи:

Набуття практичних навичок у створенні програм з циклами while, do…while.

Завдання 5.1:

З клавіатури вводяться дійсні числа. Ознака кінця введення – 0. Визначити, чи є послідовність що вводиться впорядкованою за зростанням.

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

Код програми:

#include <stdio.h>

#include <stdlib.h>

typedef enum { false, true } bool;

int main(){

bool res = true;

float a,b;

printf("Enter numbers:\n");

scanf("%f", &a);

while(a){

b = a;

scanf("%f", &a);

if(!a)

break;

if(res)

if( !(a >= b) )

res = false; }

if(res)

printf("Sequence sorted in ascending order\n");

else

printf("Sequence NOT sorted in ascending order\n");

return 0;}

Приклад виконання:

Вхідні данні

2 3 5 8 0

Enter numbers:

2

3

5

8

0

Sequence sorted in ascending order

Process returned 0 (0x0) execution time : 6.164 s

Вхідні данні

-1 2 4 2 3 5 0

Enter numbers:

-1

2

4

2

3

5

0

Sequence NOT sorted in ascending order

Process returned 0 (0x0) execution time : 13.435 s

Завдання 5.2:

Скласти програму табулювання функції f (x), де х змінюється з кроком h. Значення a вводити з клавіатури.

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

Код програми:

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main()

{

float a, Fx, x = 0.03, xk = 0.76, h = 0.03;

printf("Enter a\n");

scanf("%f", &a);

while(x <= xk)

{

Fx = (sqrt(pow(x,3) + 10.0)/(pow(x,2) - pow(a,3)))*a;

printf("f(%.2f) = %.2f\n", x, Fx);

x+=h;

}

return 0;

}

Приклад виконання:

A

1

Enter a

1

f(0.03) = -3.17

f(0.06) = -3.17

f(0.09) = -3.19

f(0.12) = -3.21

f(0.15) = -3.24

f(0.18) = -3.27

f(0.21) = -3.31

f(0.24) = -3.36

f(0.27) = -3.41

f(0.30) = -3.48

f(0.33) = -3.56

f(0.36) = -3.64

f(0.39) = -3.74

f(0.42) = -3.85

f(0.45) = -3.98

f(0.48) = -4.13

f(0.51) = -4.30

f(0.54) = -4.50

f(0.57) = -4.73

f(0.60) = -4.99

f(0.63) = -5.31

f(0.66) = -5.68

f(0.69) = -6.13

f(0.72) = -6.69

f(0.75) = -7.38

Process returned 0 (0x0) execution time : 2.505 s

Press any key to continue.

A

-0.3

Enter a

-0.3

f(0.03) = -34.00

f(0.06) = -31.00

f(0.09) = -27.03

f(0.12) = -22.92

f(0.15) = -19.17

f(0.18) = -15.98

f(0.21) = -13.35

f(0.24) = -11.22

f(0.27) = -9.51

f(0.30) = -8.12

f(0.33) = -6.99

f(0.36) = -6.07

f(0.39) = -5.31

f(0.42) = -4.68

f(0.45) = -4.15

f(0.48) = -3.71

f(0.51) = -3.33

f(0.54) = -3.00

f(0.57) = -2.72

f(0.60) = -2.48

f(0.63) = -2.27

f(0.66) = -2.08

f(0.69) = -1.92

f(0.72) = -1.77

f(0.75) = -1.64

Process returned 0 (0x0) execution time : 7.659 s

Press any key to continue.

Контрольні запитання:

  1. Цикли з передумовою(WHILE), цикли з післяумовою(DO WHILE), цикли з лічильником(FOR)

  2. Цикл з передумовою — цикл, що виконується доки істинна деяка умова, вказана перед його початком. Ця умова перевіряється до початку виконання тіла циклу, тому тіло може бути не виконане жодного разу (якщо умова з початку хибна). У більшості процедурних мов програмування здійснюється за допомогою інструкції while, звідси його друга назва — while-цикл.

  3. Цикл з умовою while(true) буде виконуватизя нескінченно, якщо у його тілі відсутня точка виходу. Це може призведе до нескінченного виконання програми.

Висновки:

При виконанні лабораторної роботи були створені такі програми:

  1. Програма що перевіряє чи є введений ряд чисел впорядкованим за зростанням

  2. Програма що вираховує значення функції на кожному етапі при збільшенні змінної

Єдиною проблемою при виконанні ЛР була відсутність типу змінної bool в мові C, вона була вирішена завдяки команді typedef enum { false, true } bool;.