- •Лабораторна робота №10
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Int len (char e[ ])
- •Int len (char *s)
- •Void invert(char e[ ])
- •Void main( )
- •Int index(char [ ], char [ ]);
- •Int row(char c1[ ], char c2[ ])
- •Void cone(char *c1, char *c2)
- •Void substr(char *c1, char *c2, int n, int k)
- •3. Приклад розв’язання задачі на еом (варіант 3, завдання №7)
- •Void ChangeStr(char **s1,int m)
- •3.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №11
- •Тема: Особливості роботи з одномірними динамічними масивами
- •Мета роботи: Отримання практичних навиків у роботі з одномірними динамічними масивами в мові c
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Void main()
- •3. Приклад розв’язання задачі на еом (варіант №30)
- •3.2. Визначення змінних програми
- •3.3. Розробка тексту програми Крім файлів:
- •Int main(void) {
- •3.4. Налагодження програми
- •3.5. Результати роботи програми
- •Контрольні запитання
- •2. Теоретичні відомості
- •Int**array;
- •Void quart(int n, float * х)
- •Void main()
- •Void quart (int n, float X [ ])
- •3. Приклад розв’язання задачі на еом (варіант №30)
- •3.1. Розробка алгоритму вирішення
- •3.2. Представлення матриці в пам'яті
- •3.3. Визначення змінних програми (варіант 1)
- •Int size;
- •3.4. Розробка тексту програми (варіант 1)
- •Void fill(int *, int);
- •Void fill(int *a, int s) {
- •3.5. Відмінності для варіанту реалізації 3
- •Void fill(int far **, int);
- •Void fill(int far **a, int s) {
- •3.6. Налагодження програми
- •3.7. Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №13
- •Порядок виконання роботи
- •1. Варіанти завдання Завдання 1
- •2. Теоретичні відомості
- •Void main( )
- •Void main( )
- •Void main( )
- •3.Стандартні функції для роботи зі стрічками (бібліотека string.H)
- •4. Приклади використання стандартних функцій для роботи зі стрічками
- •Функція аналогічна до stpcpy, strcpy, strncat
- •Функція аналогічна до strcspn, strrchr, strspn, strstr
- •Int far _fstrcmp(const char far *s1, const char far *s2);
- •Функція аналогічна до stpcpy, strncpy
- •- Size _t maxlen - максимальне число символів, які копіюємо з вихідної стрічки в результуючу.
- •Приклад: /*strncpy/cpp*/
- •5. Приклад розв’язання задачі на еом (варіант 2)
- •5.1. Розробка алгоритму вирішення
- •5.2 Розробка тексту програми
- •Int main()
- •4.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №14
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Void main( )
- •Приклади розробки функцій для обробки текстової інформації
- •Int len (char e[ ])
- •Int len (char *s)
- •Void invert(char e[ ])
- •Void main( )
- •Int index(char [ ], char [ ]);
- •Int row(char c1[ ], char c2[ ])
- •Void cone(char *c1, char *c2)
- •Void substr(char *c1, char *c2, int n, int k)
- •3. Приклад розв’язання задачі на еом (завдання 2, варіант 7)
- •Void ChangeStr(char **s1,int m)
- •4.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №15
- •Порядок виконання роботи
- •Варіанти завдання
- •Теоретичні відомості
- •Int pole2 ;
- •Приклад розв’язання задачі на еом (варіант №30)
- •Розробка алгоритму розв’язання задачі
- •Визначення змінних програми
- •Розробка тексту програми Текст програми починаємо з підключення файлу stdio.H.
- •Int main(void) {
- •If (!strcmp(mm[n].Name,"***")) break;
- •Контрольні запитання
- •Лабораторна робота №16
- •Порядок виконання роботи
- •1. Варіанти завдання
- •Теоретичні відомості Читання і запис текстових файлів
- •Int main ()
- •Приклад розв’язання задачі на еом (варіант 6)
- •Контрольні запитання
- •Лабораторна робота №17
- •Порядок виконання роботи
- •Варіанти завдання
- •Теоретичні відомості Читання і запис двійкових файлів
- •Відкриття двійкових фалів
- •Файли з послідовним доступом
- •Запис даних у файл c послідовним доступом
- •Int main()
- •If ( ! outf)
- •Int array[100];
- •Int main()
- •If ( ! inpf)
- •Int array[100];
- •Файли з довільним доступом
- •Int main()
- •If ( ! inpf)
- •Int main()
- •If ( ! outf)
- •Передача файлів між комп’ютерами.
- •Програмне підтвердження зв’язку
- •Перекачування файлу
- •Void send_file(fname)
- •Void wait(port)
- •Int port;
- •Прийом файлу
- •Void rec_file()
- •If(ferror(fp)) {
- •Void get_file_name(f)
- •Приклад розв’язання задачі на еом (варіант 10)
- •Контрольні питання
- •Література
-
Приклад розв’язання задачі на еом (варіант №30)
-
Розробка алгоритму розв’язання задачі
Алгоритм починається з вводу значень елементів цього масиву. Ввід відбувається в циклі з лічильником 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).
-
Визначення змінних програми
Як ми побачили, елементом масиву являється опис об’єкта. Оскільки опис складається з декількох складових частин різного типу, для нього використовуємо структуру мови 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;