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

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

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

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

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

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

Варіант №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.

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

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

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

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

Висновки:

Під час виконання ЛР була створена програма, яка вираховує значення двох функцій доки результат цих функцій відповідає певній умові.

Під час написання програми не виникло помилок.