Видалення елемента із масиву 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Видалення елемента із масиву



Щоб видалити k-й елемент із масиву arr, що має розмір num, необхідно зробити наступне

– залишити без зміни перші (k-1) елементів;

– зсувати всі елементи, починаючи з k-го, на один елемент уліво;

– зменшити кількість елементів масиву num на одиницю.

Ці операції реалізуються за допомогою інструкцій:

for(int i=k; i<num-1; i++)

*(arr+i)=*(arr+i+1);

num--;

Вставка елемента в масив

Нехай є динамічний масив arr розміром num, і нехай k - номер елемента, після якого в масив потрібно вставити елемент хins. Для вставки необхідно виконати наступне:

– створити новий масив arr1 на одиницю більшого розміру, ніж вихідний;

– скопіювати в arr1 без зміни перші k елементів;

– скопіювати в arr1 елементи, починаючи з (k+1)-го (зсув на один елемент),

– на місце (k+1)-го елемента записати значення хins;

– видалити з пам'яті вихідний масив arr.

Відповідний код може мати вигляд:

int *arr1=new int[++num]; //Створення нового масиву

for(i=0; i<=k; i++)

*(arr1+i)=*(arr+i);

*(arr1+k+1)=xins;

for(i=k+1; i<num; i++)

*(arr1+i+1)=*(arr+i);

delete [] arr; //Видалення колишнього масиву

Перестановка двох елементів

Перестановка елементів k і m цілочисельного масиву здійснюється за допомогою робочої змінної int work:

work=arr[k];

arr[k]=arr[m];

arr[m]=work;

Циклічна перестановка елементів

Циклічну перестановку елементів масиву можна відбразити, як одночасне переміщення всіх елементів по масиву, замкнутому у кільце. Циклічну перестановку вліво можна виконати в такий спосіб:

– скопіювати 1-й елемент масиву в робочу змінну;

– зсунути інші елементи з 2-го до N-го на одну позицію вліво;

– скопіювати елемент із робочої змінної в останню звільнену позицію.

Відповідний код буде мати вигляд:

work=*arr;

for(i=0;i<num-1;i++)

*(arr+i)=*(arr+i+1);

*(arr+num-1)=work;

Якщо необхідно виконати циклічну перестановку на kелементів, то організується ще один (зовнішній) цикл:

int k=5, circle=0;

while(circle<k){

work=*arr;

for(i=0;i<num-1;i++)

*(arr+i)=*(arr+i+1);

*(arr+num-1)=work;

circle++;

}

Постановка задачі

Скласти програму, у якій створюється одновимірний динамічний масив і виконується його обробка відповідно до варіанта завдання.

Варіанти

1. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити елемент із номером К. Додати після кожного парного елемента масиву елемент із значенням 0. Роздрукувати отриманий масив.

2. Сформувати одновимірний масив цілих чисел a[], використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити перший елемент рівний 0. Додати після кожного парного елемента масиву елемент із значенням a[i-1]+2. Роздрукувати отриманий масив.

3. Сформувати одновимірний масив цілих чисел a[], використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити всі елементи рівні 0. Додати після першого парного елемента масиву елемент із значенням a[i-1]+2. Роздрукувати отриманий масив.

4. Сформувати одновимірний масив цілих чисел a[], використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити елементи, індекси яких кратні 3. Додати після кожного від’ємного елемента масиву елемент із значенням |a[i-1]+1|. Роздрукувати отриманий масив.

5. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити елементи кратні 7. Додати після кожного непарного елемента масиву елемент із значенням 0. Роздрукувати отриманий масив.

6. Сформувати одновимірний масив цілих чисел a[], використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити елемент із заданим номером. Додати після другого парного елемента масиву елемент із значенням a[i-1]+2. Роздрукувати отриманий масив.

7. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити останній елемент рівний 0. Додати після елемента масиву із заданим індексом елемент із значенням 100. Роздрукувати отриманий масив.

8. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити всі елементи із заданим значенням. Додати перед кожним парним елементом масиву елемент із значенням 0. Роздрукувати отриманий масив.

9. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити перший елемент із значенням, яке відповідає заданій умові. Зсунути масив циклічно на k елементів вправо. Роздрукувати отриманий масив.

10. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити 5 перших елементів масиву. Додати до кінця масиву 3 нових випадкових елементи. Роздрукувати отриманий масив.

11. Сформувати одновимірний масив цілих чисел a[], використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Видалити 5 останніх елементів масиву. Додати в початок масиву 3 елементи із значенням 33. Роздрукувати отриманий масив.

12. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел, і роздрукувати масив. Поміняти місцями мінімальний і максимальний елементи масиву. Видалити з масиву всі елементи, які перевищують його середнє значення більш, ніж на 10%. Роздрукувати отриманий масив.

13. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел, і роздрукувати масив. Видалити з масиву всі елементи, що збігаються з його мінімальним значенням. Додати в початок масиву 3 елементи, які рівні середньому арифметичному масиву. Роздрукувати отриманий масив.

14. Сформувати одновимірний масив цілих чисел a[], використовуючи датчик випадкових чисел. Роздрукувати отриманий масив. Перевернути масив і, якщо число елементів масиву непарне, видалити його середній елемент. Додати в початок масиву 3 елементи із значенням 99. Роздрукувати отриманий масив.

15. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. За запитом виконати циклічну перестановку елементів масиву вліво або вправо. Роздрукувати отриманий масив зліва направо, починаючи з k-ого елемента, і до k-1-го. Видалити з масиву перший і останній елементи. Роздрукувати отриманий масив справа наліво відk-го до k+1-го елемента.

16. Сформувати одновимірний масив цілих випадкових чисел. Видалити всі елементи, більші даного числа x (x увести з клавіатури).Роздрукувати отриманий масив. Циклічно переставити елементи на 3 позиції вправо. Вставити число y(увести з клавіатури) після всіх елементів, менших його.

17. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Виконати циклічну перестановку елементів масиву вліво на 5 позицій. Роздрукувати отриманий масив зліва направо, починаючи з k-ого елемента й до k-1. Додати в масив два елементи – у першу й останню позицію. Роздрукувати отриманий масив справа наліво, починаючи з k-ого елемента й до k+1.

18. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Виконати циклічну перестановку елементів масиву на k позицій вправо. Роздрукувати отриманий масив зліва направо, починаючи з k-ого елемента й до k-1.Додати в масив два елементи – у першу й останню позицію. Видалити з масиву парні елементи. Роздрукувати отриманий масив справа наліво, починаючи з k-ого елемента й до k+1.

19. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Виконати циклічну перестановку елементів масиву на k позицій уліво або вправо (із запитом). Роздрукувати отриманий масив. Додати в масив два елементи – у першу й останню позицію. Видалити з масиву непарні елементи. Роздрукувати отриманий масив справа наліво, починаючи з k-ого елемента й до k+1.

20. Сформувати одновимірний масив цілих чисел, користуючись датчиком випадкових чисел. За запитом виконати циклічну перестановку елементів масиву вліво або вправо. Роздрукувати отриманий масив зліва направо, починаючи з k-ого елемента й до k-1. Додати в масив після елементів з індексами кратними 5 елементи рівні 0. Роздрукувати отриманий масив справа наліво, починаючи з k-ого елемента й до k+1.

21. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. За запитом виконати циклічну перестановку вліво або вправо на k елементів.. Додати в масив 4 нових елементи: один - перед першим і три – після останнього. Роздрукувати отриманий масив справа наліво, починаючи з k -ого елемента й до k+1.

22. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Видалити всі елементи, кратні 3 або 5. Роздрукувати отриманий масив. Вставити два елементи: перший - після максимального елемента, другий - перед максимальним елементом. Роздрукувати отриманий масив.

23. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. За запитом виконати серію циклічних перестановок уліво або вправо з виведенням масиву на екран після кожної перестановки. Серія перестановок припиняється за запитом. Видалити з масиву всі елементи, що збігаються з його максимальним значенням. Роздрукувати отриманий масив справа наліво, починаючи з k-ого елемента й до k+1.

24. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. Виконати циклічну перестановку елементів масиву на k позицій уліво. Роздрукувати отриманий масив зліва направо, починаючи з k-ого елемента й до k-1.Видалити з масиву парні елементи. Роздрукувати отриманий масив справа наліво, починаючи з k-ого елемента й до k+1.

25. Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел. За запитом виконати серію циклічних перестановок вправо з виведенням масиву на екран після кожної перестановки. Серія перестановок припиняється за запитом. Роздрукувати отриманий масив справа наліво, починаючи з k-ого елемента й до k+1. Видалити з масиву непарні елементи. Роздрукувати отриманий масив справа наліво, починаючи з k-ого елемента й до k+1.

Методичні вказівки

1. При складанні програми використовуються динамічні масиви.

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

3. Після виконання кожного пункту завдання організувати виведення масиву.

 

Зміст звіту

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


 

Лабораторна робота7.
"Структури: складені типи даних" (2 год.)

Ціль роботи: Освоєння прийомів роботи із структурами й складання програм, що дозволяють уводити дані в структуру й виводити їх на екран, змінювати й обробляти дані, записані в структуру.

Теоретичні відомості

Структури – це складені типи даних, які побудовані з використанням інших типів. Наприклад,

struct person {

char name[100];

int age; };

де struct – службове слово; person – ім'я (ідентифікатор, тег) структури; name і age – два елементи, що становлять структуру (масив змінних char і ціле число). Оголошення структури повинне закінчуватися крапкою з комою.

Змінні структури оголошуються так само, як змінні інших типів, наприклад,

person fath, ladies[5], *Pfath;

тут ladies[5] – масив структур, *Pfath – покажчик на структуру типу
person.

Доступ до елементів структури здійснюється операцією. (крапка) для імені структури й -> (стрілка) – для покажчика на структуру, наприклад:

fath.age=12;

ladies[3].age=27;

cout<<fath.name;

cout<< ladies[3].age;

cout<<Pfath->name;

Вираз Pfath->name еквівалентний виразу (*Pfath).name, що розіменовує покажчик і робить доступним елемент через операцію «крапка».

Після визначення структури можна оголосити масив структур. Наприклад, щоб оголосити масив з 30 елементів типу name_struct, досить записати:

name_struct elem[30];

Для одержання доступу до конкретного елемента масиву структур потрібно проіндексувати ім'я структури.

Постановка задачі

Скласти програму, що створює масив структур і дозволяє вводити дані в масив, виводити дані на екран і виконувати інші дії. Управління структурами повинне здійснюватися за допомогою меню. У меню присутні опції:

– введення дани,

– виведення даних,

– вихід із програми,

а також додаткові опції, зазначені у варіанті завдання (див. наступний розділ).

Варіанти

Структура (поля) Додаткові опції меню (наступні операції)
  "Абітурієнт" (прізвище, ім'я, рік народження, оцінки вступних іспитів (5 ісп.)) - Пошук за прізвищем (–> введення прізвища –> виведення даних по абітурієнту, а також середнього бала й результату «прийнято/не прийнято»)
  "Абітурієнт" (прізвище, ім'я, рік народження, оцінки вступних іспитів (3 ісп.)) - Пошук за роком народження (–> введення року –> виведення знайдених записів)
  "Абітурієнт" (прізвище, ім'я, рік народження, оцінки вступних іспитів (3 ісп.)) - Зміна даних (–> введення прізвища –> введення нових даних)
  "Абітурієнт" (прізвище, ім'я, рік народження, оцінки вступних іспитів (3 ісп.)) - Фільтрація за роком народження (–> введення року –> виведення знайдених записів)
  "Студент" (прізвище, ім'я, номер групи, середній бал сесії) - Упорядкувати за номером групи (–>виведення даних)
  "Студент" (прізвище, ім'я, номер групи, оцінки іспитів) - Упорядкувати за середнім балом (–>виведення даних)
  "Студент" (прізвище, ім'я, номер групи, середній бал сесії) - Студенти із середнім балом > 4.2 (–>виведення прізвищ і номерів груп)
  "Студент" (прізвище, ім'я, номер групи, оцінки іспитів) - Студенти з оцінками 4 і 5 (–>виведення прізвищ і номерів груп, а також кількості таких студентів)
  "Студент" (прізвище, ім'я, номер групи, оцінки іспитів) - Студенти з оцінками 2 (–> виведення прізвищ) - Кількість «двієчників» у кожній групі
  "Співробітник" (прізвище, ініціали, посада, стаж роботи, оклад) - Додати співробітника
  "Співробітник" (прізвище, ініціали, посада, стаж роботи, оклад) - Співробітники зі стажем більше…(–>введення числа із клавіатури –> виведення прізвищ співробітників)
  "Співробітник" (прізвище, ініціали, посада, стаж роботи, оклад) - Виведення даних (поля структури, а також виплачена сума: оклад за винятком податку 20%) - Змінити дані (-> запит на введення прізвища -> введення нових даних)
  "Співробітник" (прізвище, ініціали, посада, стаж роботи, оклад) - Співробітники з окладом в інтервалі… (–>введення границь діапазону –> виведення прізвищ співробітників)
  "Поїзд" (пункт призначення, номер поїзда, час відправлення) - Поїзда після…(–>введення часу –> виведення поїздів, що відправляються пізніше уведеного часу)
  "Поїзд" (пункт призначення, номер поїзда, час відправлення) - Пункт призначення …(–> введення назви пункту –> виведення інформації про поїзди в даний пункт)
  "Поїзд" (пункт призначення, номер поїзда, час відправлення) - Номер поїзда …(–> введення номера поїзда –> виведення інформації про поїзд)
  "Поїзд" (пункт призначення, номер поїзда, час відправлення) - Зміна в розкладі (–> введення номера поїзда –> введення нового часу відправлення)
  "Поїзд" (пункт призначення, номер поїзда, час відправлення) - Зміна в розкладі (–> введення номера поїзда –> введення нового пункту призначення)
  "Блокнот" (прізвище, ім'я, телефон, день народження) - Пошук телефону (–> введення прізвища –> виведення номера телефону)
  "Блокнот" (прізвище, ім'я, телефон, день народження) - У кого сьогодні день народження? (–> введення поточної дати –> виведення прізвищ персон із зазначеною датою народження)
  "Блокнот" (прізвище, ім'я, телефон, день народження) - Змінити номер телефону (–> введення прізвища –> введення нового номера)
  "Накладна" (назва товару, ціна, кількість, вартість) - Введення даних (товар, ціна, кількість) - Виведення даних (товар, ціна, кількість, вартість) - Загальна сума
  "Накладна" (назва товару, ціна, кількість, вартість) - Введення даних (товар, ціна, кількість) - Виведення даних (товар, ціна, кількість, вартість) - Додати товар
  "Накладна" (назва товару, ціна, кількість, вартість) - Введення даних (товар, ціна, кількість) - Виведення даних (товар, ціна, кількість, вартість) - Внести зміни ((-> введення назви товару -> введення нових дані)

 

Методичні вказівки

Дані, що вводить користувач, розміщуються в масиві структур - записах. Інтерфейс програми повинен бути побудований у вигляді меню з опціями: введення, відображення, пошук, зміна записів і іншими. Введення даних передбачає додавання даних у перший вільний запис.

Зміст звіту

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

Література

1. ШилдтГ.. С++. Базовый курс. 3-е изд. –М: Вильямс.–2005, 624 с.

2. ПратаС.. Язык программирования. Лекции и упражнения. Учебник. –М.–
С-Пб.– К.: ДиаСофт, 2005. – 1104 с.

3. Грицюк Ю., Рак Т. Програмування мовою С++. – Львів: Вид-во ЛДУ БЖД, 2011. – 292 с.

4. ЛибертиДж.. Освой самостоятельно С++. 5-е изд. –М: Вильямс,2006. – 784 с.

5. ПодбельскийВ.В.. Язык Си++. –М.: Финансы и статистика, 2005. – 560 с.

6. БерезинБ.И., БерезинС.Б.. Начальный курс С и С++. –М.: Диалог-МИФИ, 2000. – 288 с.

7. Н. Культин. С/С++ в задачах и примерах. –С.-Пб.: BHV, 2005. – 292 с.

 



Поделиться:


Последнее изменение этой страницы: 2016-12-29; просмотров: 2203; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.173.40 (0.033 с.)