Розробіть блок-схему алгоритму обчислення всіх зна-
чень y, де y n = + 2 1 ( ) + + 3 2 ( ) k , для n = 1, 2, 3 і k = 3, 4, 5, 6.(C++)
ДАЮ 90Б
Ответы
#include <iostream>
int main() {
const int n_min = 1;
const int n_max = 3;
const int k_min = 3;
const int k_max = 6;
for (int n = n_min; n <= n_max; ++n) {
for (int k = k_min; k <= k_max; ++k) {
int y = 0;
for (int i = 1; i <= n; ++i) {
y += (i + 1) * (k - i);
}
std::cout << "y(" << n << ", " << k << ") = " << y << '\n';
}
}
return 0;
}
Блок-схема алгоритму може виглядати так:
+-------------------+
| n_min = 1 |
| n_max = 3 |
| k_min = 3 |
| k_max = 6 |
+-------------------+
|
|
+-------------------+
| |
| for n = n_min to |
| n_max |
| for k = k_min |
| to k_max |
| y = 0 |
| for i = 1 to |
| n |
| y += (i + 1) |
| * (k - i) |
| end for |
| output y |
| end for |
| end for |
+-------------------+
Одним з варіантів реалізації алгоритму може бути наступний:
#include <iostream>
int main() {
const int n_min = 1;
const int n_max = 3;
const int k_min = 3;
const int k_max = 6;
for (int n = n_min; n <= n_max; ++n) {
for (int k = k_min; k <= k_max; ++k) {
int y = 0;
for (int i = 1; i <= n; ++i) {
y += (i + 1) * (k - i);
}
std::cout << "y(" << n << ", " << k << ") = " << y << '\n';
}
}
return 0;
}
Блок-схема алгоритму може виглядати так:
+-------------------+
| n_min = 1 |
| n_max = 3 |
| k_min = 3 |
| k_max = 6 |
+-------------------+
|
|
+-------------------+
| |
| for n = n_min to |
| n_max |
| for k = k_min |
| to k_max |
| y = 0 |
| for i = 1 to |
| n |
| y += (i + 1)|
| * (k - i) |
| end for |
| output y |
| end for |
| end for |
+-------------------+
Цей алгоритм знаходить усі значення y для n від n_min до n_max і k від k_min до k_max, використовуючи три вкладені цикли. В кожному циклі for i обчислюється частина суми, яка відповідає даному i, і ця сума додається до загального результату y