- •Алгоритмічні мови та програмування Методичні вказівки
- •Алгоритмічні мови та програмування Методичні вказівки
- •03056, Київ, вул..Політехнічна, 12, корп. 17
- •Практичне заняття № 1 Системи числення та формати зображення чисел у еом Завдання
- •Практичне заняття № 2
- •Завдання
- •Додаток 1 Пріоритети та асоціативність операцій
- •Примітка
- •Опис операцій
- •4.Операції зсувів
- •8.Умовний вираз
- •9. Операції та вирази присвоювання
- •10.Складене присвоювання
- •11. Операція „кома” або операція послідовного обчислення
- •Додаток 2
- •Практичне заняття № 3 Вивчення умовних переходів Завдання
- •Список завдань
- •Практичне заняття № 4 Вивчення циклічних обчислювальних процесів Завдання
- •Практичне заняття № 5 Розробка алгоритмів та їх графічне зображення Завдання
- •Практичне заняття № 6 Розрахунок значень числових рядів Завдання
- •Приклад виконання завдання
- •Практичне заняття № 8 Робота з функціями Завдання
- •Приклад виконання завдання
- •Опис алгоритму і програми
- •Практичне заняття № 9 Робота з цілими числами Завдання
- •Додаток
Практичне заняття № 6 Розрахунок значень числових рядів Завдання
1. Розробити алгоритм розрахунку значення суми заданого ряду (таблиця )
а) із заданою кiлькiстю членiв ряду (значення ввести з клавiатури),
б) із заданою точнiстю Е (значення ввести з клавiатури).
2. Написати програму.
Таблица
Варіант |
Загальний член ряду n=0,1,2,3,... |
Варіант |
Загальний член ряду n=0,1,2,3,... |
1 |
x2n+1 /(2n+1) |
16 |
(-1)n xn / n! |
2 |
(-1)n x2n+1 /(2n+1)! |
17 |
(-1)n x2n+2 /(2n+1)! |
3 |
1/[(2n+1) x2n+1 ] |
18 |
(-1)n x2n+1 /[(4n+3)(2n+1)!] |
4 |
(2n+1)2 /xn |
19 |
(x-1)n /[(n+1) xn ] |
5 |
xn / en |
20 |
(x-1)2n+1 /[(2n+1) (x+1)2n+1 ] |
6 |
xn / n! |
21 |
(xln a)n /(n)! |
7 |
x2n /(2n)! |
22 |
n2xn/(2n+1)! |
8 |
x2n+1 /(2n+1)! |
23 |
(x-1)2m+1/[(2m+1)(x+1)2m+1] |
9 |
(-1)n x2n /(2n)! |
24 |
x2n+1 /(2n-1)! |
10 |
(-1)n xn+1 /(n+1) |
25 |
(-1)n+1 x2n /(2n+1)! |
11 |
(-1)n+1 x2n+1 /(2n+1) |
26 |
(2n+1)2 xn /n! |
12 |
x2n-1 / (2n-1)! |
27 |
(-1)n+1 x2n+1 /(2n+1)! |
13 |
(-1)n+1 1/[x2n+1 /(2n+1)] |
28 |
(2n+1)2 xn /n! |
14 |
x2n+1 /(2n+1)! |
29 |
x2n-1 / [(2n-1)!n] |
15 |
(-1)n x2n+1 /[(2n+1)(2n+1)!] |
30 |
(-1)n+1 (xln a)n+1/(n+1)! |
Приклад 1
Сума ряду S = n=1,2,3,….
(ряд ,у якого значення наступного члена обчислюється множенням значення попереднього члена на коефіцієнт ,який просто розраховується)
Поточний n – ий член ряду an = (-1)n+1 x2n-1 / (2n-1)! .
Поточний наступний (n +1)– ий член ряду an +1 = (-1)n+1+1 x2(n+1)-1 / (2n +2-1)!
an +1 = - an x2 /[ 2n(2n+1)]
Розрахунок суми ряду із заданою кількістю членів N
Алгоритм 1
1.Початок.
2.Введення з клавіатури початкових значень х , N.
3.Встановлення початкових значень суми S = x , члена ряду a =x , його порядкового номера n=1.
4.Розрахунок значення поточного члена ряду
a = - a x2 /[ 2n(2n+1)]
5.Врахування значення поточного члена ряду у сумі S = S + a .
6.Перехід до наступного члена – збільшення порядкого номера члена ряду
n = n+1 .
7.Перевірка виходу за межі ряду : якщо у межах ряду, то перехід до п.4 , інакше перейти до наступного етапу.
8.Виведення значень x, N , S.
9.Кінець.
Програма 1 (файл PRAKT4_1.CPP)
#include <iostream.h>
#include <conio.h>
int main()
{
int n, N; float x, a, S;
cout << " x = "; cin >> x;
cout << " N = "; cin >> N;
S = a = x; n = 1;
next: a = - a * x * x / ( 2 .* n * ( 2 * n + 1. ));
S = S + a;
n++;
if (n < N) goto next;
// Використання оператора циклу
/* for(n = 1; n < N; n++)
{
a = -a *x*x/(2.*n*(2* n+1.));
S = S + a;
} */
cout << " x=" << x << " N=" << N << " S= " << S;
getch(); clrscr(); return 0;
}
Приклад 2
Розрахунок суми ряду із заданою точністю.
Ряд S = 1 + 2(x/2)/1! + 5(x/2)2 /2! + …..+ (n2 +1) (x/2)n/n! + …. n=0,1,2,…
(ряд, у якого для знаходження значення наступного члена використовується тільки частина значення попереднього члена ).
Поточний n – ий член ряду an = (n2 +1)*сn , де сn = сn-1 *(x/2)/n , c0 =1 ,a0 =1,
x/2)/n - частина значення попереднього члена .
Обчислення суми завершується , коли відносний вклад у суму значення поточного члена a/S становиться меншим заданої точності Е .
Алгоритм 2
1. Початок.
2.Введення з клавіатури початкових значень х , E.
3.Встановлення початкових значень суми S = 1 , члена ряду a =1 , його порядкового номера n = 1 , а також c = 1.
4.Розрахунок значення поточного члена ряду
с = с * x / (2 * n) , a = c * ( n * n + 1 )
5.Врахування значення поточного члена ряду у сумі S = S + a .
6.Перехід до наступного члена – збільшення порядкого номера члена ряду
n = n + 1 .
7.Перевірка відносного вкладу у суму значення поточного члена a/S : якщо вклад перевищує точність , то перехід до п.4 , інакше перейти до наступного етапу.
8.Виведення значень x, Е , S.
9.Кінець.
Програма 2 (файл PRAKT4_2.CPP)
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main()
{
double x, a, c, S, n, E;
cout << " x= "; cin >>x;
cout << " E= "; cin >>E;
S = a = c = n = 1;
next: c = c *x / ( 2. * n );
a = c * ( n * n +1. );
S += a;
n++; if fabs (a / S ) > E ) goto next;
/* do
{
c = c * x / ( 2. * n) ;
a = c * (n * n + 1.);
S += a;
n++;
}
while ( fabs(a / S) > E); */
cout << " x=" << x<< " E=" << E;
cout << " \n n=" << n << " a/S=" << a/S << " S= " <<S;
getch(); clrscr(); return 0;
}
Приклад 3
Ряд S = 1 +cos x /1 + cos 2x /2 + ….+cos nx /n + …, n = 1,2,3,…N-1
(ряд , значення поточного члена якого треба обчислювати окремо , без використання попередніх значень)
Алгоритм 3
1.Початок.
2.Введення з клавіатури початкових значень х , N.
3.Встановлення початкових значень суми S = 1 , члена ряду a = 1 , порядкового номера наступного члена n = 1.
4.Перевірка виходу за межі ряду : якщо у межах ряду, то продовжити розрахунки, інакше перейти до виведення результатів (п.8).
5.Розрахунок значення поточного члена ряду
a = cos (n * x) / n
6.Врахування значення поточного члена ряду у сумі S = S + a .
7.Перехід до наступного члена – збільшення порядкого номера члена ряду
n = n + 1 .
8.Повернення до п.4.
9.Виведення значень x, N , S.
10.Кінець.
Програма 3 (файл PRAKT4_3.CPP)
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main()
{
double x, a, S;
int n , N;
cout << " x= "; cin >> x;
cout << " N= "; cin >> N;
S = a = n = 1;
test: if (n > N - 1) goto out;
a = cos (n * x ) / n;
S += a;
n++;
goto test;
/* while ( n < N )
{
a = cos (n*x)/n;
S += a;
n++;
} */
out: cout << " x=" << x << " N=" << N << " S= " << S;
getch(); clrscr(); return 0;
}
Примітка
У програмах циклічні процеси також реалізовані за допомогою різних операторів циклу.
Практичне заняття № 7
Розпізнавання алгоритмів не своїх програм та їх виконання вручну
Завдання
1. Отримати програму для аналізу (у додатку ).
2. Створити блок-схему програми , розпізнати алгоритм та призначення програми. Записати відповідні математичні співвідношення ( математичну модель ).
3. Виконати програму вручну та отримати правильні результати. У разі виникнення труднощів корисно використати тестування програми.
4. Усі результати фіксувати у звіті .
Додаток
(1) #include <iostream.h> #include <math.h #define n 3 int x[n][n] = {1, 2, -3, 5, 0, -2, 23, 7, 4}; int main() { int i, j, y, z, w; y = x[0][0]; z = y; for(i=0;i<n;i++) for(j=0;j<n;j++) { w = x[i][j];if( y < w) y = w; if (z > w) z = w; } cout << y << z; return 0; }
|
(2) #include <iostream.h> #include <math.h> #define n 3 int x[n][n] = {1, 3 ,-7 ,5, 8, -2, 6, 4, -3}; int main() { int i, j, a, b, c; a = 0; b = 0; for(i=0;i<n;i++) for(j=0;j<n;j++) { c = x[i][j]; if(c > 0) a =a + c; if(c < 0) b = b + c; } cout << a << b; return 0; }
|
(3) #include <iostream.h> #include <math.h> #define n 3 int a[n][n] = {7, 3, 1, -5, 1, 2, -9, 4, -3}; int main() { int i, j,q, w, e; q = 1; w = 0; for(i=0;i<n;i++) for(j=0;j<n;j++) { e = a[i][j]; if(e > 0) { q = q * e; w = w++ ; } } cout << q << w; return 0; }
|
(4) #include <iostream.h> #include <math.h> #define n 3 int b[n][n] = {7, 3, 1, -5, 1, 2, -9, 4, -3}; int main() { int i, j, r, t, y, u; r = 0; t = 0; for(i=0;i<n;i++) for(j=0;j<n;j++) { u = b[i][j]; y = abs(u); if (y > r) r = y; if (u < 0) t = t++; } cout << r<< t; return 0; }
|
(5) #include <iostream.h> #include <math.h> #define n 3 int m[n][n] = {7, 3, 6, -5, 1, 2, -9, 4, -3}; int main() { int i, j, o, p, a, s; p = 1; s = 0; for(i=0;i<n;i++) for(j=0;j<n;j++) { a = m[i][j]; if (a > 0 && a % 2 == 0 ) { p = p * a ; s = s + 1; } } cout << p << s; return 0; }
|
(6) #include <iostream.h> #include <math.h> #define n 3 int m[n][n] = {7, 3, 6, -5, 1, 2, -9, 4, -3}; int main() { int i, j, o, p, a, s; p = 1; s = 0; for(i=0;i<n;i++) for(j=0;j<n;j++) { a = m[i][j]; if ( a > 0 && a % 2 == 0 ) { p = p * a; s = s + 1 ; } } cout << p << s; return 0; }
|
(7) #include <iostream.h> #include <math.h> #define n 3 int m[n][n] = 7, 3, 6,-5, 1, 2,-9, 4,-3}; int main() { int i, j, f, g, h; f = 0; g = 0; for(i=0;i<n;i++) for(j=0;j<n;j++) { h = m[i][j]; if (h > 2 && h < 9 ) { f = f + h; g++; } } cout << f << g ; return 0; }
|
(8) #include <iostream.h> #include <math.h> #define n 3 int m[n][n]= {-3,6,-5,1,2,-9,0,4,-3}; int main() { int i,j,l[n],h,g=0; for(i=0;i<n;i++) {l[i]=0; for(j=0;j<n;j++) {h=m[i][j];l[i]=l[i]+h;} if(l[i] < 0 ) g++;} cout<<l[0]<<" "<<l[1]<<" "<<l[2] <<" "<<g; return 0; }
|
(9) #include <iostream.h> #include <math.h> #define n 3 int m[n][n] = {-3,6,-5, 1, 2,-9,0,4,-3}; int main() { int i, j, q[n], h, w = 0; for(i=0;i<n;i++) { q[i]=1;for(j=0;j<n;j++) { h = m[i][j]; q[i] = q[i] * h; } if (q[i] < 0 ) w++; } cout << q[0] << " " << q[1] << " " << q[2] << " " << w; return 0; }
|
(10) #include <iostream.h> #include <math.h> #define n 3 int m[n][n] = {-3,6,-5,1,2,-9,0,4,-3}; int main() { int i, j, q[n], l, w = 0; for(j=0;j<n;j++) { q[j] = 0; for(i=0;i<n;i++) { l = m[i][j]; q[j] = q[j] + l; } if (q[j] < 0 ) w++; } cout << q[0] << " " << q[1] << " " << q[2] << " " << w; return 0; }
|
(11)
#include <iostream.h> #include <math.h> #define n 3
int m[n][n] = {-3, 6, -5, 1, 2, -9,0,4,-3}; int main() { int i, j, t[n], l, w = 0; for(j=0;j<n;j++) { t[j] = 1 ; for(i=0;i<n;i++) { l = m[i][j]; if (l != 0 ) t[j] = t[j] * l; } if (t[j] > 0 ) w++; } cout << t[0] << " " << t[1] << " " << t[2] << " " << w; return 0; }
|
(12)
#include <iostream.h> #include <math.h> #define n 3
int m[n][n] = {-3,0,-5,1,2,-9,0,4,-3}; int main() { int i, j, t[n],l , w = 0; for(j=0;j<n;j++) { t[j] = 0; for(i=0;i<n;i++) { l = m[i][j]; if(l != 0 ) t[j]++; } w = w + t[j]; } cout << t[0] << " " << t[1] << " " <<t[2] << " " << w; return 0; }
|
(13)
#include <iostream.h> #include <math.h> #define n 3
int x[n][n] = {-3,6, -5, 1,2, -9, 0,4,-3};
int main() { int i, j, q[n-1], h, w = 0; q[0] = 0;
for(i=0;i<n;i++) { h = x[i][i]; q[0] = q[0] + h; } q[1] = 0;
for(i=0;i<n;i++) { h = x[i][n-i-1]; q[1] = q[1] + h; }
w = q[0] * q[1];
cout << q[0] << " " << q[1] << " " << w; return 0; }
|
(14)
#include <iostream.h> #include <math.h> #define n 3
int m[n][n];
int main() { int i, j, t[n], l = 0, w = 0;
for(j=0;j<n;j++) for(i=0;i<n;i++) { m[i][j] = i + j + 1;
if ( m[i][j] %2 != 0 )
w++;
if (m[i][j] % 2 == 0 ) l = l + m[i][j]; }
cout << w << " " << l;
return 0; }
|
(15)
#include <iostream.h> #include <math.h> #define n 3
int m[n][n];
int main() { int i, j ,t[3*n], tmax, tmin, a, tm;
for(i=0;i<n;i++) for(j=0;j<n;j++) { m[i][j] = i + j + 1; t[ i * n + j ] = m[i][j]; }
tmax = tmin = t[0];
for(i=1;i<3*n;i++) { a = t[i]; if (a > tmax) tmax = a;
if (a < tmin) tmin = a; }
tm = ( tmax + tmin ) / 2;
cout << tmax << " " << tmin << " " << tm;
return 0; }
|
(16)
#include <iostream.h> #include <math.h> #define n 3
int m[n][n] = {-3,3, -5,1,2, -9,0,4, -3};
int main() { int i, j , row[n], h1, w2 = 0;
for(i=0;i<n;i++) { row[i] = 0;
for(j=0;j<n;j++) { h1 = m[i][j]; if ( h1 >= 1 && h1 < 4 ) { row[i] += h1;
w2++; }
}
cout << row[0] << " "<< row[1] << " " << row[2] <<" " << w2;
return 0; }
|
(17)
#include <iostream.h> #include <math.h> #define n 3
int f[n][n] = {-3, 3, -5,1,2, -1, 0,4, -3};
int main() { int i, j, k1 = 1, q3 = 0, m;
for(i=0;i<n;i++)
for(j=0;j<n;j++) { m = f[i][j];
if (m < 0) { m = -m; q3++; k1 = k1 * m; }
}
cout << k1 << " " << q3;
return 0; }
|
(18)
#include <iostream.h> #include <math.h> #define n 3
int m[n][n] = {1,2,3, -1, -2, -3,9,7,3};
int main() { int i, j, tt[n], tmax, a, tm = 0;
for(i=0;i<n;i++) { tmax = m[i][0];
for(j=1;j<n;j++) { a = m[i][j];
if (a > tmax) tmax = a; }
tt[i] = tmax; tm += tmax; }
cout << tm << " " << tt[0] << " " << tt[1] << " " << tt[2];
return 0; }
|
(19)
#include <iostream.h> #include <math.h> #define n 3
int x[n][n] = {-3,6, -5,1,2, -9,0,4, -3};
int main() { int i, j, q[n], h, w = 0;
for(i=0;i<n;i++) { q[i] = 0;
for(j=0;j<n;j++) { h = x[i][j];
if (h % 2 != 0) { q[i] += h; w++; } } }
cout << q[0] << " " << q[1] << " " << q[2] << " " << w;
return 0; }
|
(20)
#include <iostream.h> #include <math.h> #define n 3
int z[n][n] = {-3,3, -5,1,2, -1,0,4, -3};
int main() { int i ,j ,p1, m;
for(j=0;j<n;j++) { p1 = z[0][j];
for(i=1;i<n;i++) { m = z[i][j]; p1 = p1 + m;
}
z[0][j] = p1; } cout << z[0][0] << " " << z[0][1] << " " << z[0][2];
return 0; }
|
(21)
#include <iostream.h> #include <math.h> #define n 3
int m[n][n] = {1,2,3, -1, -2, -3,9,7,3};
int main() { int i, j, a, tm, s = 0;
for(i=0;i<n;i++) { tm = m[i][0];
for(j=1;j<n;j++) { a = m[i][j]; tm *= a; }
m[i][0] = tm; s = s + tm; }
cout << tm << " " << m[0][0] <<
" " << m[1][0] << " " << m[2][0]
<< " " << s;
return 0; }
|
(22)
#include <iostream.h> #include <math.h> #define n 3
int nm[n][n] = {1,2, -3, -1, 12, 3, 9,7,1};
int main() { int i, j, pa, tm, imax;
for(j=0;j<n;j++) { tm = nm[0][j]; imax = 0;
for(i=1;i<n;i++) { pa = nm[i][j];
if (pa > tm ) { tm = pa; imax = i; }
} nm[imax][j] = tm; nm[0][j] = tm; }
cout << nm[0][0] << " " <<
nm[0][1]<< " " << nm[0][2];
return 0; }
|
(23)
#include <iostream.h> #include <math.h> #define n 3
int nm[n][n] = {1,2, -3, -1,12,3,9,7,1};
int main() { int i, j, ap, tm, jmax;
for(i=0;i<n;i++) { tm = nm[i][0]; jmax = 0;
for(j=1;j<n;j++) { ap = nm[i][j];
if (ap > tm ) { tm = ap; jmax = j; }
} nm[i][jmax] = tm; nm[i][0] = tm; }
cout << nm[0][0] << " " << nm[1][0] << " " << nm[2][0];
return 0; }
|
(24)
#include <iostream.h> #include <math.h> #define n 3
int nm[n][n] = {1,2, -3, -1,12,3,9,7,1};
int main() { int i, j, ap, tm, jmin;
for(i=0;i<n;i++) { tm = nm[i][0]; jmin = 0;
for(j=1;j<n;j++) { ap = nm[i][j];
if (ap < tm ) { tm = ap; jmin = j; }
} nm[i][jmin] = tm; nm[i][0] = tm; }
cout << nm[0][0] << " " << nm[1][0]<< " " << nm[2][0];
return 0; }
|
(25)
#include <iostream.h> #include <math.h> #define n 3
int nm[n][n] = {1,2, -3, -1,12,3,9,7,1};
int main() { int i, j, ap, tm, jmin, s = 0;
for(i=0;i<n;i++) { tm = 0; jmin = 0;
for(j=0;j<n;j++) { ap = nm[i][j]; if (ap > 1 && ap < 10 && ap > tm ) { tm = ap; jmin = j; } } nm[i][jmin] = tm; nm[i][0]= tm; }
for(i=0;i<n;i++) s+=nm[i][0];
cout << nm[0][0] << " " << nm[1][0] << " " << nm[2][0] << " " << s;
return 0; }
|
(26)
#include <iostream.h> #include <math.h> #define n 3
int x[n][n];
int main()
{ int i, j , h = 0, w = 0;
for(i=0;i<n;i++)
for(j=0;j<n;j++) { x[i][j] = (i + 1) * (j + 1);
if (x[i][j] == 3) w++;
if (x[i][j] %2 == 0) h++;
}
cout << x[2][2] << " " << w << " " << h;
return 0; }
|
(27)
#include <iostream.h> #include <math.h> #define n 3
int z[n][n] = { -3,3, -5,1,2, -1,0,4, -3}, v[n] = {10, 12, 13};
int main() { int i, j , s21 = 0, s22 = 0;
for(j=0;j<n;j++) z[1][j] = v[j];
for(i=0;i<n;i++) { s21 = s21 + z[i][1]; s22 = s22 + z[1][i]; }
cout << s21 << " " << s22;
return 0; }
|
(28)
#include <iostream.h> #include <math.h> #define n 3
int z[n][n] = { -3,3, -5,1,2, -1,0,4, -3}, w[n] = { 10, -12, 3 };
int main() { int i, s21 = 0, p22 = 1;
for(i=0;i<n;i++) z[i][1] = w[i];
for(i=0;i<n;i++) { s21 = s21 + z[1][i]; p22 = p22 * z[i][i]; }
cout << s21<< " " << p22;
return 0; }
|
(29)
#include <iostream.h> #include <math.h> #define n 3
int u[n][n] = { -3,3, -5,1,2, -1,2,4, -3}, w[n] = {1, -2 , 3 };
int main() { int i, s21 = 0, p22 = 1;
for(i=0;i<n;i++) u[i][i] = w[i];
for(i=0;i<n;i++) { s21 = s21 + u[0][i]; p22 = p22 * u[i][n-i-1]; }
cout << s21 << " " << p22;
return 0; }
|
(30)
#include <iostream.h> #include <math.h> #define n 3
int v1[n] ={1,2,3 }, v2[n] = {4, 5, 6}, v3[n] = {7, 8, 9};
int main() { int i, x[n][n], s21 =0, p22 = 1;
for(i=0;i<n;i++) { x[0][i] = v1[i]; x[1][i] = v2[i]; x[2][i] = v3[i]; }
for(i=0;i<n;i++) { s21 = s21 + x[i][i]; p22 = p22 * x[i][n-i-1]; }
cout << s21 << " " << p22;
return 0; }
|
(31)
#include <iostream.h> #include <math.h> #define n 3
int b1[n] = {-2 , 5, 3}, b2[n] = {1, -3, 2};
int main() { int i, j , b3[2*n], pm = 1, im, i5;
for(i=0;i<n;i++) { b3[2 * i] = b1[i]; b3[2 *i + 1] = b2[i]; } im=0;
for(i=1;i<2*n;i++) { if ( b3[i] > 0 ) { pm *= b3[i]; im++; }
if ( b3[i] == 5) i5=i; }
cout << i5<< " " << pm << " " << im;
return 0; }
|
(32)
#include <iostream.h> #include <math.h> #define n 3
int x[n][n] = {-3,6, -5,1,2, -9,0,4, -3};
int main() { int i, j, q1[n], q2[n], h, w = 0;
for(i=0;i<n;i++) { q1[i] = 1; q2[i] = 0;
for(j=0;j<n;j++) { h = x[i][j];
if ( h != 0) { q1[i] *= h; q2[i] += h; }
} if ( q1[i] > q2[i] ) w++;
} cout << q1[0] << " " << q2[0] <<" " << w;
return 0; }
|