Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторн_робот_Ч2.doc
Скачиваний:
19
Добавлен:
03.11.2018
Размер:
2.12 Mб
Скачать
  1. Приклад розв’язання задачі на еом (варіант №30)

    1. Розробка алгоритму розв’язання задачі

Алгоритм починається з вводу значень елементів цього масиву. Ввід відбувається в циклі з лічильником n, який змінюється від 0 до 9 (блок 2), але як ми побачимо нижче, вихід із циклу може відбуватися і до того, як лічильник досягне кінцевого значення. В кожній ітерації циклу виводиться запрошення (блок 3) і вводяться значення складових частин опису монастиря (блоки 4, 6, 7, 8). Але зразу ж після вводу першої складової - назви - провіряється її значення (блок 5). Якщо введено назву "***", то подальшого ввід не відбувається, а зразу виконується вихід із циклу. В будь-якому випадку після виходу в змінній n залишається кількість введених елементів. Таким чином, програма може обробляти масив із 10 або менше елементів - скільки їх було введено. Ознакою закінчення вводу являється назва "***".

     Далі друкуємо заголовок таблиці (блок 9) і в циклі (блоки 10, 11) - стрічки таблиці з даними. Оскільки параметр цього циклу змінюється від 0 до n-1, буде надруковано n стрічок.

     Наступний складний цикл реалізує сортування таблиці по алгоритму простого перебору стрічок таблиці. Сортування виконується за допомогою вкладеного циклу (блок 12). В першій ітерації зовнішнього циклу виконується пошук елемента масиву з мінімальним значенням поля name. Для цього спочатку мінімальним елементом вважається перший елемент (блок 13). Потім в циклі (блок 14) переглядаються інші елементи масиву, і кожен порівнюється з мінімальним (блок 15). Якщо поле name наступного елемента менше, чим мінімального, то тепер цей елемент вважається мінімальним (блок 16). Індекс мінімального елемента записується в змінну m. Після виходу із внутрішнього циклу, якщо знайдений мінімальний елемент не перший (блок 17), то він міняється місцями з першим (блок 18). Таким чином, мінімальний елемент масиву стає на своє місце. В наступній ітерації зовнішнього циклу виконується пошук мінімуму серед елементів масиву,

Рисунок 15.1 Логічна схема програми обробки масиву структур

 починаючи з другого, в третій - починаючи з третього і т.д. Після виходу з зовнішнього циклу масив являється відсортованим.

Вивід відсортованого масиву (блоки 19 - 21) відбувається точно так, як і вивід початкового масиву (блоки 9 - 11).

    1. Визначення змінних програми

Як ми побачили, елементом масиву являється опис об’єкта. Оскільки опис складається з декількох складових частин різного типу, для нього використовуємо структуру мови C. Опис цієї структури буде мати вигляд:

struct mon {

char name[15]; /* назва */

char sc; /* школа */

int cnt; /* кількість монахів */

float sq; /* площа */

};

     Тут ми резервуємо для назви більше символів, передбачивши можливість появи більш довгих назв, а також надаємо тип int полю cnt, припускаючи, що його значення може бути більше, ніж 255.

     Нам потрібно буде мати масив елементів вказаного типу, слідуючи з цього, об’являємо:

struct mon mm[10];

Для виконання перестановки елементів масиву потрібна буде ще робоча область пам’яті того ж типу, що і елементи масиву, тому ще введемо:

struct mon x;

     Як бачимо із схеми алгоритму, потрібні будуть змінні цілого типу для: кількості введених елементів n, індексів зовнішнього (i) і внутрішнього (j) циклів і індексу мінімального елемента - m. Тому об’являємо:

int i, j, n, m;