Приклад
Програма роботи
Постановка завдання
Мета роботи
Лабораторна робота № 7
ОДНОВИМІРНІ МАСИВИ
Дослідити роботу операторів циклу мови програмуваня С++, засвоїти ме-тодику складання, налагодження та розрахунку програм циклічних обчислювальних процесів для обробки векторів на ПЕОМ.
Скласти схему алгоритму, таблицю символічних імен та програму мовою С++ відповідно до заданого варіанта. Налагодити та розв’язати задачу на ПЕОМ.
Теоретичні відомості
Масив являє собою набір однотипних елементів. До всього масиву можна звертатися за ім’ям, а до окремого елемента масиву - за ім’ям з індексом елемента у квадратних дужках. Індекс свідчить про його відносну позицію у структурі масиву. Число елементів масиву встановлюється під час його визначення і надалі не змінюється. Масиви визначаються так само, як і змінні:
int a[100]; char b[20]; float d[50];У першому рядку визначається масив а з 100 елементів цілого типу: а[0], а[1], ..., а[99] (індексація завжди починається з нуля), у другому елементи масиву b мають тип char, а в третьому - float.
Мова С++ дозволяє ініціалізувати масив при його визначенні. Для цього використовується така форма:
тип <ім’я_масиву>[...] ... [...]= {список значень};Приклади.
int a[5] = {0, 1, 2, 3, 4}; char ch[3] = {'d', 'e', '9'}; Якщо масив не був ініціалізованим зазначеним вище чином, призначити значення його елементам можна і безпосередньо у функціях за допомогою циклу. Цикл надає також можливість обробляти та змінювати дані масиву.Приклад.
for ( i = 0; i < N; i++ )
{ cout << "Введіть елемент ";
cin >> c[ i ]; // уведення значень елементів з програми
}
for ( i = 0; i < N; i++ )
c[ i ]=abs(c[i]) //зміна первинного значення
елемента на його модуль
for ( i = 0; i < N; i++ )
cout << c[ i ] << " "; // виведення елементів на екран дисплея.
3.1. Записати запропанований викладачем варіант завдання з п. 5.
Ознайомитись з рекомендованою літературою та конспектом лекцій.
3.2. Програмування задачі:
– скласти таблицю символічних імен;
– скласти схему алгоритму або псевдокод (за вказіквою викладача);
– скласти програму розв’язання задачі мовою С++.
3.3. Розв’язання задачі на ПЕОМ.
На ПЕОМ набрати, відлагодити та розв’язати складену програму.
3.4. Оформлення звіту.
Звіт повинен містити:
– номер лабораторної роботи та її назву;
– умову задачі та дані свого варіанта;
– таблицю символічних імен;
– схему алгоритму (або псевдокод);
– лістинг (або рукопис) програми;
– результати розрахунку задачі;
– висновки.
У масиві С= (с1, с2, …,с16) визначити середнє арифметичне sr негативних елементів першої половини масиву та добуток p позитивних елементів другої половини масиву.
Розв’язання.
Таблиця символічних імен
Математичне ім’я | Ім’я у програмі | Смислове значення | Змінна | |
Тип | Значення | |||
p | p | Добуток додатних елементів другої половини масиву | int | Результат |
i | i | Індекс елементів масиву | int | Початкові дані |
s | s | Сума від’ємних елементів | int | Результат |
k | k | Кількість від’ємних елементів першої половини масиву | int | Результат |
l | l | Кількість додатних елементів другої половини масиву | int | Результат |
sr | sr | Середнє арифметичне від’ємних елементів першої половини масиву | float | Результат |
m | m | Половина масиву | int | Результат |
N | N | Кількість елементів у масиві | int | |
c | c | Масив з кількістю елементів N | int | Початкові дані |
Текст програми мовою C++
для компіляторів Visual C++
# include <iostream.h>
#include <iomanip.h>
const int N = 16;
int main()
{
int c[ N ] = { 2, -6, 3, -8, 2, 3, 5, -5, -2, 5, 8,
6, -4, -9, 2, 5 }; // визначення масиву С
int p,i,m,k,l,s;
float sr;
cout << "Вхідний масив:" << endl;
for ( i = 0; i < N; i++ ) // ввід значень масиву
cout << c[ i ] << " ";
cout << endl;
cout << setprecision(3) << setiosflags(ios::fixed |
ios::showpoint);
k = 0; // початкове значення кількості від’ємних елементів
// першої половини масиву
s = 0; // початкове значення суми від’ємних елементів масиву
m = N/2; // половина масиву
for (i = 0; i < m; i++) //опрацьовується перша половина масиву
if ( c[ i ] < 0 ) // пошук від’ємних елементів
{
s += c[ i ]; // накопичення суми від’ємних елементів
k++; // накопичення кількості від’ємних елементів
}
p = 1; // початкове значення добутку додатних елементів
// другої половини масиву
l = 0; // початкове значення кількості додатних елементів масиву
for (i = m; i < N; i++) //опрацьовується друга половина масиву
if ( c[ i ] > 0 ) // пошук додатних елементів
{ p *= c[i]; // накопичення добутку додатних елементів
l++; // накопичення кількості додатних елементів
}
if ( k == 0 ) // перевірка на наявність від’ємних елементів
cout << "Немає від’ємних елементів у першій по
ловині масиву!" << endl;
else
{
sr = static_cast< float >( s )/k; // підрахунок середньо
// арифметичного значення
// вивід результатів
cout <<"Сума від’ємних елементів першої половини
масиву = "<< s << endl;
cout << "Кількість від’ємних елементів першої
половини масиву = "<< k << endl;
cout << "Середнє арифметичне. від’ємних елементів
першої половини масиву = "<< sr <<endl;
}
if ( l == 0 ) // перевірка на наявність додатних елементів
cout << "Немає додатних елементів у другій половині
масиву!" << endl;
else
{
// вивід результатів
cout << "Кількість додатних елементів у другій
половині масиву= " << l << endl;
cout << "Добуток додатних елементів у другій
половині масиву= " << p << endl;
}
return 0;
}
5. Варіанти завдань
Кожен студент вибирає варіант завдання за номером у списку групи.
Завдання. Скласти схему алгоритму, таблицю символічних імен та програму для обробки вектора відповідно до заданого варіанта.
1. Відомі два вектори і
. Знайти скалярний добуток векторів і кут між ними. При обчисленні застосувати формулу
.
2. Відомі два вектори і
. Знайти кут між ними та модуль векторного добутку векторів X і Y. При обчисленні застосувати формулу
, де с - векторний добуток векторів X і Y.
3. Відомі два вектори і
. Знайти суму векторів X+Y і різницю векторів X - Y та зберегти їх значення у векторах Z і F.
4. Відомі два вектори і
. Знайти добуток векторів X і Y на число a і зберегти їх результат у векторах G і H.
5. Відомі два вектори і
. Знайти лінійну комбінацію векторів aX+bY і зберегти її у векторі U.
6. Обчислити 20 значень функції на відрізку [a,b] і зберегти значення аргументу функції в масиві X, а відповідні значення функції - у масиві Y.
7. Обчислити 25 значень функції на відрізку [e,f] та зберегти їх у масиві Y. Знайти мінімальне і максимальне значення в цьому масиві.
8. Обчислити 12 значень функції на відрізку [e,f], зберегти їх у масиві Y і визначити, чи є функція спадною, зростаючою або немонотонною на цьому відрізку.
9. Обчислити 18 значень функції на відрізку [e,f], зберегти їх у масиві Y і визначити, чи має рівняння
на відрізку [e,f] принаймні хоча б один корінь.
10. Обчислити 30 значень функції на відрізку [e,f], зберегти
їх у масиві Y. Негативні компоненти масиву Y скопіювати в масив Ynegative,
а позитивні - у масив Ypozitive.
11. Обчислити 30 значень функції на відрізку [e,f], зберегти результати у масиві Y. Обчислити кількість негативних і позитивних компонентів масиву.
12. У масиві Time(20) зберігаються результати (у секундах) забігу на 100 метрів для 20 спортсменів. Визначити кращий результат і швидкість кожного спортсмена.
13. У масиві Time(20) зберігаються результати (у секундах) забігу на 100 метрів для 20 спортсменів. Визначити середню швидкість пробігу для кожного спортсмена.
14. У масиві X зберігаються дані про вартість (у гривнях) кожного кілограма із семи основних продуктів харчування, а масиві Y – про добову потребу (у грамах) людини в цих продуктах. Визначити вартість добового раціону.
15. У масиві Mass зберігаються дані про результати 22 зважувань маси тіла. Визначити середнє значення маси тіла та оцінити помилку виміру.
16. У масиві Urogai(20) зберігаються дані про врожайність пшениці (у центнерах з гектара) сільгосппідприємства “Зоря” з 1981 по 2000 р. Визначити найбільш і найменш урожайні роки у господарстві.
17. У масиві Kurs1(7) зберігаються дані про курс купівлі долара стосовно гривні для семи різних банків, а в масиві Kurs2(7) - про курс продажу долара стосовно гривні для цих банків. Визначити найвигідниший курс обміну і банки, що працюють за цим курсом.
18. У масиві Meat(5) зберігаються дані про вартість (у гривнях) кілограма м'яса на п’яти різних ринках м. Дніпропетровська. Визначити середню, мінімальну і максимальну вартість м'яса. Вивести на екран “чорний список” ринків, де вартість м'яса вища середньої.
19. У масиві T(10) зберігаються дані про температуру повітря на 1 січня 2009 р. у 10 містах світу. Визначити кількість міст, в яких температура була від’ємною, додатною і нульовою.
20. У масиві G(10) зберігаються відомості про довжину гіпотенуз 10 прямокутних трикутників, а в масиві C(10) – про довжину відповідних їм катетів. Для кожного з трикутників знайти довжину другого катета і площу та записати ці значення в масиви з іменами B і S.
21. У масивах Tmin(15) і Tmax(15) зберігаються дані про мінімальну і максимальну температуру, прийнятну для життя 15 різних рослин. Визначити кількість тих, що загинуть при температурі t чи які перебуватимуть на грані загибелі. Гранню загибелі вважати температуру, що дорівнює межовій.
22. У масиві Tair(10) зберігаються відомості про середнє арифметичне значення температури води в Чорному морі за липень для 10 різних міст Криму, а в масиві Twater(10) – про середнє арифметичне значення температури повітря за липень в тих же містах. Визначити місто, в якому різниця між температурою повітря і води мінімальна.
23. У масиві Square(6) зберігаються відомості про площу шести областей України, а в масиві Population(6) – про кількість населення тих же областей. Визначити найбільш населену і найменш населену області.
24. У масиві T(12) містяться дані про дану про середньомісячну температуру для кожного з 12 місяців у Дніпропетровську. Визначити найбільшу від’ємну і найменш додатну температуру.
25. Записати 25 цілих чисел в масив Х. Переписати від’ємні з них підряд у масив P, а додатні - у масив N.
________________________________________________________________________________________________________________________________________________________________