- •4. Варіанти індивідуальних завдань
- •5. Приклади розв’язку задач (варіант 00)
- •5.1. Завдання 1
- •5.1.1. Розробка алгоритму рішення.
- •5.1.2. Визначення змінних програми
- •5.1.3. Розробка тексту програми
- •5.1.4. Налагодження програми
- •5.1.5. Результати роботи програми
- •5.2. Завдання 2
- •5.2.1. Розробка алгоритму рішення.
- •5.2.2. Визначення перемінні програми
- •5.2.3. Розробка тексту програми
- •5.2.4. Налагодження програми
- •5.2.5. Результати роботи програми
5.1.5. Результати роботи програми
Результат роботи програми приведений нижче:
0 1 2 3 4 5 6 7 0
0 0 8 9 10 11 12 0 0
0 0 0 13 14 15 0 0 0
0 0 0 0 16 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 17 0 0 0 0
0 0 0 18 19 20 0 0 0
0 0 21 22 23 24 25 0 0
0 26 27 28 29 30 31 32 0
5.2. Завдання 2
5.2.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). Таким чином, мінімальний елемент масиву стає на своє місце. У наступній ітерації зовнішнього циклу виконується пошук мінімуму серед елементів масиву, починаючи з другого, у третьої - починаючи з третього і т.д. Після виходу з зовнішнього циклу масив виявляється відсортованим.
Виведення відсортованого масиву (блоки 19 - 21) відбувається точно так само, як і виведення початкового масиву (блоки 9 - 11).
5.2.2. Визначення перемінні програми
Як ми відзначили, елементом масиву є опис об'єкта. Оскільки опис складається з декількох складових частин різного типу, для нього використовуємо структуру мови C. Опис цієї структури буде мати вид:
struct mon {
char name[15]; /* назва */
char sc; /* школа */
іnt cnt; /* кількість ченців */
float sq; /* площа */ };
Отут ми резервуємо для назви більше символів, чим у роботі :2, передбачаючи можливість появи більш довгих назв, а також даємо тип іnt полю cnt, допускаючи, що його значення може бути більше, ніж 255.
Нам потрібно буде мати масив елементів зазначеного типу, отже, повідомляємо:
struct mon mm[10];
Для виконання перестановки елементів масиву потрібна буде ще робоча область пам'яті того ж типу, що й елементи масиву, тому вводимо ще:
struct mon x;
Як видно зі схеми алгоритму, потрібні будуть перемінні цілого типу для: кількості введених елементів n, індексів зовнішнього (і) і внутрішнього (j) циклів і індексу мінімального елемента - m. Тому повідомляємо:
іnt і, j, n, m;