![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Змінна, значенням якої є адреса іншої змінної, називається покажчиком. При оголошенні покажчика перед ідентифікатором записується знак *:
int a, *pa;
– оголошення цілої змінної а й покажчика ра на цілочисельну змінну. Щоб покажчик зв'язати з певною змінною, потрібно покажчику присвоїти адресу цієї змінної (адреса позначається значком амперсанду &):
pa = &a;
У С/С++ ім'я масиву є також покажчиком на масив, що посилається на перший елемент масиву (елемент із індексом 0):
pa
![]() |
Таким чином, адресу першого елемента масиву можна одержати як pa або &a[0]. Значення першого елемента масиву повертається операцією розіменування:
int w = *pa;
– змінній w присвоїли значення змінної, розміщеної за адресою pa, тобто a[0].
6.1.3. Записи «покажчик-зсув» і «покажчик-індекс»
Покажчик масиву посилається на перший елемент. Зміщуючи покажчик, можна звернутися до наступних елементів масиву, наприклад,
W = *(pa+2);
– змінній w присвоюється значення 3-го елемента масиву (у цьому виразі 2 – це зсув покажчика). Наведений запис – це запис "покажчик-зсув". Дужки обов’язкові, оскільки пріоритет операції * вище, ніж пріоритет +. Адреса елемента a[2], тобто &a[2], може бути записана як pa+2.
Усі елементи масиву можна записати за допомогою покажчиків і зсувів, а запис "покажчик-зсув" можна застосовувати до імені масиву як до покажчика, наприклад.
w = *(a+1)
– змінній w присвоєне значення 2-го елемента a[1].
Покажчики можна проіндексувати точно так само, як і масив. Наприклад, вираз
pa[1]
посилається на елемент масиву a[1]. Даний вираз називається записом "покажчик-індекс".
Наведемо приклад виведення елементів масиву з використанням запису «покажчик-зсув»
#include <iostream.h>
int main(){
int v[3]={1,3,5};
int*p1=v;
for(int i=0;i<3;i++)
cout<<*(p1+i)<<"\t";
return 0;
}
Для виведення елементів із використанням запису «покажчик-індекс» в операції cout потрібно записати:
cout << p1[i] << "\t";
6.1.4. Пошук найменшого й найбільшого елементів масиву
Найпростіше шукати найменший елемент у масиві простим перебором. Нехай a[] – цілочисельний масив розміру n, res – індекс елемента, який шукаємо.
int res=0;
for (int i=0; i<n; i++)
if (a[i]<a[res])
res=i;
Якщо замінити операцію < на >, то виконується пошук найбільшого елемента.
6.2. Постановка задачі
Скласти програму, у якій створюється масив і виконується його обробка відповідно до варіанта завдання.
6.3. Варіанти
1. Створити масив з 30-ти натуральних чисел від 1 до 10. Елементи масиву послідовно зростають від 1 до 10, потім після 10 слідує 1, 2 і так далі. Вивести масив на екран в один рядок за допомогою cout.
2. Створити масив з 30-ти парних чисел 2, 4, 6,... Вивести масив на екран в один рядок за допомогою printf. Вивести на екран тільки елементи, які кратні 4.
3. Створити масив з 30-ти непарних чисел 1, 3, 5,.. Вивести масив на екран за допомогою printf. Вивести на екран тільки елементи, які кратні 3.
4. Створити масив з 10-ти чисел-квадратів 12, 22 32,.. Вивести масив на екран за допомогою printf. Вивести на екран тільки елементи, які подані парними числами,
5. Створити масив з 10-ти чисел-квадратів 12, 22 32,.. Вивести масив на екран за допомогою printf. Обчислити суму 5-го і 10-го елементів масиву, доступ до яких забезпечується записом «покажчик-зсув».
6. Створити масив з 10-ти чисел-кубів 13, 23 33,.. Вивести масив на екран за допомогою cout. Обчислити різницю 6-го і 10-го елементів масиву, доступ до яких забезпечується записом «покажчик-зсув».
7. Користувач уводить елементи в цілочисельний масив mas[5] за допомогою cin. Вивести отриманий масив на екран за допомогою cout. Обчислити і вивести суму елементів масиву з непарними індексами.
8. Користувач уводить елементи в цілочисельний масив mas[5] за допомогою операції cin і запису «покажчик-зсув». Вивести масив на екран за допомогою cout. Визначити суму елементів масиву й вивести її на екран.
9. Користувач вводить елементи в цілочисельний масив mas[5] за допомогою функції scanf. Вивести масив на екран за допомогою printf. Визначити суму елементів з парними індексами і вивести її на екран.
10. Створити і вивести на екран масив з 30-ти непарних чисел 1, 3, 5,... Користувач визначає номери елементів, суму яких потрібно обчислити. Вивести суму на екран.
11. Створити і вивести на екран масив з 10-ти чисел-кубів 13, 23 33, … За допомогою запису «покажчик-індекс» визначити суму елементів масиву й вивести її на екран.
12. Створити і вивести на екран масив з 10-ти чисел-квадратів 12, 22 32,.. За допомогою запису «покажчик-індекс» визначити суму непарних елементів масиву й вивести її на екран.
13. Створити і вивести на екран масив з 10-ти чисел-квадратів 12, 22 32,.. За допомогою запису «покажчик-індекс» визначити суму парних елементів масиву, суму елементів і вивести ці дані на екран.
14. Створити і вивести на екран масив з 30-ти непарних чисел 1, 3, 5,..... Користувач визначає номери елементів, суму яких потрібно обчислити. Знайти суму за допомогою запису «покажчик-індекс».
15. Користувач уводить елементи в цілочисельний масив mas[10]. Вивести масив на екран за допомогою printf. Знайти номери непарних елементів і вивести ці номери на екран.
16. Користувач уводить елементи в цілочисельний масив mas[10]. Вивести масив на екран за допомогою cout. Знайти номери парних елементів і суму цих номерів.
17. Користувач уводить елементи в цілочисельний масив mas[10] за допомогою функції scanf.. Вивести масив на екран за допомогою printf. Знайти максимальний елемент масиву й вивести на екран значення елемента і його номер.
18. Користувач уводить елементи в цілочисельний масив mas[10] за допомогою функції scanf і запису «покажчик-зсув». Вивести масив на екран за допомогою printf. Знайти мінімальний елемент масиву й вивести на екран значення елемента і його номер.
19. Користувач уводить елементи в цілочисельний масив mas[10] за допомогою операції cin і запису «покажчик-зсув». Вивести масив на екран за допомогою cout. Визначити, чи є в масиві рівні елементи, і вивести відповідне повідомлення на екран.
20. Користувач уводить елементи в цілочисельнні масиви mas1[5] і mas2[5]. Вивести масиви на екран за допомогою cout. Визначити, чи є рівні елементи у двох масивах, і вивести відповідне повідомлення на екран.
21. Користувач уводить елементи в цілочисельнні масиви mas1[5] і mas2[5]. Вивести масиви на екран за допомогою printf. Визначити, чи є рівні елементи із двох масивів. Порівняння елементів виконувати шляхом переміщення покажчика за допомогою запису «покажчик-зсув».
22. Користувач уводить елементи в цілочисельні масиви mas1[7] і mas2[7]. Вивести масиви на екран за допомогою cout. Визначити, чи є рівні елементи із двох масивів. Порівняння елементів виконувати шляхом переміщення покажчика за допомогою запису «покажчик-індекс».
23. Створити масив з 6-ти чисел-квадратів 12, 22 32,.. Вивести масив на екран за допомогою printf. З використанням запису «покажчик-індекс» вивести адреси елементів; кожну адресу в окремий рядок.
24. Створити масив з 6-ти чисел-кубів 13, 23 33,.. Вивести масив на екран за допомогою cout. З використанням запису «покажчик-зсув» вивести адреси елементів; адреси відокремити табуляцією.
25. Користувач уводить елементи в цілочисельний масив mas[5] за допомогою cin і запису «покажчик-зсув». Вивести масив на екран з використанням операції cout. Знайти максимальний елемент масиву й вивести на екран значення елемента і його номер.
6.4. Методичні вказівкі
Для відділення елементів масиву на екрані використовувати табуляцію, пробіли або маніпулятори (при роботі з cout).
6.5. Зміст звіту
1. Постановка задачі.
2. Варіант завдання.
3. Код програми.
4. Скріншот вікна з результатами обчислень.
7. Лабораторна робота 6.
«Динамічні одновимірні масиви» (4 год.)
Ціль роботи: Навчитися створювати й видаляти динамічні масиви, ініціалізувати масив випадковими числами. Одержати навички вставки й видалення елементів із масиву, прийоми парних і циклічних перестановок елементів і ін.
7.1. Теоретичні відомості
7.1.1. Динамічні масиви
Якщо до початку роботи програми число елементів у масиві невідоме або це число змінюється в процесі обчислень, варто використати динамічні масиви. Пам'ять під такі масиви виділяється в ході виконання програми за допомогою операції new. Адреса початку масиву зберігається у змінній - покажчику, наприклад,
int n=20;
float *a = new float[n];
Обнулювання пам'яті при її виділенні не відбувається. Ініціалізувати динамічний масив не можна. Звертання до елемента динамічного масиву здійснюється так само, як і звертання до елемента звичайного, наприклад, a[5] або *(a+5).
Якщо динамічний масив для роботи програми більше не потрібний, можна звільнити пам'ять, що він займав. Це виконується інструкцією:
delete [] a;
Квадратні дужки для видалення масиву обов'язкові, розмір масиву не вказується.
Дата публикования: 2015-04-07; Прочитано: 1265 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!