- •Лабораторна робота №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)
- •Контрольні питання
- •Література
3.3. Визначення змінних програми (варіант 1)
Програма буде складатися з двох функцій - main() і fill(). Відповідно до принципу модульності бажано, щоб функції мали мінімальну кількість загальних змінних, і тут ми маємо можливість обійтися зовсім без них. Усі
змінні, з якими працюють наші функції, будуть локальними змінними функцій або параметрами.
Змінні для функції main().
Покажчик на початок лінійного масиву, у якому розміщуються дані матриці:
int *Ar;
Розмірність масиву:
int S;
Загальна кількість елементів масиву (його використання буде видно з тексту програми):
Int size;
Покажчик на поточний елемент масиву при його виводі:
int *Cr;
Лічильник виведених елементів:
int i;
Параметри для функції fill().
Покажчик на початок лінійного масиву, у якому розміщуються дані матриці:
int *A;
Розмірність масиву:
int s;
Змінні для функції fill().
Покажчик на поточний елемент масиву при його обробці:
int *C;
Номери рядка і стовпця:
short l, r;
Поточний член лінійної послідовності: int k=1;
3.4. Розробка тексту програми (варіант 1)
Текст програми починаємо з підключення файлів: stdio.h, alloc.h, stdlib.h (в останньому визначені макроси max і min).
Включаємо опис функції fill() і відкриваємо головну функцію. У головній функції об’являємо її локальні змінні, виводимо запрошення і вводимо значення розмірності матриці S. Розмірність порівнюється з нижньою і з верхньою границею і, якщо вона виходить за границі, виводиться відповідне повідомлення і програма завершується (функцією exit()). Якщо S задовольняє встановленим умовам, його значення виводиться на екран.
Потім виділяється пам'ять для розміщення матриці. Для цього викликається функція malloc(). Їй передається розмір пам'яті в байтах, що потрібний для розміщення S2 елементів типу int. Функція malloc() повертає покажчик на виділену область пам'яті, значення цього покажчика записується в змінну Ar - це буде покажчик на початок масиву, в якому розмістяться дані матриці. Якщо значення, що повернула функція malloc(), - порожній покажчик, це ознака того, що пам'яті не вистачає, у цьому випадку виводиться повідомлення і програма завершується.
Оператор:
fill(Ar,S); - звертання до функції заповнення матриці. Функції передаються: покажчик на початок масиву і розмірність матриці.
Після повернення управління з функції fill() уже готова матриця виводиться на екран. При виводі матриця розглядається як лінійний масив з S2 елементів. Лічильник i міняється від 0 до S2-1. Але звертання до елементів матриці в цьому циклі ведеться через покажчик Cr. У початкових установках цей вказівник установлюється на початок масиву, а після кожної ітерації збільшується на 1, тобто зміщується на наступний елемент масиву. Лічильник i використовується для визначення моменту виходу з циклу, а також для переходу на новий рядок екрана після виводу кожних S елементів - для цього перевіряється умова: i%S==S-1.
Останньою дією у функції main() є звільнення за допомогою функції free() виділеної раніше пам'яті.
Функція fill() отримує параметри - покажчик на початок масиву і розмірність матриці. Тіло функції починається з об’явлення її локальних змінних, перемінна k отримує початкове значення при об’явленні.
Далі у функції організуються вкладені цикли для перебору стрічок і стовпців. Але номери стрічки і стовпця використовуються не для звертання до елементів матриці, а тільки для перевірки, чи попадає елемент у нульову або ненульову область (у точній відповідності умовам, наведеним у п.3.2). Звертання до елементів матриці ведеться через покажчик C, що вказує на поточний елемент матриці. Цей покажчик установлюється на початок масиву в початкових установках зовнішнього циклу і збільшується на 1 наприкінці кожної ітерації внутрішнього циклу.
Функція max() реалізована як макрос бібліотеки stdlib (заголовочний файл stdlib.h), який повертає більше значення з двох заданих a і b. Функція повертає результат такого ж типу, як і тип її аргументів. Аргументи і повертаючі значення повинні бути того ж типу. Функція призначена тільки для програм на мові С.
Синтаксис функції: (type) max(a,b);
Параметри: a, b - значення будь-якого числового типу (int, long.double і т.д.)
Приклад використання функції max():
#include<stdio.h>
#include<stdlib.h>
main()
{
int a=9, b=45;
int c=max(a,b);
printf(“max(%d,%d)= =%d\n”, a, b, c);
return 0;
}
Функція mіn() реалізована як макрос бібліотеки stdlib (заголовочний файл stdlib.h), який повертає менше з двох заданих значень a і b. Тип цієї функції співпадає з типом її аргументів. Аргументи і повертаючі значення повинні бути одного і того ж типу. Цю функцію можна використовувати тільки в програмах на мові С.
Синтаксис функції: (type) min (a, b);
Параметри: a, b - значення будь-якого числового типу (int, long.double і т.д.)
Приклад використання функції mіn() :
#include<stdio.h>
#include<stdlib.h>
main()
{
int a=9, b=45;
int c=min(a,b);
printf(“min(%d,%d)= =%d\n”, a, b, c);
return 0;
}
Повний текст програми наведений нижче.
#include <stdio.h>
#include <alloc.h>
#include <stdlib.h>