Лабораторная №5
.docxОдеський національний політехнічний університет
Інститут комп’ютерних систем
Кафедра інформаційних систем
Варіант №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.
Контрольні запитання:
-
Цикли з передумовою(WHILE), цикли з післяумовою(DO WHILE), цикли з лічильником(FOR)
-
Цикл з передумовою — цикл, що виконується доки істинна деяка умова, вказана перед його початком. Ця умова перевіряється до початку виконання тіла циклу, тому тіло може бути не виконане жодного разу (якщо умова з початку хибна). У більшості процедурних мов програмування здійснюється за допомогою інструкції while, звідси його друга назва — while-цикл.
-
-
Цикл з умовою while(true) буде виконуватизя нескінченно, якщо у його тілі відсутня точка виходу. Це може призведе до нескінченного виконання програми.
Висновки:
При виконанні лабораторної роботи були створені такі програми:
-
Програма що перевіряє чи є введений ряд чисел впорядкованим за зростанням
-
Програма що вираховує значення функції на кожному етапі при збільшенні змінної
Єдиною проблемою при виконанні ЛР була відсутність типу змінної bool в мові C, вона була вирішена завдяки команді typedef enum { false, true } bool;.