Аперацыі, якія выконваюцца з элементамі масіву, адпавядаюць аперацыям, якія выконваюцца над базавым тыпам элементаў масіву (прыклад 11.23).
Прыклад 11.24. Зададзены аднамерны масіў з цэлых лікаў. Знайсці суму і здабытак элементаў гэтага масіву.
Этапы выканання задання
I. Зыходныя даныя: масіў a і колькасць элементаў n.
II. Вынік: s — сума элементаў і p — здабытак элементаў масіву.
III. Алгарытм рашэння задачы.
1. Увод зыходных даных. Масіў уводзіцца паэлементна з клавіятуры. 2. Вызначэнне пачатковага значэння для сумы (s = 0) і для здабытку (p = 1). 3. У цыкле дабаўляем чарговы элемент масіву да сумы і да здабытку. 4. Вывад выніку.
IV. Апісанне пераменных: n, s, p — int, a – vector <int>.
Прыклад 11.25. Адзнакі па інфарматыцы за першую чвэрць для ўсіх навучэнцаў 10 «Б» класа запісаны ў тэкставым файле (першы лік у файле паказвае колькасць навучэнцаў). Паспяховасць у класе будзем лічыць добрай, калі сярэдні бал большы за 7, дрэннай — калі сярэдні бал ніжэйшы за 4, у астатніх выпадках паспяховасць сярэдняя. Вызначыць паспяховасць класа па зададзеных адзнаках.
Этапы выканання задання
I. Зыходныя даныя: масіў a для захоўвання адзнак і колькасць навучэнцаў n.
II. Вынік — адно са слоў: «добрая», «сярэдняя», «дрэнная» ў залежнасці ад значэння сярэдняга бала.
III. Алгарытм рашэння задачы.
1. Увод зыходных даных. Спачатку ўводзім колькасць навучэнцаў у класе, затым масіў адзнак. 2. Для вызначэння паспяховасці трэба вылічыць сярэдні бал (пераменная sr). Сярэдні бал вызначаецца як сума (пераменная s) усіх адзнак, падзеленая на колькасць навучэнцаў у класе. Пачатковае значэнне для сумы — s = 0. 3. У цыкле дабаўляем чарговы элемент масіву да сумы. 4. Дзелім атрыманую суму на колькасць навучэнцаў у класе. 5. Правяраем значэнне сярэдняга бала і выводзім вынік.
IV. Апісанне пераменных: n, s, p – int, sr – double, a – vector <int>.
Прыклад 11.26. Зададзены натуральны лік n (1 < n < 5000). Вызначыць, ці з’яўляецца гэты лік простым.
Этапы выканання задання
I. Зыходныя даныя: n — натуральны лік.
II. Вынік: вывад паведамлення «просты» ці «састаўны».
III. Алгарытм рашэння задачы.
1. Увод зыходных даных. 2. Вядома, што лік n з’яўляецца простым, калі ён не падзяляецца ні на адзін просты лік, не большы за . Максімальны лік па ўмове — 5000, . Створым масіў канстант s_n простых лікаў, не большых 71. 3. У цыкле будзем дзяліць лік n на кожны з лікаў, не большых за , якія захоўваюцца ў масіве канстант. Калі лік n не падзяліўся ні на адзін з іх, то лік n — просты, інакш — састаўны. 4. Правяраем, з якой умовай скончыў работу цыкл: лік з’яўляецца простым, калі апошні прагледжаны элемент масіву большы за (лік ні на што не падзяліўся). 5. Вывад выніку.
IV. Апісанне пераменных: n, — int, s_n – vector <int>. |
Прыклад 11.23. Аперацыі над базавым тыпам.
- Калі базавым тыпам элементаў масіву з’яўляецца тып int, то для элементаў дапушчальныя наступныя аперацыі: +, –, *, /, %.
- Калі ў масіве захоўваюцца лікі тыпу double, то дапушчальнымі будуць аперацыі +, –, *, /.
- Калі ў масіве захоўваюцца радкі, то для кожнага яго элемента даступныя радковыя функцыі.
Прыклад 11.24.
V. Праграма:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cout << "vvedi n=";
cin >> n;
vector <int> a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
int s = 0;
int p = 1;
for (int i = 0; i < n; i++) {
s += a[i];
p *= a[i];
}
cout << "proizvedenie=" << p;
cout << " summa=" << s << endl;
return 0;
} |
VI. Тэсціраванне.

Прыклад 11.25.
V. Праграма:
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream fin("input.txt");
setlocale(0, "");
int n;
fin >> n;
vector <int> a(n);
for (int i = 0; i < n; i++)
fin >> a[i];
int s = 0;
for (int i = 0; i < n; i++)
s += a[i];
double sr = 1. * s / n;
cout << "sr = " << sr << endl;
if (sr > 7)
cout << "хорошая" << endl;
else
if (sr < 4)
cout << "плохая" << endl;
else
cout << "средняя" << endl;
return 0;
} |
VI. Тэсціраванне.


Прыклад 11.26.
Умова s_n[i] <= sqrt(n) правяраецца доўга за кошт выкліку функцыі sqrt(n) і пераходу да вылічэнняў с рэчыўным тыпам даных. Гэту ўмову звычайна замяняюць эквівалентным: s_n[i]*s_n[i] <= n.
V. Праграма:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> s_n = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71};
int n;
cout << "n = ";
cin >> n;
int i = 0;
while (s_n[i] * s_n[i] <= n
&& n % s_n[i])
i++;
if (s_n[i] * s_n[i] > n)
cout << "prostoe" << endl;
else
cout << "sostavnoe" << endl;
return 0;
}
|
VI. Тэсціраванне.


Аналіз вынікаў. Праверыць правільнасць вылічэнняў можна на калькулятары або паглядзець у табліцы простых лікаў [1].
[1] Тэхнічныя табліцы — http://tehtab.ru/guide/guidemathematics/guidemathematicsfigurestables/simplefigures/ (дата доступу: 28.07.2020)
|