- •Лабораторна робота №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)
- •Контрольні питання
- •Література
-
Теоретичні відомості
Структура – це іменована сукупність даних різних типів.
Існують способи завдання структурного типу
1-й спосіб
struct ім'я_структурного_типу { визначення елементів };
struct – службове слово (ключове) чи специфікатор структурного типу;
ім'я_структурного_типу – грає ту ж роль, що і специфікатори типів int, double, float ( вибирається довільно програмістом);
визначення елементів – сукупність одного чи більш описів об'єктів структури.
2-й спосіб
Ввести структурний тип можна за допомогою typedef, що дозволяє увести власне позначення для будь-якого визначення типу.
Формат визначення структурного типу:
typedef struct {визначення елементів}позначення структурного типу ;
3-й спосіб
Ввести структурний тип можна за допомогою директиви #define.
Формат визначення структурного типу
#define позначення структурного типу struct \
{ визначення елементів структури}
Визначення структури в програмі
1-й спосіб
Формат визначення конкретних структур має вид:
1) struct ім'я_структурного_типу список_імен_структур;
2) struct ім'я_структурного_типу {визначення елементів} список структур;
2-й спосіб
Якщо структурний тип був визначений через typedef, то структури можуть уводиться за допомогою імені структури (avto).
3-й спосіб
Після визначення структури в #define визначити структури можна за допомогою препроцесорного ідентифікатора
4-спосіб
Можна визначити структури, без імені структурного типу, тобто так називаний «безіменний» структурний тип. Такий тип, звичайно, використовується в програмі для однократного визначення структур:
struct {визначення елементів} список структур;
Виділення пам'яті для структур
При кожному визначенні структури їй виділяється пам'ять у такій кількості, щоб могли розміститися дані всіх елементів.
Реальний розмір пам'яті в байтах, що виділяється для структури, можна визначити за допомогою операції
sizeof (ім'я структури)
sizeof (ім'я структурного типу)
Елементи структури в пам'яті розміщаються підряд:
Наприклад, struct str
{char pole1;
Int pole2 ;
float pole3
};
Ініціалізація і присвоювання структур:
Ініціалізація структур схожа на ініціалізацію масивів.
1-й спосіб
Безпосередня ініціалізація при визначенні структури. Наприклад,
struct student stud1={“Іванов”, “ФАКСУ“, 1}
struct st2={'Х', 12, 97.34};
2-й спосіб
Стандарт Сі дозволяє присвоювання структур ( у відмінності від такої можливості для масивів). Наприклад,
struct student {char FIO[10];char fak[6]; int kurs;} stud1,stud2;
syud1=stud2; - якщо визначена stud1.
Доступ до елементів структури
1-й спосіб
Доступ до елементів структур забезпечується за допомогою уточнених імен:
Формат організації доступу:
ім'я структури . ім'я елемента
Наприклад,
stud1.FIO – перемінна-масив типу char[10];
stud1.fak - перемінна-масив типу char[6];
stud1.kurs – перемінна типу int;
Операція (.) називається операцією доступу до елемента структури і має самий високий ранг поряд з дужками () й операцією (операція доступу до елементів структури через її покажчик, що адресує,)
Уточнене ім'я структури володіє усіма правами даних (об'єктів) відповідних типів. Їх можна використовувати у виразах, їх значення можна вводити з клавіатури і т.д.
2-й спосіб
Покажчик на структуру, налаштований на конкретну структуру того ж типу, забезпечує доступ до її елементів двома способами:
-
(*покажчик на структуру) . ім'я елемента
-
покажчик на структуру ім'я елемента
Перший спосіб доступу традиційний, і заснований на операції розіменування покажчика, що його адресує. Наприклад,
Якщо struct Book { char title[10]; char author[10]; float cost; };
struct Book b1, b2, *b;
тоді доступ до елементів структур b1 і b2 забезпечується за допомогою :
(*b).title чи b( title
(*b).cost чи b( cost
Другий спосіб доступу до елементів структури за допомогою «налаштованого» на неї покажчика передбачає застосування спеціальної операції , що має найвищий ранг, і називається операцією непрямого вибору компонента структурованого об'єкта, що адресується покажчиком.