Лабораторная №6
.docxОдеський національний політехнічний університет
Інститут комп’ютерних систем
Кафедра інформаційних систем
Варіант №1
Лабораторна робота №6
По дисципліні “Алгоритмізація і програмування”
Тема:“ Програмування алгоритмів циклічної структури.”
Виконав:
Студент гр. АІ-171
Анищенко М.О.
Перевірили:
Шпиньковський О.А.
Одеса 2017
Мета роботи:
Набуття практичних навичок у створенні програм з циклами while, do…while.
Завдання 6.1:
Дано послідовність чисел
n1 = 1; n2 = 1 + 1/2; n3 = 1 + 1/2 + 1/3; n4 = 1 + 1/2 + 1/3 + 1/4;
i=1, 2, 3, …
1. Дано дійсне число а (a> 1)
1.1. Надрукуйте в стовпчик числа поки ni<=a;
1.2. Знайти суму всіх роздрукованих чисел;
1.3. Знайти перше ni з чисел і його номер і, якщо ni>a;
2. Дано дійсне число е (0.01 <= e<= 0.05)
2.1. Роздрукувати всі числа, для яких виконується умова: ni-ni-1 >=e;
2.2. Знайдіть перше число ni і його номер і, якщо ni-ni-1<=e.
Блок схема алгоритму:
Код програми:
#include <stdio.h>
#include <stdlib.h>
int main(){
float i = 1.0, n = 1.0, a, e, ns = 1;
printf("Enter a\n");
scanf("%f", &a);
while(n <= a) {
printf("n%.f = %.4f\n", i, n);
i++;
n += 1/i;
ns += n;
}
printf("Sum of ni = %.4f\n", ns - n);
printf("%.4f > a\n\n", n);
float ni = 1.5;
n = 1.0;
i = .0;
printf("Enter e\n");
scanf("%f", &e);
printf("n1 = %.4f\n", n);
while(ni - n >= e) {
printf("n%.f = %.4f\n", i, ni);
i++;
n = ni;
ni += 1/i;
}
printf("Ni = %.4f i = %.f ", n ,i );
return 0;
}
Приклади роботи:
a |
e |
1.9 |
0.03 |
Enter a
1.9
n1 = 1.0000
n2 = 1.5000
n3 = 1.8333
Sum of ni = 4.3333
2.0833 > a
Enter e
0.03
n1 = 1.0000
n0 = 1.5000
n1 = 2.5000
n2 = 3.0000
n3 = 3.3333
n4 = 3.5833
n5 = 3.7833
n6 = 3.9500
n7 = 4.0929
n8 = 4.2179
n9 = 4.3290
n10 = 4.4290
n11 = 4.5199
n12 = 4.6032
n13 = 4.6801
n14 = 4.7516
n15 = 4.8182
n16 = 4.8807
n17 = 4.9396
n18 = 4.9951
n19 = 5.0477
n20 = 5.0977
n21 = 5.1454
n22 = 5.1908
n23 = 5.2343
n24 = 5.2760
n25 = 5.3160
n26 = 5.3544
n27 = 5.3915
n28 = 5.4272
n29 = 5.4617
n30 = 5.4950
n31 = 5.5272
n32 = 5.5585
n33 = 5.5888
Ni = 5.5888 i = 34
Process returned 0 (0x0) execution time : 11.928 s
Press any key to continue.
a |
e |
2.6 |
0.05 |
Enter a
2.6
n1 = 1.0000
n2 = 1.5000
n3 = 1.8333
n4 = 2.0833
n5 = 2.2833
n6 = 2.4500
n7 = 2.5929
Sum of ni = 13.7429
2.7179 > a
Enter e
0.05
n1 = 1.0000
n0 = 1.5000
n1 = 2.5000
n2 = 3.0000
n3 = 3.3333
n4 = 3.5833
n5 = 3.7833
n6 = 3.9500
n7 = 4.0929
n8 = 4.2179
n9 = 4.3290
n10 = 4.4290
n11 = 4.5199
n12 = 4.6032
n13 = 4.6801
n14 = 4.7516
n15 = 4.8182
n16 = 4.8807
n17 = 4.9396
n18 = 4.9951
n19 = 5.0477
n20 = 5.0977
Ni = 5.0977 i = 21
Process returned 0 (0x0) execution time : 9.924 s
Press any key to continue.
Контрольні запитання:
-
Цикли з передумовою(WHILE), цикли з післяумовою(DO WHILE), цикли з лічильником(FOR)
-
Цикл з передумовою — цикл, що виконується доки істинна деяка умова, вказана перед його початком. Ця умова перевіряється до початку виконання тіла циклу, тому тіло може бути не виконане жодного разу (якщо умова з початку хибна). У більшості процедурних мов програмування здійснюється за допомогою інструкції while, звідси його друга назва — while-цикл.
-
-
Цикл з умовою while(true) буде виконуватизя нескінченно, якщо у його тілі відсутня точка виходу. Це може призведе до нескінченного виконання програми.
Висновки:
Під час виконання ЛР була створена програма, яка вираховує значення двох функцій доки результат цих функцій відповідає певній умові.
Під час написання програми не виникло помилок.