Масиви
Поняття та сутність масиву, його основні задачі. Особливості й значення процесу оголошення масиву. Правило звернення до елементів масиву. Способи введення даних в масив з клавіатури і виводу на екран. Процес заповнення масиву випадковими числами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лекция |
Язык | украинский |
Дата добавления | 19.07.2017 |
Размер файла | 40,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
МАСИВИ
Основні поняття
Що таке масив ?
Основне призначення комп'ютерів не обчислення, як вважають багато хто, а обробка великих обсягів даних. При розміщенні великої кількості даних у пам'яті виникає така проблема: треба навчитися поводитися до кожної комірки з даними окремо. при цьому дуже складно дати кожному осередку власне ім'я і при цьому не заплутатися. викручуються з цієї ситуації так: дають ім'я не комірці, а групі осередків, в якій кожна клітинка має номер.
Така область пам'яті називається масивом.
Масив - це група комірок пам'яті однакового типу, розташованих поруч і мають загальне ім'я.
Кожна комірка у групі має унікальний номер.
При роботі з масивами треба навчитися вирішувати три завдання:
- виділяти пам'ять потрібного розміру під масив;
- записувати дані в потрібну комірку;
- читати дані з комірки;
Оголошення масиву
Щоб використовувати масив, треба його оголосити - виділити місце в пам'яті відповідно до типу масиву.
Тип масиву - це тип вхідних у нього елементів. Масиви можуть бути різних типів: цілий, дробовий, символ, і т.д.
Масив оголошують так само, як і звичайні змінні, але після імені масиву в квадратних дужках записується його розмір.
int A[10], B[20]; // 2 масиви на 10 та 20 цілих числа
float C[12]; // масив із 12 дійсних чисел
масив клавіатура екран число
При оголошенні масиву можна відразу заповнити його початковими значеннями, перераховуючи їх усередині фігурних дужок:
int A[4] = { 2, 3, 12, 76 };
Якщо у списку в фігурних дужках записано менше чисел, ніж елементів у масиві, то елементи, що лишились, заповнюються нулями. Якщо чисел більше, ніж треба, транслятор повідомляє про помилку, наприклад,
int A[4] = { 2 }; // останні три элементи дорівнюють 0
Для підвищення універсальності програми розмір масиву краще визначати через константу. У цьому випадку для змін у програмі для масиву іншого розміру треба тільки поміняти значення цієї константи:
const int N = 20; // константа
main()
{
int A[N]; // розмір масиву заданий через константу
...
}
Звернення до елементу масиву
Кожен елемент масиву має свій порядковий номер. Щоб звернутися до елементу масиву, треба написати ім'я масиву і потім у квадратних дужках номер потрібного елементу. Важливо запам'ятати одне важливе правило: елементи масивів у мові Сі нумеруються з нуля.
Таким чином, якщо в масиві 10 елементів, він містить елементи:
A[0], A[1], A[2], ..., A[9]
Номер елемента масиву також називається його індексом. Ось приклади звернення до масиву:
x = (A[3] + 5)*A[1]; // прочитати значення A[3] і A[1]
A[0] = x + 6; // записати нове значення в A[0]
У мові Сі контролю не підлягає вихід за межі масиву, тобто формально ви можете записати щось в елемент з неіснуючим індексом, наприклад в А[345] або в А[-12]. Однак, при цьому ви стираєте якусь комірку у пам'яті, що не відноситься до масиву, тому наслідки такого кроку непередбачувані і в багатьох випадках програма «зависає».
Введення з клавіатури і вивід на екран
Як же ввести дані в масив? Існує багато способів залежно від вашого завдання:
- елементи масиву вводяться з клавіатури вручну;
- масив заповнюється випадковими числами (наприклад, для моделювання випадкових процесів);
- елементи масиву читаються з файлу;
- елементи масиву надходять через порт із зовнішнього пристрою (наприклад, сканера, модему тощо);
- масив заповнюється в процесі обчислень.
Завдання. Ввести з клавіатури масив з 10 елементів, помножити всі елементи на 2 і вивести отриманий масив на екран.
На жаль, неможливо просто сказати комп'ютеру: «введи масив». Ми повинні кожен елемент прочитати окремо.
Щоб ввести масив у пам'ять, треба кожен його елемент обробити окремо (наприклад, викликавши для нього функцію введення scanf) .
Введення з клавіатури застосовується в найпростіших програмах, коли обсяг введеної інформації невеликий. Для введення масиву будемо використовувати цикл for.
Нагадаємо, що масив треба попередньо оголосити, тобто виділити під нього пам'ять. Вводити можна стільки елементів масиву , скільки елементів пам'яті виділено. Пам'ятайте, що елементи масиву нумеруються з нуля, тому якщо масив має всього 10 елементів, то останній елемент має номер 9.
Якщо намагатися записувати в 10-ий елемент, відбудеться вихід за межі масиву, і програма може працювати невірно ( а, можливо, і « зависне »). При введенні масиву бажано видати на екран загальну підказку для введення всього масиву та підказки для кожного елемента.
Для множення елементів масиву на 2 треба знову використовувати цикл , в якому за один раз обробляється 1 елемент масиву.
Вивід масиву на екран виконується також у циклі for. Елементи виводяться по одному.
Якщо наприкінці рядка формату в операторі printf поставити пробіл, то елементи масиву будуть надруковані в рядок, а якщо символ \ п - то у стовпчик.
#include <stdio.h>
const int N = 10; // розмір масиву
main()
{
int i, A[N]; // оголошення масиву
printf("Уведить масив A\n"); // підказка для введення
for ( i = 0; i < N; i ++ ) { // цикл по всім елементам
printf("Уведіть A[%d]> ", i ); // підказка для введення A[i]
scanf ("%d", &A[i]); // ввід A[i]
}
for ( i = 0; i < N; i ++ ) // цикл по всім елементам
A[i] = A[i] * 2; // помножити A[i] на 2
printf("\nРезультат:\n");
for ( i = 0; i < N; i ++ ) // цикл по всім елементам
printf("%d ", A[i]); // вивести A[i]
}
Заповнення випадковими числами
Цей прийом використовується для моделювання випадкових процесів, наприклад, броунівського руху частинок. Нехай, потрібно заповнити масив рівномірно розподіленими випадковими числами в інтервалі [а, в]. Оскільки для цілих і дійсних чисел способи обчислення випадкового числа в заданому інтервалі відрізняються, розглянемо обидва варіанти.
Тут і далі передбачається, що на початку програми є рядок
const int N = 10;
Опис функції-датчика випадкових чисел знаходиться в заголовному файлі stdlib.h.
Зручно також додати в свою програму функцію random:
int random (int N) { return rand() % N; }
яка видає випадкові числа з рівномірним розподілом в інтервалі [0, N-1]. Як ви вже знаєте з першої частини курсу, для отримання випадкових чисел з рівномірним розподілом в інтервалі [а, в] треба використовувати формулу
k = random ( b - a + 1 ) + a;
Для дійсних чисел формула дещо інша:
x = rand()*(b - a)/RAND_MAX + a;
Тут константа RAND_MAX - це максимальне випадкове число, яке видає стандартна функція rand.
У наведеному нижче прикладі масив заповнюється випадковими цілими числами в інтервалі [-5,10], а масив X - випадковими числами в тому ж інтервалі.
#include <stdlib.h>
const int N = 10;
main()
{
int i, A[N], a = -5, b = 10;
float X[N];
for ( i = 0; i < N; i ++ )
A[i] = random(b-a+1) + a;
for ( i = 0; i < N; i ++ )
X[i] = (float)rand()*(b-a)/RAND_MAX + a;
// тут виконуються деякі дії з масивами
}
Можливо, в цьому прикладі не цілком ясно, навіщо перед викликом функції rand поставлено слово (float). Це пов'язано з тим, що у нас а і в - цілі числа. Результат функції rand - теж ціле число. Тут можливі дві проблеми:
- при множенні результату функції rand на а - в може вийти дуже велике число, яке не поміститься в змінну типу int.
- у мові Сі при діленні цілого числа на ціле залишок відкидається, тому при діленні результат буде невірним.
Коли масив заповнюється випадковими числами, обов'язково вивести на екран вихідний масив.
Завдання. Заповнити масив випадковими цілими числами в інтервалі [-10,15], помножити всі елементи на 2 і вивести на екран вихідний масив і результат.
#include <stdio.h>
#include <stdlib.h>
const int N = 10;
main()
{
int i, A[N];
for ( i = 0; i < N; i ++ ) // заповнення масиву випадковими числами
A[i] = random(26) - 10;
printf("n Вихідний масив:\n"); // вивід отриманого масиву
for ( i = 0; i < N; i ++ )
printf("%d ", A[i]);
for ( i = 0; i < N; i ++ ) // помножити усі елементи на 2
A[i] = A[i] * 2;
printf("n Результат:\n");
for ( i = 0; i < N; i ++ ) // вивід результату
printf("%d ", A[i]);
}
Завдання до лабораторної роботи
1. Завантажити осередок.
2. Виконати компіляцію та експеримент лекційних прикладів.
3. Виконати самостійно завдання свого варіанту.
4. Оформити звіт. У звіт включити вихідні тексти прикладу і завдань з варіантів, а також скріншоти, що підтверджують правильність виконання завдання.
Варіанти завдань:
Завдання №1
Розв'язання задач одержати у виглядi масиву.
1. Задане натуральне число n. Одержати послiдовнiсть , в якiй, при i = 1, 2, ..., n, значення дорiвнювало б i.
2. Задане натуральне число n. Одержати послiдовнiсть , в якiй, при i = 1, 2, ..., n, значення дорiвнювало б .
3. Послiдовнiсть утворена за законом: Одержати .
4. Заданi натуральне число n та дiйснi числа . Одержати вектор , компонента якого дорiвню: , якщо 0 < < 10; 1 у противному разi.
5. Заданi натуральне число m та дiйснi числа . Одержати вектор , компонента якого визначаться як:
, якщо ;
=
1/ в противному разi.
6. Обчислити компоненти вектора ) за формулою:
, якщо ;
=
ctg i , якщо .
7. Обчислити вектор , кожна компонента якого визначаться за формулою:
arctg , якщо ;
=
, якщо .
8. Обчислити вектор , який дорiвню сумi двох векторiв: та , за формулою . Вектор X заданий. Значення компонент вектора Y обчислити за формулою .
9. Послiдовнiсть утворена за законом: Одержати .
10. Заданi натуральне число n та дiйснi числа . Одержати , при цьому
11. Заданi натуральне число n та дiйснi числа . Одержати , де
12. Заданi натуральне число n та дiйснi числа Одержати , де
13. Заданi натуральне число k та дiйснi числа . Одержати послiдовнiсть дiйсних чисел де
14. Одержати послiдовнiсть цiлих чисел , де
15. Послiдовнiсть утворена за законом: Одержати послiдовнiсть
16. Послiдовнiсть утворена за законом: Одержати
17. Обчислити де
i , якщо i - непарне;
=
i / 2 , у противному разi ;
18. Одержати послiдовнiсть , якщо при i = 1, 2, ..., n значення дорiвню:
1 + 1/ 2 + ... + 1/ i .
19. Одержати послiдовнiсть , якщо при i = 1, 2, ..., n значення дорiвню i !.
20. Заданi натуральне число n та дiйснi числа . Одержати , якщо
.
21. Одержати вектор , якщо
22. Одержати вектор , якщо
23. Два полiноми степенiв n та m заданi масивами свох коефiцiнтiв . Обчислити коефiцiнти полiному, який сумою даних полiномiв.
24. Функцiя визначена на відрізку . Для значень аргументу обчислити вiдповiднi значення функцi . Обчисленi значення та представити як вектори i видрукувати х.
25. Функцiя визначена на відрізку . Для значень аргументу обчислити вiдповiднi значення функцi . Обчисленi значення та представити як вектори i видрукувати х.
26. Функцiя визначена на вiдрізку [a, b]. Для значень аргументу обчислити вiдповiднi значення функцi . Задачу розв'язати для a = -1 ; b = 3; n = 40. Обчисленi значення та представити як вектори i видрукувати х.
27. Функцiя визначена на відрізку [a, b]. Для значень аргументу обчислити вiдповiднi значення функцi . Задачу розв'язати для a = -1 ; b = 2; n = 30. Обчисленi значення та представити як вектори i видрукувати х.
28. Функцiя визначена на відрізку [a, b]. Для значень аргументу обчислити вiдповiднi значення функцi . Задачу розв'язати для a = -3 ; b = 5; n = 40. Обчисленi значення та представити як вектори i видрукувати х.
29. Обчислити значення функцi , якщо x змiнються вiд 0 до 1 з кроком 0,1. Обчисленi значення x та y представити як вектори i видрукувати х.
30. Обчислити значення функцi , якщо t змiнються вiд 1 до 1,5 з кроком 0,1.
Обчисленi значення d та t представити як вектори i видрукувати х. Визначити середнiй модуль рiзницi мiж компонентами вектора d та заданого вектора за формулою
Завдання №2
1. Дано масив A(N). Побудувати масив С із позитивних елементів заданого масиву А и упорядкувати масив С в порядку убування.
2. Дано масив MAS(M). Знайти суму двох найбільших по абсолютній величині елементів цього масиву.
3. У масиві B(M) визначити максимальну кількість розташованих по зростанню елементів, що стоять підряд.
4. Визначити, чи є в масиві С(М) три слідуючих підряд елементи, значення яких рівні нулю.
5. Упорядкувати масив А(М) по убуванню.
6. Визначити, скільки разів зустрічається в реченні літера «С».
7. Дано масив цілих чисел, що містить К елементів. Записати в цей же масив спочатку всі негативні числа і нулі , потім усі позитивні, зберігши їх порядок проходження.
8. У масиві F(K) визначити максимальну кількість розташованих по убуванню елементів, що стоять підряд.
9. У масиві з N цілих чисел знайти найбільший елемент і поміняти його місцем із першим елементом, якщо в цьому є необхідність.
10. Дано масив дійсних чисел, що містять М елементів. Записати в початок цього ж масиву всі негативні числа, а потім інші, зберігши їх порядок проходження.
11. Дано масив RO(N). Перевірити, чи є в масиві, хоча б два рівних елементи?
12. Дано масив дійсних чисел. Знайти суму двох найменших по абсолютній величині елементів масиву.
13. У масиві FI(N) визначити місця розташування найбільшого і найменшого елементів і поміняти їх місцями.
14. З масиву С(N) переписати в масив FI елементи більше середнього значення масиву С(N).
15. Дано масив RO(N). Знайти найбільший і найменший елементи масиву і вивести на друк той із них, що має більший номер (індекс).
16. Перевірити, чи упорядкований масив B(K). Якщо масив не упорядкований, то визначити довжину упорядкованої частини масиву.
17. Дано масив ZY(K). Знайти добуток трьох найменших за значенням елементів масиву.
18. Дано масиви A(N) і B(N). Переписати масив V , елементи масивів A і B у зворотному порядку.
19. Дано масив Z(N). Сформувати масив C(N)
Завдання №3
Сформувати на екрані зображення функції. Інтервал та крок підібрати експериментально.
Варіанти завдання 3
1.
2. у=
3. у=
4. у=)
5. у= )
6. у=
7. у=
8. у=
9. у=
10. у=
11. у=)
12. у=
13. у=
14. у=
15. у=
16. у=
17. у=
18. у=
19. у=)
20. у=
Размещено на Allbest.ru
...Подобные документы
Розробка методу-члену класу для створення нового одновимірного масиву з кількості всіх негативних елементів кожного рядка заданого двовимірного динамічного масиву. Особливість виводу змісту масиву на екран. Аналіз перевірки правильності роботи програми.
лабораторная работа [131,2 K], добавлен 18.11.2021Регулярний тип даних мови Pascal, що дозволяє в програмі задавати структуру даних, яка називається масивом. Поняття одновимірного та багатовимірного масиву. Прямі методи сортування масивів, типи даних. Таблиця результативності гравців футбольної команди.
лекция [411,2 K], добавлен 24.07.2014Структури даних як способи їх організації в комп'ютерах. Підтримка базових структури даних в програмуванні. Дерево як одна з найпоширеніших структур даних. Бінарні дерева на базі масиву. Створення списку - набору елементів, розташованих у певному порядку.
контрольная работа [614,7 K], добавлен 18.02.2011Програмування масиву і сукупність елементів одного типу даних, впорядкованих за індексами, які зазвичай репрезентовані натуральними числами, що визначають положення елемента в масиві. Лістинг програми та блок-схема алгоритму і результат виконання.
курсовая работа [453,1 K], добавлен 06.06.2012Мінімізація функції за методом карт Карно; розробка програм на мові асемблеру для Intel 8051: сортування масиву однобайтних даних у зовнішній пам’яті; формування послідовності прямокутних імпульсів; підрахунок кількості натискань на клавішу переривання.
курсовая работа [196,2 K], добавлен 14.04.2012Розрахування і виведення на екран значення функції f(x) при заданих значеннях параметрів a, b. Графік функції на заданому діапазоні. Визначення числових значень кроку. Створення масиву даних згідно з даними, побудування графіку функції для заданих точок.
лабораторная работа [281,7 K], добавлен 04.09.2014Схема алгоритму програми. Алгоритм процедури введення даних, виведення результатів сортування, побудови дерева, перестановки елементів, "вирішення сімейного конфлікту". Приклад для масиву з 20 елементів. Користувацьке вікно та побудова піраміди.
курсовая работа [3,0 M], добавлен 21.02.2011Обчислення елементів масиву даних (векторами та матрицями) в табличному процесорі Microsoft Excel. Аргументи векторної форми функції ПРОСМОТР. Параметри функції ВПР. Приклади використання формули ТРАНСП. Розв’язання систем лінійних алгебраїчних рівнянь.
реферат [1,3 M], добавлен 24.12.2013Ім’я, розмірність, розмір масиву даних. Місце розташування елементів в ньому та здійснення доступу до них. Запис змінної з індексами. Відмінності статистичних і динамічних масивів. Порядок їх опису. Призначення компонента GroupBox. Задання напису у ньому.
лабораторная работа [423,6 K], добавлен 05.11.2014Елементарні та складні типи даних мови ActionScript: особливості, перетворення, основні оператори. Робота з масивами: створення за допомогою конструктора Array(), визначення розмірів, іменовані елементи, методи їх додавання і вилучення із масиву.
реферат [22,8 K], добавлен 03.07.2011Опис процесу створення технічного завдання на розробку бази даних для сільської бібліотеки. Виявлення масиву даних та їх структури. Внесення інформації в базу. Визначення типів і зв’язків між таблицями. Створення інтерфейсу системи керування базою даних.
контрольная работа [174,9 K], добавлен 07.01.2015Розробка алгоритму програми для проведення розрахунків аналітичних виразів та обробки структурованих даних з метою вирішення завдань управління військами. Заповнення двовимірного масиву програмних елементів речового типу та генератор випадкових чисел.
курсовая работа [1,0 M], добавлен 15.05.2019Алгоритм процедури сортування у порядку зростання елементів побічної діагоналі (зліва направо) за допомогою методу вибору мінімального елементу. Підрахунок та визначення кількості перестановок. Виведення масиву на лист MS Excel до та після перетворень.
практическая работа [404,3 K], добавлен 26.09.2013RAID - масив з декількох дисків, керованих контролером, взаємопов'язаних швидкісними каналами. Рівні RAID масивів: переваги та недоліки. Кількість жорстких дисків в комбінованих масивах. Розподіл файлів по JBOD-масиву. Мережеві системи зберігання даних.
контрольная работа [1,6 M], добавлен 15.03.2013Поняття мови програмування С++, її сутність та особливості, призначення та використання. Структура програми, її основні елементи та загальні правила роботи. Охорона праці при роботі з обчислювальною технікою. Апаратні вимоги для виконання програми.
курсовая работа [126,2 K], добавлен 29.03.2009Порядок обробки матриць. Обчислювання, надрукування елементів матриці С, кожен елемент якої дорівнює сумі відповідних елементів матриць А і В. Знаходження середнього значення серед усіх елементів масиву С. Розрахунок значень функцій на заданому інтервалі.
контрольная работа [215,4 K], добавлен 12.09.2010Середовище програмування Visual Studio 2010. Функції стандартного введення-виведення. Робота з побітовими операціями. Робота з функцією заміни у рядку символів. Робота з масивами. Тестування алгоритму роботи програми. Представлення двовимірного масиву.
курсовая работа [652,2 K], добавлен 15.01.2014Характеристика особливостей реалізації пошуку по масиву методами лінійним, бінарним, по "дереву Фібоначе" та екстраполярним на мові програмування Turbo Pascal. Використання алгоритма Рабіна-Карпа та Кнута-Морріса-Пратта для знаходження підрядка в рядку.
курсовая работа [51,0 K], добавлен 16.09.2010Проектування бази даних, що реалізує звіти про графік робіт на об’єктах впродовж місяця. Графічне зображення нагромаджувачів даних. Побудова діаграм потоків даних і переходів станів, таблиць у вигляді двовимірного масиву, запитів. Створення бази даних.
курсовая работа [1,2 M], добавлен 29.02.2012Завантаження системи Turbo Pascal. Робота в середовищі Delphi у режимі консолі. Обчислення значення функції, заданої умовно. Табуляція функції і пошук екстремумів. Селективна обробка масиву. Побудова графічних зображень. Обробка двомірних масивів.
учебное пособие [867,3 K], добавлен 22.02.2010