Головна

Приклади функцій для роботи з одновимірними масивами

  1. A. Допоміжні елементи для зв'язку функцій між собою.
  2. FDDI. Кадр. Процедури управління доступом до кільця і ??ініціалізації роботи кільця.
  3. I Загальна характеристика роботи
  4. I. Завдання для самостійної роботи
  5. I. Кваліфікаційні вимоги до виконання курсової роботи
  6. I. Загальна характеристика роботи 1 сторінка
  7. I. Загальна характеристика роботи 2 сторінка

// 1. Ініціалізація генератора випадкових чисел

void Randomize ()

{

 srand (time (0));

}

Функція ініціалізації генератора випадкових чисел використовує бібліотечні функції srand, В яку як параметр передається поточний час time (0). прототип функції time знаходиться в заголовки .

// 2. Генератор випадкового числа в діапазоні від 0 до range

int Random (int range)

{

 return (rand ()% range);

}

Функція генератора випадкових чисел використовує бібліотечну функцію rand (Прототип в файлі stdlib.h). Функція rand обчислює псевдовипадкове число в діапазоні від 0 до 65535. Для завдання числа в заданому діапазоні використовується залишок від цілочисельного ділення генерується числа на діапазон range.

// 3. Перевірка повторення випадкового числа

// C - покажчик початку масиву, n - індекс нового елементу

int Test_Repetition (int * c, int n)

{Int x, j;

 x = 0; // Вважаємо, що значення нове

 // Цикл порівняння з усіма попередніми

 for (j = 0; j

 if (* (c + n) == * (c + j))

{

 x = 1; // Елементи збіглися

 break;

}

 return x;

}

Функція перевірки повторення випадкового числа використовується тільки тоді, коли за умовою завдання необхідно генерувати неповторним випадкові числа. Ця функція простим перебором порівнює нове число (c [n]) З усіма значеннями масиву.

// 4. Додати новий елемент

// З - покажчик початку масиву, n - номер нового елемента

// Range1, range2 - ліва і права межі діапазону

void New_Item (int * c, int n, int range1, int range2)

{Int x = 0; // Елементи масиву різні

 do

{

 c [n] = Random (range2 - range1) + range1; // Нове значення

 x = Test_Repetition (c, n); // Перевірка на повторення

}

 while (x == 1); // Повторювати, коли елементи збіглися

}

У цій функції, якщо перевірка на «неповторність» елемента не потрібно, достатньо використовувати тільки рядок присвоювання в змінну c [n] результату роботи функції Random.

// 5. Заповнення одновимірного масиву

// C - масив, n - кількість елементів

void Filling (int * c, int n, int range1, int range2)

{Int i;

 c [0] = Random (range2 - range1) + range1; // Елемент з індексом 0.

 // Цикл заповнення масиву

 for (i = 1; i

 New_Item (c, i, range1, range2);

}

Для реалізації заповнення неповторяющимися числами, в функції заповнення масиву доводиться перше значення (з індексом 0) задавати окремо, а не в циклі.

// 6. Роздруківка одновимірного масиву

void Print (int * c, int n)

{Int i;

 for (i = 0; i

 printf ( "% 4d", c [i]);

 puts ( ""); // Перехід на новий рядок

}

// 7. Пошук мінімального значення

// З - покажчик на початок одновимірного масиву,

// N - кількість елементів масиву,

// Index - покажчик на індекс мінімуму

int Min (int * c, int n, int * index)

{Int i, min;

 min = c [0]; // Початкове значення мінімуму

 (* Index) = 0; // Початкове значення індексу мінімуму

 for (i = 1; i

 if (c [i]

{

 min = c [i];

 (* Index) = i;

}

 return min;

}

У функції пошуку мінімального значення в масиві зверніть увагу на використання параметра-змінної index, Яка передається покажчиком.

// 8. Створення дубліката масиву в динамічної пам'яті

int * Copy (int * c, int n)

{Int * m, i;

// Резервування пам'яті під дублікат масиву

 m = (int *) malloc (sizeof (int) * n);

 // Копіювання масиву

 for (i = 0; i

 // Функція повертає адресу нового масиву

 return m;

}

Зверніть увагу, що кількість резервованій пам'яті визначається типом даних одного елемента і кількістю елементів в масиві ((Sizeof (int) * n)). Так як бібліотечна функція для резервування пам'яті (malloc) Повертає нетіпірованний покажчик, то потрібно перетворення до типу. В даному прикладі - це перетворення до типу покажчика на ціле число (int * ).

// 9. Обмін елементів місцями в масиві

void Exchange (int * c, int n, int k)

{Int tmp; // Змінна для тимчасового зберігання даних

 tmp = c [n];

 c [n] = c [k];

 c [k] = tmp;

}

// 10. сортування методом прямого пошуку

void SearchSort (int * c, int n)

{Int i, min, indexMin; int * p;

 for (i = 0; i

 {P = (c + i); // Задати адресу початку масиву

 min = Min (p, n-i, & indexMin); // Знайти мінімум в масиві

 // Обміняти місцями мінімальний елемент з першим

 Exchange (p, 0, indexMin); }

}

Основна частина програми для обробки одновимірних масивів може містити заголовки, попередній опис функцій і головну частину програми. Попередньо описані функції (у вигляді заголовків) можуть бути представлені після головної функції.

#include

#include

#include

#include

#define N 15

void Randomize ();

int Random (int range);

int Test_Repetition (int * c, int n);

void New_Item (int * c, int n, int range1, int range2);

void Filling (int * c, int n, int range1, int range2);

void Print (int * c, int n);

int Min (int * c, int n, int * index);

int * Copy (int * c, int n);

void Exchange (int * c, int n, int k);

void SearchSort (int * c, int n);

// Головна функція

int main ()

{

 int m [N];

 int min, IndexMin;

 int * Duplicate;

 Rus ();

 Randomize ();

 Title ();

 puts ( "\ nЗаполненіе масиву");

 Filling (m, N, -30,70);

 puts ( "\ nРаспечатка масиву \ n");

 Print (m, N);

 puts ( "\ nМінімальное значення масиву \ n");

 min = Min (m, N, & IndexMin);

 printf ( "min =% d його індекс =% d \ n", min, IndexMin);

 puts ( "\ nСозданіе дубліката масиву \ n");

 Duplicate = Copy (m, N);

 puts ( "\ nРаспечатка дубліката масиву \ n");

 Print (Duplicate, N);

 puts ( "\ nСортіровка дубліката методом прямого пошуку");

 SearchSort (Duplicate, N);

 puts ( "\ nРаспечатка дубліката масиву після сортування \ n");

 Print (Duplicate, N);

 puts ( "\ nУдаленіе дубліката");

 free (Duplicate);

 return 0;

}

варіанти завдань

1. Заповнити два масиви, розміром 20 і 30 елементів, відповідно, випадковими цілими числами в діапазоні від -50 до 50. З отриманих двох масивів виділити в два масиви окремо негативні і позитивні числа. Провести сортування отриманих масивів і вихідного масиву по зростанню. Для контролю результату зробити роздруківку масивів, в тому числі вихідного.

2. Заповнити два масиви розміром 20 і 30 елементів випадковим чином буквами латинського алфавіту. Заповнити третій масив тими буквами, які входять і в перший і в другий масив, четвертий масив - залишилися літерами з першого і другого. Провести сортування отриманих масивів. Для контролю результату також зробити роздруківку масивів, в тому числі вихідного.

3. З вихідного масиву символів, заповненого випадковим чином символами з кодами в діапазоні від 21 до 254, виділити в окремі масиви букви латинського алфавіту, як заголовні, так і прописні. Провести сортування отриманих масивів. Для контролю результату зробити роздруківку масивів, в тому числі вихідного.

4. У вихідному масиві символів, заповненому випадковим чином символами з кодами в діапазоні від 21 до 254, виділити в окремі масиви заголовні голосні і заголовні приголосні букви латинського алфавіту. Провести сортування отриманих масивів. Для контролю результату зробити роздруківку масивів, в тому числі вихідного.

5. Два масиву розміром 200 і 5 елементів, відповідно, заповніть у випадковому порядку символами, коди яких розташовані в діапазоні від 40 до 200. Перевірити чи входить менший масив повністю в більший і, якщо це так, то в більшому масиві всі елементи, що належать меншому масиву, замінити символом "пробіл". Виконайте сортування отриманих масивів. Для контролю результату зробіть роздруківку масивів, в тому числі вихідного.

6. У вихідному масиві (розмір 100 елементів), заповненому символами латинського алфавіту і цифр, замініть всі повторні входження кожного символу прогалиною, а все повторювані символи помістіть в другій масив. Виконайте сортування отриманих масивів. Для контролю результату зробіть роздруківку масивів, в тому числі вихідного.

7. Заповніть випадковим чином масив (100 елементів) по черзі буквами латинського алфавіту від A до H і символами цифр від 1 до 8. Перевірте, чи є в даному масиві записи, подібні із записом ходів коня по шахівниці, і, якщо є заповніть ними другий масив. Виконайте сортування отриманих масивів. Для контролю результату зробіть роздруківку масивів, в тому числі вихідного.

8. У вихідному масиві символів, заповненому випадковим чином символами з кодами в діапазоні від 21 до 254, виділити в окремі масиви рядкові голосні і рядкові приголосні букви латинського алфавіту. Провести сортування отриманих масивів. Для контролю результату зробити роздруківку масивів, в тому числі вихідного.

9. У вигляді масиву символів дано текст (введення з клавіатури). Випадковим чином заповніть другий масив з 26 елементів символами, відмінними від букв латинського алфавіту і один від одного, причому кожен символ має зустрічатися один раз. Будемо вважати, що перший елемент другого масиву відповідає букві «а», другий букві «b» і т. Д. Потрібно зашифрувати текст з першого масиву, замінюючи літери першого масиву символами з другого. Проведіть сортування масивів. Для контролю результату зробити роздруківку масивів, в тому числі вихідного.

10. У масив символів вводиться текст російською мовою, що складається з декількох слів. З огляду на, що малі літери російського алфавіту в операційній системі MSDOS розташовані не підряд, а розбиті на два діапазони (від «а» до «п» і від «р» до «я»), слова, що складаються тільки з букв одного з діапазонів помістіть в один масив, а інші в другій. Проведіть сортування отриманих масивів. Для контролю результату зробіть роздруківку масивів, в тому числі вихідного.

11. Введіть з клавіатури текст в масив символів. Визначте, які з слів в масиві складаються з літер із дедалі вищими кодами, які з убутними і які з змішаних. Додайте ці слова в окремі масиви. Проведіть сортування отриманих масивів. Для контролю результату зробіть роздруківку масивів, в тому числі вихідного.

12. Дан масив містить текст. Серед літер тексту особливу роль відіграє знак #, поява якого означає скасування стоїть перед ним літери, кілька знаків # означає скасування відповідного числа букв. Створити масив заповнений текстом з першого масиву з урахуванням ролі цього знака. (Наприклад, ХЕ # E ## НЕLO # LO = HELLO). Провести сортування отриманих масивів. Для контролю результату зробити роздруківку масивів, в тому числі вихідного.

13. З вихідного масиву символів, заповненого випадковим чином символами з кодами в діапазоні від 21 до 254, виділити в окремі масиви символи цифр і розділових знаків. Провести сортування отриманих масивів. Для контролю результату зробити роздруківку масивів, в тому числі вихідного.

14. Заповнити два масиви, розміром 40 і 30 елементів, відповідно, випадковими цілими числами в діапазоні від -50 до 50. З отриманих двох масивів створити два масиви окремо, один з яких містить числа від -10 до 10, а інший - від 20 до 50. Провести сортування отриманих масивів по зростанню. Для контролю результату зробити роздруківку масивів, в тому числі вихідного.

15. Заповніть випадковим чином масив (100 елементів) по черзі буквами латинського алфавіту від A до H і символами цифр від 1 до 8. Перевірте, чи є в даному масиві записи, подібні із записом ходів тури по шахівниці, і, якщо є, заповніть ними другий масив. Виконайте сортування масивів. Для контролю результату зробіть роздруківку масивів, в тому числі вихідного.

16. Заповніть випадковим чином масив (100 елементів) по черзі буквами латинського алфавіту від A до H і символами цифр від 1 до 8. Перевірте, чи є в даному масиві записи, подібні із записом ходів ферзя по шахівниці, і, якщо є, заповніть ними другий масив. Виконайте сортування масивів. Для контролю результату зробіть роздруківку масивів, в тому числі вихідного.

Контрольні питання по темі № 5

1. Якого типу можуть бути індекси масивів?

2. Що таке розмірність масивів?

3. Для чого потрібен «бар'єр» у сортуванні методом прямого включення?

4. Який алгоритм пошуку мінімуму або максимуму в одновимірному масиві?

5. Як знайти індекс елемента в одновимірному масиві по його значенню?

6. Алгоритм пошуку мінімуму або максимуму в двовимірному масиві.

7. Призначення функцій random і randomize?

8. Сортування елементів двовимірного масиву.

9. Як звернутися до елементу масиву за вказівником?




Коротка теоретична довідка та рекомендації щодо виконання | Коротка теоретична довідка та рекомендації щодо виконання

Міністерство освіти і науки Російської федерації | Коротка теоретична довідка та рекомендації щодо виконання | Приклад виконання завдання по темі № 1 | Формули для вирішення завдань | Приклад виконання лабораторного завдання № 2 | Блок-схема вибору функції | Приклади виконання завдання по темі №3. | Приклад рішення задачі по темі №3 з використанням функцій. | Приклад виконання лабораторного завдання № 6 | Коротка теоретична довідка |

© um.co.ua - учбові матеріали та реферати