You are on page 1of 11

6.122.1141.01.

04
Зм. Аркуш № документа Підпис Дата
Літ. Аркуш Аркушів
Розробка та реалізація
Студент Байталюк А. О. У 1 11
програм обробки лінійних
Викладач Павленко А. Ю. масивів НУК
ім. адм. Макарова
ЛАБОРАТОРНА РОБОТА №4
Тема: Розробка та реалізація програм обробки лінійних масивів
Ціль: Оволодіти практичними навичками роботи з масивами, з’ясувати
особливості їх вводу і виводу, набути подальші навички з організації програм
циклічної структури з використанням прийомів програмування.

Завдання:

1. Представити математичний запис фрагмента програми та обчислити


значення змінної x після його виконання. Елементи масиву обчислюються за
формулою a[j+1]=(67*a[j]+11)%128. Значення a[0] дорівнює номеру

варіанта за списком групи.


t=2; n=3; x=a[0];
for(int j=0;j<n;j++){
x=x*t+a[j+1];}

2. Скласти програму обчислення найбільшого елемента масиву a та його


порядкового номеру. Виконати її у середовищі програмування. Елементи
масиву визначаються за формулою a[i]=p[i]–64, де
p[i+1]=(p[i]*67+11)%128. p[0] дорівнює номеру варіанта за списком
групи, кількість елементів у масиві дорівнює 50.

3.
a) Протабулювати функцію із завдання 3.2. Значення X та Y занести у
масиви.
b) Знайти найбільше та найменше значення у масиві Y. Вивести їх та
відповідні їм значення з масиву X у наступному вигляді:
yMin = … при X = … yMax = … при X = …
c) Обчислити суму та середнє арифметичне значення елементів масиву
Y. Результати вивести на екран.

Аркуш

Зм. Аркуш № документа Підпис Дата


6.122.1141.01.04 2
ТЕОРЕТИЧНА ЧАСТИНА РОБОТИ
Масив – це сукупність логічно взаємозв'язаних даних одного типу,
об'єднаних загальним ім'ям. Масив в С++ – це набір однотипних даних
(об'єктів), що мають загальне ім'я і що розрізняються місцеположенням в
цьому наборі (або індексом, привласненому кожному елементу масиву).
У програмі можуть бути масиви цілих чисел або чисел з плаваючою
точкою, символьні масиви і т.д.
Опис складається із специфікації типу, ідентифікатора і розмірності
масиву. Звернення до елементів масиву виконується за їх індексами, які
завжди починаються від нуля.
Масив можна оголосити і заповнити одночасно. Якщо розмірність
задана, то число значень в списку ініціалізації не повинне її перевищувати.
Якщо розмірність масиву більше числа значень в списку, то елементи
масиву, що не ініціалізували явно, будуть встановлені нулями. Значення
розмірності має бути константним виразом, тобто розмірність має бути відома
на етапі трансляції. Це означає, що змінна не може використовуватися для
завдання розмірності масиву.
Якщо в масиві не дуже багато елементів і їх значення відомі заздалегідь,
масив можна ініціалізувати разом з його оголошенням, уклавши перелік
значень у фігурні дужки.
Ім’я масиву – це покажчик (вказівник) на його перший елемент, тобто
розглядається як адреса першого елемента цього масиву.

Аркуш

Зм. Аркуш № документа Підпис Дата


6.122.1141.01.04 3
ПРАКТИЧНА ЧАСТИНА РОБОТИ

Завдання 1

Схема алгоритму фрагмента програми наведена на Рисунку 1.

Рисунок 1 – Фрагмент блок-схеми

Присвоюємо початкові значення t=2, n=3, x = a0=1, j=0.


Входимо у цикл:
1) x=1*2+(67*1+11)%128=2+78=80; j=1; перевіряємо умову 1<3, йдемо
на наступний крок циклу
2) x=80*2+(67*78+11)%128=160+117=277; j=2; перевіряємо умову 2<3,
йдемо на наступний крок циклу
3) x=277*2+(67*117+11)%128=554+42=596; j=3; перевіряємо умову 3<3 –
умова хибна, виходимо з циклу.
Після виконання фрагмента програми x=596.
Аркуш

Зм. Аркуш № документа Підпис Дата


6.122.1141.01.04 4
Завдання 2

Схема алгоритму розв’язання завдання представлена на рисунку 2.

Рисунок 2 – Алгоритм вирішення завдання 2


Аркуш

Зм. Аркуш № документа Підпис Дата


6.122.1141.01.04 5
Текст програми написаний на мові програмування C++ в середовищі
розробки CLion та представлений на лістингу 1.
Лістинг 1 – main.cpp
#include <iostream>
using namespace std;
int main() {
const int N=50;
int p[N], a[N];
p[0] = 1;
a[0] = p[0]-64;
int max = a[0], imax;
for (int i=1; i<N; i++){
p[i] = (p[i-1]*67+11)%128;
a[i] = p[i]-64;
if (max < a[i] ){
max = a[i];
imax = i;
}
}
cout << "max: a[" << imax << "] = " << max << endl;
return 0;
}

Результати роботи програми:


max: a[9] = 62
Process finished with exit code 0

Аркуш

Зм. Аркуш № документа Підпис Дата


6.122.1141.01.04 6
Завдання 3

Схема алгоритму розв’язання завдання представлена на рисунку 3.

Аркуш

Зм. Аркуш № документа Підпис Дата


6.122.1141.01.04 7
Аркуш

Зм. Аркуш № документа Підпис Дата


6.122.1141.01.04 8
Рисунок 3 – Алгоритм вирішення завдання 3

Текст програми написаний на мові програмування C++ в середовищі


розробки CLion та представлений на лістингу 2.
Лістинг 2 – main.cpp
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
double a, b, h, X, Y, eps = 0.000000001;
do {
cout << "Enter [a,b], h: " << endl;
cin >> a >> b >> h;
}
while (a>=b && h>=b-a);
Аркуш

Зм. Аркуш № документа Підпис Дата


6.122.1141.01.04 9
cout << fixed << setprecision(7);
int n = (b-a)/h+1;
int k = 0;
double x[n], y[n];
for (int i=0; i<=n; i++) {
X = a + i * h;
if ( X>eps && fabs(X-1)>eps && cos(X)!=0 ) {
Y = tan(X) / log(X);
y[k]=Y;
x[k]=X;
k++;
}
}
double yMin=0, xMin=0, yMax=0, xMax=0, Sum=0, SA;
for(int i=0; i<k; i++) {
if (yMin > y[i]) {
yMin = y[i];
xMin = x[i];
}
if (yMax < y[i]) {
yMax = y[i];
xMax = x[i];
}
}
cout << "Y min = " << yMin << ", when X = " << xMin << endl;
cout << "Y max = " << yMax << ", when X = " << xMax << endl;
for (int i=0; i<k; i++){
Sum+=y[i];
}
cout << "Sum = " << Sum << endl;
SA=Sum/k;
cout << "Arithmetic mean = " << SA << endl;
return 0;
}

Результати роботи програми:


Enter [a,b], h:
-5
5
0.1
Y min = -72.8346136, when X = 1.6000000
Y max = 52.1547676, when X = 4.7000000
Sum = 25.0127527
Arithmetic mean = 0.5104643
Process finished with exit code 0

Аркуш

Зм. Аркуш № документа Підпис Дата


6.122.1141.01.04 10
Висновки: Я оволоділа практичними навичками роботи з масивами,
з’ясувала особливості їх вводу і виводу, вдосконалила навички з організації
програм циклічної структури.

Аркуш

Зм. Аркуш № документа Підпис Дата


6.122.1141.01.04 11

You might also like