Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Масиви й покажчики



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

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; Прочитано: 1242 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...