Void main()
{
int n;
cout << "n="; cin >> n;
int fact=1;
for (int i=1; i<=n;i++) fact*=i;
cout << "fact=" << fact << endl;
}
На відміну від попереднього прикладу тут початкове значення встановлюється рівним 1, (fact=1;), а оператор s+=i; замінений на fact*=i;. Замітимо, що вся конструкція програми залишилась без змін.
Приклад
3.
Обчислити суму
.
Тут потрібно обчислити суму членів знакозмінного ряду. Для зміни знаку ініціюємо додаткову змінну z=1, і на кожному кроці будемо міняти її знак на протилежний z=-z. Внісши у програму прикладу 1 вказані добавки, отримаємо наступну програму:
#include <iostream>
using namespace std;
Void main()
{
int n;
cout << "n=";cin >> n;
int s=0;
for (int i=1,z=1; i<=n; i++,z=-z) s+=z*i;
cout << "s=" << s << endl;
}
Приклад 4. Скласти програму для побудови таблиці відповідності між дюймами, футами та сантиметрами. Початкове значення першої величини, крок зміни цього значення та кількість рядків у таблиці вводяться з клавіатури.
Опишемо і введемо з клавіатури xp - початкове значення першої величини, h - крок, n - кількість рядків. Далі опишемо другу і третю величини, та ініціюємо першу величину початковим її значенням. На завершення організовуємо арифметичний цикл, де параметр циклу міняється від 1 до n. В тілі циклу обчислюються друга та третя величина, та всі три величини у виді рядка виводяться на екран.
#include <iostream>
using namespace std;
Void main()
{
float xp,h; int n;
cout << "xp="; cin >> xp;
cout << "h="; cin >> h;
cout << "n="; cin >> n;
float y,z,x=xp;
for (int i=1;i<=n;i++,x+=h)
{
y=2.54*x;
z=4*y;
cout << x << ' ' << y << ' ' << z << endl;
}
}
Якщо з клавіатури задати xp=1,h=1, n=3,отримаємо на екрані:
1 2.54 10.16
2 5.08 20.32
3 7.62 30.48
Приклад
5. Протабулювати
функцію
.
на інтервалі [a;b] з кроком h. Знайти серед
обчислених значень найбільше, та вказати
значення аргументу при якому воно
досягається.
Спочатку організуємо просте табулювання функції, без знаходження максимального значення:
#include <iostream>
#include <cmath>
using namespace std;
Void main()
{
float a,b,h;
cout << "a="; cin >> a;
cout << "b="; cin >> b;
cout << "h="; cin >> h;
for (float x=a,y;x<=b;x+=h)
{
y=x*sin(x);
cout << x << " " << y << endl;
}
}
Добавимо до даного коду програми оператори для знаходження максимального значення y. Перед циклом ініціалізуємо ym та xm, а в циклі добавимо оператор if. Після циклу виведемо xm та ym. Наведемо новий код програми:
float ym=a*sin(a),xm=a;.
#include <iostream>
#include <cmath>
using namespace std;
Void main()
{
float a,b,h;
cout << "a="; cin >> a;
cout << "b="; cin >> b;
cout << "h="; cin >> h;
float ym=a*sin(a),xm=a;
for (float x=a,y;x<=b;x+=h)
{
y=x*sin(x);
cout << x << " " << y << endl;
if (y>ym) ym=y,xm=x;
}
cout << "xm=" << xm << " ym=" << ym << endl;
}
Два оператори, які потрібно виконати у операторі розгалуження if, ми розділили комою. Це альтернатива блоку {ym=y;xm=x;} .
Приклад 6. Скласти програму для знаходження кількості різних трикутників сторони яких дорівнюють цілим числам меншим за число n.
Для сторін трикутника введемо цілі змінні a,b,c (a>=b>=c). Для підрахунку кількості трикутників, що задовольняють умову задачі, ініціюємо змінну int k=0. Організуємо потрійний цикл по всім сторонам трикутника, і провірятимемо умову, що більша сторона менша за суму двох інших сторін трикутника. При виконанні умови виконуємо інкремент k++. Наведемо текст програми:
#include <iostream>
using namespace std;
