Єдина Країна!

Головне меню

Наша кнопка

Українські уроки про ІТ

Друзі

Підтримка української армії


Головна Програмування - C++ Базовий курс програмування на С++. Урок 8. Масиви

Базовий курс програмування на С++. Урок 8. Масиви
Написав Joker   
Понеділок, 09 лютого 2015 00:56
Переглядів: 5510

Працювати треба не по 12 годин в день, а головою!

Стів Джобс

 

Сьогодні ми розглянемо:

1. Для чого потрібні масиви

2. Створення масиву

3. Заповнення даних

4. Домашнє завдання

 

 

 

Передмова

Будь ласка, прочитайте цей і попередній урок про цикли в С++ декілька разів. Цикли є важливим інструментом професійного програміста, а наше завдання – стати професіоналами. Постарайтесь виконувати д/з самостійно, не підглядаючи передчасно у розв’язки, можливо вам допоможуть блок-схеми. Інколи, вони допомагають не заплутатись у роботі алгоритму. Якщо є потреба (напишіть у коментарях), тоді я зроблю окремий урок по використанню блок-схем.

 

Для чого потрібні масиви

Ми вже знаємо, що змінна може зберігати дані, але вона може зберігати одночасно лише один елемент інформації. А якщо нам потрібно зберігати десятки або сотні однотипних даних? У цьому нам допоможуть масиви.

Масив — впорядкований набір фіксованої кількості однотипних елементів, що зберігаються в послідовно розташованих комірках оперативної пам'яті, мають порядковий номер і спільне ім'я, що надає користувач. (матеріал взятий з Вікіпедії http://uk.wikipedia.org/).

Якщо простіше, то масив це сукупність однотипних змінних з одним іменем. Тепер ми можемо зберегти десятки і сотні елементів під одним іменем. Але тепер нові запитання. Як звертатися до цих елементів? Як вони розташовані? Що спільного? І звісно ж відповіді. Всі елементи мають одне ім’я і один тип даних. Також кожен елемент масиву має власний індекс, по цьому індексу і відбувається звернення до елементів. Нумерація індексів починається з 0. Також кожен масив має розмір – кількість елементів у масиві.

 

Тепер трішки про пам’ять. Найменшою одиницею пам’яті є біт. Але при роботі з адресами в комп’ютері, найменшою одиницею вважається байт. 1 байт = 8 біт. Елементи масиву у пам’яті розташовуються у порядку їх зростання, елемент за елементом. Крім цього кожний елемент має власний розмір, який дорівнює типу масиву. Якщо масив типу int, то кожен елемент буде займати 4 байти. А розмір  всього масиву буде дорівнювати 4 * кількість елементів.

Крім цього, варто зазначити, що С++ дуже сильно вам довіряє і вважає зразу ж всіх професіоналами. Через це він не перевіряє вашу програму на таку помилку, як вихід за межі масиву.

int a[6]; cout << a[6]  << endl;

Давайте думати разом. Оскільки у масиві є 6 елементів, то нумерація буде від [0] до [5], а у наступній команді (cout) ми звертаємося до елемента з індексом [6], якого немає. Але ваш компілятор скаже, що все гаразд. Такі помилки називаються, помилками на етапі виконання. Будьте обережними з цим.

Тепер до практики!

 

Створення масиву

Першим ділом створимо масив. Загальний синтаксис:

тип ім’я [к-сть_елементів]

тип - будь- який із вам відомих типів (int, bool, char, double). Визначає елементи якого типу будуть зберігатися у вашому масиві.

ім’я – аналогічно зі змінними. По цьому імені будуть створюватися звернення до окремих елементів.

Думаю, що к-сть елементів не потрібно обґрунтовувати.

Н-д: int a [100], bool apple1[1000]

Також потрібно пам’ятати:

  1. к-сть елементів завжди є натуральним числом.
  2. Замість кількості елементів не можна писати змінні.

Ось такий код є помилкою!

#include <iostream>
using namespace std;
 
int main ()
{
int a = 1000;
int b[a];
 
 
system ("pause");
return 0;
}

 

Але це правило не поширюється на константи, через те, що значення константи є незмінним. Це інколи допомагає. Цілком можливо таке, що розмір ви будете вказувати декілька разів (заповнення масиву, обробка…). І також вам може знадобитися замінити всі ці розміри. Якщо всюди вказувати його у вигляді числа, тоді при заміні ви будете змушені замінювати його всюди де він був прописаний. Але якщо ви використовували константу, тоді, щоб замінити всі ці розміри достатньо переписати один рядок коду.

Такий код правильний:

#include <iostream>
#include <conio.h>
using namespace std;
 
int main ()
{
const int size = 1000;      // Тип int
double arr[size];              // Тип double
 
 
_getch();
return 0;
}

 

Заповнення даних

Основне завдання масивів – зберігання даних. Давайте навчимося заповнювати масиви. Тут є декілька способів.

1 Спосіб: Заповнення масиву зразу ж після його створення.

Синтаксис такий:

тип_даних ім’я_масиву[к-сть_елементів] = {зн_1, зн_2, … , зн_к-сть_ел.-1};

char str[5] = {‘1’, ‘Q’, ‘!’, ‘$’, ‘@’};

Крім цього, при такій ініціалізації дозволяється опускати к-сть елементів.

int abr[] = {1, 15, 876};

Якщо ви допустите помилку, як у цьому прикладі

double abr[5] = {1};

Тобто розмір більший за ініціалізовані елементи, тоді наступні елементи після 1 будуть заповнені нулями. І вираз буде мати такий вигляд:

double abr[5] = {1,0,0,0,0};

У іншому випадку, коли розмір менший за кількість заповнених елементів, то виникне помилка на етапі компіляції.

2 Спосіб: Заповнення масиву за допомогою циклу.

В даному випадку заповнення буде відбуватися з клавіатури. Пояснювати майже нічого не потрібно. Зразу ж напишемо приклад програми.

#include <iostream>
#include <conio.h>
using namespace std;
 
int main ()
{
const int size = 25;
double arr[size] = {5};
 
cout << " </> output" << endl;
for (int i=0; i<size; ++i)
{
cout << "arr[" << i << "]" << arr[i];
cout << endl;
}
 
cout << " </> input" << endl;
for (int i=0; i<size; ++i)
cin >> arr[i];
 
cout << " </> output" << endl;
for (int i=0; i<size; ++i)
{
cout << "arr[" << i << "]" << arr[i];
cout << endl;
}
 
 
_getch();
return 0;
}

 

Досить цікава програма, яка варта, щоб її прокоментували.

Рядок7 – створили констант-розмір. В іншому випадку у кожному з циклів ми були б змушені писати 25, а тепер подумайте якби число 25 треба замінити на 100. У даному випадку потрібно переписати тільки один рядок коду J . Далі ми заповнили масив за допомогою першого способу. Його елементи виглядають так: 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (24 нулі). Далі за допомогою циклу ми виводимо всі елементи масиву. Тут ви дізнались, що елементи можна виводити на екран. По суті на даному моменті ми можемо вважати елементи масиву як змінні, а змінні можна виводити.

Рядок 19 – ми вводимо значення елементів у циклі. Також варто замітити, що ми вводимо і елемент з індексом 0, який до цього був рівний 5. Тобто значення елементів можна змінювати.

Що ж далі д/з. Там вам знадобиться фантазія і логіка, доведеться не тільки згадати те, що написав я, а й додумувати багато самому. Удачі!!!

 

Домашнє завдання

1. Заповнити масив з  10 елементів з клавіатури. І знайти суму всіх елементів більших 2,7. Масив типу double.

2. Масив типу int з 5 елементів. Заповнюється з клавіатури. Знайти і вивести на екран максимальне значення у вашому масиві (будьте дуже настирливими, насправді це просто і якщо у вас не получиться зараз, то згодом, ви зрозумієте який алгоритм повинні використати).

3. Масив заповнений таким чином: 5, 112, 4, 3. Вивести його елементи навпаки (3,4,112,5). При цьому використання циклу є обов’язковим.

4. Знайти суму всіх парних і непарних елементів. Масив заповнюється з клавіатури, 5 елементів, тип int.


( 14 Проголосувало )

Схожі статті:
Новіші матеріали:
Старіші матеріали:

Коментарі
Добавити новий
Оскар   |2016-05-07 14:14:52
В одновимірному масиві, який складається із
n дійсних чисел, обчислити:
Кількість
елементів, які розташовані між А і B, де А, В
– елементи, які задаються користувачем
ЯК
ЦЕ ЗРОБИТИ, ПІДКАЖІТЬ БУДЬ ЛАСКА!!!
Залишити коментар
Ім`я:
e-mail:
 
Тема:
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Введіть цей настирливий код
Русская редакция: www.freedom-ru.net & www.joobb.ru

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Ввійти



Підписка

Хто онлайн?

Немає
На даний момент 75 гостей на сайті

Український рейтинг
TOP.TOPUA.NET