Приклад

Програма роботи

Постановка завдання

Мета роботи

Лабораторна робота № 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.

________________________________________________________________________________________________________________________________________________________________