Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_роботы(программирование)_5_6_7.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
98 Кб
Скачать
☆

Int main(){

int i;

i = 1;

for ( ; ; ) {

cout << "i = " << i << endl;

if ( ++i > 10 )

break;

}

}

 

Приклад програми: знаходження суми ряду 1/1+1/2+1/3+… Суму будемо знаходити двома способами: з заданою точністю і підсумовуванням певної кількості елементів ряду.

 

#include <iostream>

using namespace std;

Int main(){

double s, t, e;

int i;

s = 0;

e = 1e-5;

i = 1;

for ( t = 1/ i; t >= e; t = 1. / i ) {

s += t;

i++;

}

cout << s << endl;

s = 0;

t = 1;

for ( i = 1; i <= 100000; i++ ) {

t = 1. / i;

s += t;

}

cout << s << endl;

}

 

Недоліком цієї програми можна вважати ініціалізацію змінних в різних місцях програми, так само, як і збільшення параметрів циклу. В таких випадках зручно використовувати операцію «кома». Вона має найнижчий пріоритет серед операцій мови С++ і призначена для об’єднання декількох послідовно записаних виразів в один загальний вираз. Вирази, об’єднані з допомогою операції кома, виконуються зліва на право, значенням загального виразу стає значення самого правого під виразу.

Знайдемо значення факторіалу з допомогою оператора for.

 

#include <iostream>

using namespace std;

Int main(){

int f, i, n;

cin >> n;

f = 1;

for (i = 2; i <= n; ++i )

f *= i;

cout << f << endl;

}

 

Знайдемо суму ряду 1/1!+1/2!+1/3!+1/4!+1/5!+…

 

#include <iostream>

using namespace std;

Int main(){

int f, i, n, j;

double s;

cin >> n; // кількість елементів ряду

for ( s = 0, i = 1; i <= n; ++i ) {

for ( f = 1, j = 2; j <= i; ++j )

f *= j;

cout << s << " + 1 / " << f << endl;

s += 1. / f;

}

cout << s << endl;

}

 

Внутрішнього циклу для обчислення факторіала можна позбавитись, якщо зберігати значення факторіалу, знайдене для попереднього елементу ряду.

 

#include <iostream>

using namespace std;

Int main() {

int f, i, n, j;

double s;

cin >> n; // кількість елементів ряду

for ( s = 0, i = 1, f = 1; i <= n; ++i, f *= i ) {

cout << s << " + 1 / " << f << endl;

s += 1. / f;

}

cout << s << endl;

}

 

Схожий метод можна використовувати для програм, в яких необхідно отримати послідовність виду 1, -1, 1, -1, 1, … Зробимо це двома способами: з допомогою піднесення до степеня n числа -1 і з допомогою множення попереднього значення на -1.

 

#include <iostream>

using namespace std;

Int main(){

int i, n = 10, t;

for ( i = 0; i < n; i++ )

cout << i << " : " << pow( -1., i ) << endl;

for ( i = 0, t = 1; i < n; i++, t *= -1 )

cout << i << " : " << t << endl;

}

 

Знайти максимальне значення функції  на інтервалі від 0 до Пі. Графік функції представлений на мал. 2. Вивести на екран таблицю значень цієї функції з заданим користувачем кроком зміни х.

 

Мал. 2 Графік функції 

 

#include <iostream>

using namespace std;

Int main(){

const double PI = 3.14159;

const double X1 = 0.;

const double X2 = PI;

double xmax, fmax, d, t, f;

cin >> d;

xmax = X1;

fmax = sin( pow( X1, 2 ) ) + pow( cos( X1 ), 2 );

for ( t = X1; t <= X2; t += d ) {

f = sin( pow( t, 2 ) ) + pow( cos( t ), 2 );

cout << t << "\t" << f << endl;

if ( fmax < f ) {

xmax = t;

fmax = f;

}

}

cout << xmax << " : " << fmax << endl;

}

 

Знайти перше нульове значення функції  для значень х більше нуля.

 

#include <iostream>

using namespace std;

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