|
Лабораторна робота № 10.
Тема: Оператор циклу з лічильником.
I. Рекурентні співвідношення.
1. Послідовність чисел а0, а1, а2... утворюється згідно з законом: а0= 1; ak = kak-1 + 1/k (k= 1, 2,...).
Дано натуральне число n. Отримати a1, а2...,аn.
2. Послідовність Фібоначчі утворюється так: перший і другий члени послідовності дорівнюють 1, кожен наступний дорівнює сумі двох попередніх (1, 1, 2, 3, 5, 8, 13,...). Дано натуральне число n (n >= 3).
а) Знайти k-й член послідовності Фібоначчі.
б) Отримати перші n членів послідовності Фібоначчі.
в) Отримати суму перших n членів послідовності Фібоначчі.
3. Розглянемо послідовність, утворену дробами: 1/1, 2/1, 3/2,..., у якій чисельник (знаменник) наступного члена послідовності отримується складанням чисельників (знаменників) двох попередніх членів. Чисельники двох перших дробів дорівнюють 1 і 2, знаменники 1 і 1.
а) Знайти к-й член цієї послідовності.
б) Отримати перші n членів цієї послідовності.
в) Отримати суму перших n членів цієї послідовності.
4. Послідовність чисел v0, v1, v2... утворюється згідно із законом: v1 = v2 = 0; v3=l,5.
Дано натуральне число n (n >= 4). Отримати vn.
5. Одноклітинна амеба кожні 3 години ділиться на 2 клітки. Визначити, скільки кліток буде через 3, 6, 9,..., 24 години, якщо спочатку була одна амеба.
6. Громадянин 1 березня відкрив рахунок у банку, вклавши 1000 крб. Через кожен місяць розмір вкладу збільшується на 2% від наявної суми. Визначити:
а) приріст суми вкладу за перший, другий...., десятий місяць;
б) суму вкладу через три, чотири,..., дванадцять місяців.
7. Почавши тренування, лижник в перший день пробіг 10 км. Кожен наступний день він збільшував пробіг на 10% від пробігу попереднього дня. Визначити:
а) пробіг лижника за другий, третій,...., десятий день тренувань;
б) яку сумарну дорогу він пробіг за перші 7 днів тренувань.
8. У деякому році (назвемо його умовно першим) на ділянці в 100 гектар середня врожайність ячменю склала 20 центнерів з гектара. Після цього щороку площа ділянки збільшувалася на 5%, а середня врожайність на 2%. Визначити:
а) який урожай буде зібраний за перші шість років;
б) площу ділянки в четвертий, п'ятий..., сьомий рік;
в) врожайність за другий, третій..., восьмий рік.
9. Визначити сумарний об'єм в літрах дванадцяти вкладених один в одного куль зі стінками завтовшки 5 мм. Внутрішній діаметр внутрішньої кулі рівний 10 см. Прийняти, що кулі вкладаються один в одного без зазорів.
10. Знайти суму 22+ 23+ 24+... + 210. Операцію піднесення до степені не використовувати.
11. Дано дійсне число а і натуральне число n. Обчислити значення a1, a2, a3, …, an. Операцію піднесення до степені не використовувати.
12. Знайти суму 12 + 22 - 32 + 42 -... + 102. Умовного оператора не використовувати.
II. Розрахунок площі під кривою.
13. Обчислити приблизно площу однієї арки синусоїди.
14. Обчислити приблизно площу фігури, сформованої кривою y = 0.3(x-1) 2+4, віссю абсцис і двома прямими x = 1 і x = 3.
15. Вычислить приближенно площадь фигуры, образованной у = 0.5(х+1)2 + 2, осью абсцисс, осью ординат и прямой x = 2.
III. Різні завдання.
16. Дани натуральні числа x і у. Обчислити твір x*у, використовуючи лише операцію складання. Завдання вирішити двома способами.
17. Скласти програму для розрахунку факторіалу натурального числа n (факторіал числа n! = 1*2 *3*... *n).
18. У деяких мовах програмування (наприклад, в Паскале) не передбачена операція піднесення до степені. Скласти програму для розрахунку степені n дійсного числа а (n — натуральне число).
19. Обчислити значення виразу ((...(202 - 192)2 - 182)2 -... - 12)2.
20. Дано пятизначное число. Найти число, получаемое при прочтении его цифр справа налево.
21. Скласти програму зведення натурального числа в квадрат, враховуючи наступну закономірність:
12=1
22 = 1 + 3
32 = 1 + 3 + 5
42 =1+3 + 5 + 7
…
n2 = 1 + 3 + 5 + 7 + 9 +... + (2n -1)
22. Знайти суму 12+22+32 +... + 102. Операцію піднесення до степені не використовувати, а врахувати особливості здобуття квадрата натурального числа, відмічене в попередньому завданні.
23. Скласти програму піднесення натурального числа до третьої степені, враховуючи наступну закономірність:
13 = 1
23 = 3 + 5
33 = 7 + 9 + 11
43 = 13 + 15 + 17 + 19
53 = 21+ 23 + 25 + 27 + 29
24. Обчислити суму 1! + 2! + 3! +... + n!, де k! = 1*2*3*... *k (значення n вводиться з клавіатури; 1 < n < 10).
25. Обчислити суму , де k! = 1*2*3*... *k (значення n вводиться з клавіатури; 1 < n < 10).
26. Обчислити суму , де k! = 1*2*3*... *k (значення n вводиться з клавіатури; 1 < n < 10).
27. Обчислити суму
28. Дано натуральне число n. Обчислити:
а)
б) , n доданків
29. Дано шестизначне число. Знайти суму його цифр. Величини для зберігання всіх шести цифр числа не використовувати.
30. Дано натуральне число. Знайти суму його останніх n цифр. Величини для зберігання всіх n останніх цифр числа не використовувати.
31. Обчислити: 32.
32. Дано дійсне число х!=0. Обчислити:
33. Побудувати таблицю відповідності між унціями та грамами, якщо 1 унція = 28,353495 г. Початкове значення кількості унцій (uncia), крок зміни (krok) цього значення та кількість рядків (kil) у таблиці задати самостійно у режимі діалогу.
34. Побудувати таблицю відповідностей між мірами. Початкове значення міри, крок зміни цього значення та кількість рядків у таблиці (10-15) задати самостійно у режимі діалогу.
1 драхм = 1.77185 г = 0.06249 унцій
35. Дано натуральне число n, дійсне число x. Обчислити
36. Дано натуральне число n. Обчислити
37. Дано натуральне число n. Обчислити суму 1! + 2! + 3! + … + n!.
38. Обчислити
У основі розглянутих раніше алгоритмічних прийомів накопичення суми і добутку лежить фундаментальна ідея про те, що результат обчислень на кожному кроці циклу повинен залежати від результату обчислень на попередньому кроці. Узагальненим математичним вираженням цієї ідеї є рекурентні співвідношення.
1.
double a=1;
int n;
cin >> n;
for (int i=1; i<=n; i++)
{
a=i*a+1./i;
cout << "a" << i << '=' << a << endl;
}
2. a).
double a=1, b=1, c;
int k;
cin >> k;
for (int i=3; i<=k; i++)
{
c=a+b;
a=b;
b=c;
}
cout << "c" << '=' << c << endl;
2. b).
double a=1, b=1, c;
int k;
cin >> k;
for (int i=3; i<=k; i++)
{
c=a+b;
a=b;
b=c;
cout << "c" << '=' << c << endl;
}
2. c).
int a=1, b=1, c, sum=2;
int n;
cin >> n;
for (int i=3; i<=n; i++)
{
c=a+b;
sum+=c;
a=b;
b=c;
}
cout << "sum" << '=' << sum << endl;
5.
int a=1, s=1;
for (int i=3; i<=12; i+=3)
{ a= a*2;
s+=a;
}
cout << a << endl << s << endl;
12.
int a=1, s=0;
for (int i=1; i<=10; i++)
{
a*=(-1);
s+=a*i*i;
cout << "i="<< i << " a=" <<a << endl;
cout << s << endl;
}
13.
float x, y, s=0, h;
cin >> h;
for (x=0; x<=3.15; x+=h)
{
y = sin(x);
s+=y*h;
cout << "s=" << s << endl;
}
14.
float x, y, s=0, h;
cin >> h;
for (x=1; x<=3; x+=h)
{
y = 0.3*(x-1)*(x-1)+4;
s+=y*h;
}
cout << "s=" << s << endl;
19.
float x, y, s=20*20;
for (x=19; x>=1; x--)
{
y = x*x;
s-=y;
cout << "s=" << s << endl;
s=s*s;
}
20.
float d=1E4;
int number, revers=0, temp;
cin >> number;
for (int i=1; i<=5; i++)
{
temp=number%10;
revers+=temp*d;
number/=10;
d/=10;
cout << "r=" << revers << endl;
}
21.
float n, s=0;
cin >> n;
for (int i=1; i<=n; i++)
s+=2*i-1;
cout << "s=" << s << endl;
22.
float n, s=0, sum=0;
cin >> n;
for (int i=1; i<=n; i++)
{
s+=2*i-1;
cout << "s=" << s << endl;
sum+=s;
}
cout << "sum=" << sum << endl;
23.
float n, s, sum=0;
cin >> n;
s=n*(n-1)+1;
for (int i=1; i<=n; i++)
{
sum+=s;
s+=2;
}
cout << sum << endl;
24.
int n, f=1, s=0;
cin >> n;
for (int i=1; i<=n; i++)
{
f*=i;
s+=f;
}
25.
int n, f=1;
float s=1;
cin >> n;
for (int i=1; i<=n; i++)
{
f*=i;
s+=1./f;
}
26.
int n, f=1;
float s=1, x, z;
cin >> n;
cin >> x;
z=x;
for (int i=1; i<=n; i++)
{
f*=i;
cout << "f=" << f << endl;
cout << "z=" << z << endl;
s+=z/f;
z*=x;
cout << "s=" << s << endl;
}
27.
float s=0;
for (int i=50; i>=1; i--)
s=sqrt(i+s);
28.
а)
float s=0, sum=0;
int n;
cin >> n;
for (int i=1; i<=n; i++)
{
s+=sin(i);
sum+=1/s;
}
б)
double sum=0;
int n, number;
cin >> n >> number;
for (int i=1; i<=n; i++)
{
sum+=sqrt(number+sum);
cout << "sum=" << sum << endl;
cout << endl;
}
в)
double ch=0, zn=0, sum=0;
int n;
cin >> n;
for (int i=1; i<=n; i++)
{
ch+=cos(i);
zn+=sin(i);
sum+=ch/zn;
}
г)
double sum=0;
int n;
cin >> n;
for (int i=n; i>=1; i--)
sum+=sqrt(3*i+sum);
29.
double sum=0, c;
int n;
cin >> n;
for (int i=1; i<=6; i++)
{
c=n%10;
sum+=c;
n/=10;
}
30.
double sum=0;
int n, m, c;
cin >> n >> m;
for (int i=1; i<=n; i++)
{
c=m%10;
sum+=c;
m/=10;
}
31.
double d,sum;
d = 103;
sum = d-2+1/d;
for (int i = d-4; i >= 1; i -=2)
{
sum = i + 1 / sum;
}
cout<<"result:"<<1/sum<<endl;
32.
double sum;
int x;
cout<<"x:";
cin>>x;
sum = x*x + 256/(x*x);
for (int m = 128; m >= 2; m = m/2)
{
sum = x*x + m / sum;
}
cout<<"result:"<<x/sum<<endl;
33. // Програма відповідності мір
#include <iostream.h>
#include <iomanip.h>
int main()
{
const float one_uncia = 28.353495;
float uncia, gram, krok;
int kil;
cout << "Введіть початкове значення унцій, \n"
<< " крок зміни та кількість рядків у таблиці\n";
сіn >> uncia >> krok >> kil;
cout << "_________________________" << "\n";
cout << " Унції Грами " << "\n";
cout << "_________________________" << "\n";
for (int n = 1; n <= kil; n++)
{
gram = one_uncia * uncia;
cout << setw(5) << uncia << setw(15) << gram << endl;
uncia += krok;
}
cout << "_________________________" << "\n";return 0;}
Дата добавления: 2015-08-29; просмотров: 39 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
Лосев А.Ф. Эстетика Возрождения 4 страница | | | Цель работы: Освоить способы регулирования скорости вращения якоря двигателя Освоить способы испытания двигателя методом непосредственной нагрузки. |