Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Робочий зошит з програмув на 2 сем.doc
Скачиваний:
3
Добавлен:
10.11.2019
Размер:
2.47 Mб
Скачать

Завдання та методичні вказівки для самостійної роботи студента

  1. Розв’язати задачі №11.19 [1, ст. 137]

Лекція 2.

Тема. Одновимірні масиви. Динамічне оголошення масивів. Передача масивів у функцію.

Мета. Отримати поняття як створювати функції користувача при роботі з одновимірними масивами. З’ясувати як використовувати вказівники при роботі з одновимірними масивами.

Опорний конспект

Під час компіляції програмного коду для статично оголошених масивів надається пам’ять. Для ефективного використання пам’яті призначене динамічне оголошення масивів, а саме:

<тип вказівника> *<назва> = new <тип змінної>[<кількість>];

Після виконання цієї команди буде виділена неперервана ділянка пам’яті обсягом

sizeof (тип змінної) * <кількість>,

і назва масиву вказуватиме на початок цієї ділянки.

Після опрацювання масиву вивільнити пам’ять можна за допомогою команди

delete[] <назва вказівника на масив даних>;

Задача 1 (про створення нового масиву). Утворити масив у, елементи якого обчислюються за формулою – 2, де k = 1, 2, …, 10. Побудувати масив, який складається з від’ємних елементів масиву y. Вивести результати обчислень. Якщо шуканих величин немає, то вивести про це повідомлення.

У наступній програмі змінна п визначає кількість від’ємних елементів у новому масиві.

#include <iostream.h>

#include <match.h>

#define N 10

void main()

{

float *y = new float[N];

float *g = new float[N];

int k, n;

cout << “\t Масив Y:\n”;

for (k = 0, n = 0; k < 10; k++)

{

*(y + k) = log(k + 1) – 2;

cout << k << “\t” << *(y + k) << “\n”;

if (*(y + k) < 0)

{ *(g + n) = *(y + k); n++;}

}

delete[] y;

cout << “\t Масив G:\n”;

for (k = 0; k < n; k++) cout << k << “\t” << *(y + k) << “\n”;

delete[] g;

}

Задача 2 (про АТС). Нехай - це число викликів, які надходять на АТС за k-ту секунду. Припустимо, що - випадкове число зі значенням від 0 до 30. Утворити масив у з десятьма елементами (k = 1, 2, …, 10). Обчислити суму викликів за перші 10 с роботи АТС. Визначити максимальну суму викликів, які надійшли за деяку одну секунду. Вивести результати обчислень.

Зауваження. Для того, щоб отримати ціле випадкове число з діапазону від 0 до п, можна скористатись функцією ___________, яка описана у модулі __________. Щоб під час виконання програми кожен раз отримувати різні значення, перед використанням функції _____________ треба записати функцію randomize().

Розв’яжемо задачу про АТС, використовуючи функції користувача, параметрами яких є масиви.

// Програма АТС 1 з використанням функцій

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

int Suma(int y[10]);

int Max(int y[10]);

void main()

{

randomize();

int y[10];

cout << “Секунда \t Кількість викликів \n”;

for (int S = 0, k = 0; k < 10; k ++)

{

y[k] = rundom(30);

cout << (k + 1) << “\t\t” << y[k] << “\n”;

}

S = Suma(y);

cout << “\n S=” << S;

int max;

max = Max(y);

cout << “\n max = “ << max;

getch();

}

//------------------------------------------------------------------------------------------------

int Suma(int y[10])

{

for (int S = 0, k = 0; k < 10; k++)

S += *(y + k);

return S;

}

//------------------------------------------------------------------------------------------------

int Max(int y[10])

{

int k = 0;

for (int max = *y; k < 10; k++)

if (*(y + k) > max) max = *(y + k);

return max;

}

Отже, при оголошенні масиву в якості формального параметра функції не треба вказувати розмірність масиву, а достатньо вказати лише квадратні дужки.