- •Лабораторна робота №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.2. Визначення змінних програми
Пам'ять для масиву цілих чисел не виділяється на етапі компіляції, так що нам досить оголосити в програмі тільки змінну - покажчик на початок масиву:
int *Ar;
Розмірність масиву визначається при виконанні програми, так що для її збереження потрібна окрема змінна:
int s
Замість змінних будемо застосовувати покажчики:
int *Cr - це покажчик на поточний елемент масиву при його повному створенні.
Змінні для збереження суми елементів і середнього значення й кількості елементів у послідовності залишаються ті ж самі:
int av;
int nn;
3.3. Розробка тексту програми Крім файлів:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
включаємо також файл alloc.h, у якому втримуються описи функцій динамічного виділення/звільнення пам'яті:
#include <alloc.h>
Кодова частина програми починається з ініціалізації датчика випадкових чисел і одержання випадкового числа для розміру масиву:
randomize();
size=random(151)+50;
Функція rand повертає число в діапазоні 0 - 150, додаванням до нього 50 переводимо його в діапазон 50 - 200. Отриманий розмір масиву відразу виводимо на екран:
printf("size=%d\n",size);
Звертаємося до функції виділення пам'яті:
Ar=(int far *)malloc(size*sizeof(int));
Функція malloc() вимагає параметр - розмір запрошеної пам'яті в байтах. Змінна size - це кількість елементів у масиві; для завдання розміру пам'яті в байтах множимо її на розмір одного елемента. Функція malloc() повертає нетипізований покажчик, перетворюємо його в покажчик на int і записуємо в змінну Ar.
Далі організуємо цикл створення масиву. Тут в одному циклі й одержуємо випадкові числа, і виводимо початковий масив на екран.
for (Cr=Ar; Cr<Ar+size; Cr++) {
У початкових установках циклу записуємо в змінну Cr адреса початку масиву, тобто Cr показує на елемент із індексом 0. Наприкінці кожної ітерації Cr збільшується на 1, тобто показує на наступний елемент масиву. Остання ітерація відбувається при значенні Cr=Ar+size-1, тобто Cr буде показувати на останній елемент. У кожній ітерації звертаємося до поточного елемента масиву як *Cr, тобто звертаємося до того, на що показує покажчик Cr.
Далі йде заголовок циклу перебору масиву, що організується так, як і попередній, але в початкових установках присвоюємо ще початкове значення лічильнику nn.
В тілі циклу до поточного елемента масиву звертаємося через покажчик на нього: *Cr. Там, де потрібно запам'ятати початок негативної послідовності, просто зберігаємо поточне значення покажчика Cr у змінній-покажчику Ir.
Внутрішній цикл, у якому обробляється негативна послідовність, має вигляд:
for (av/=nn; Ir<Cr; Ir++)
if (*Ir<av) *Ir=av;
Початкові установки цього циклу - тільки усереднення значення в av, змінна Ir уже містить у собі покажчик на перший елемент негативної послідовності. Наприкінці кожної ітерації Ir збільшується на 1, тобто показує на наступний елемент послідовності (звертання до цього елемента - *Ir). Остання ітерація відбувається при значенні Ir=Cr-1, оскільки Cr показує на перший позитивний елемент за негативною послідовністю.
Кінець програми повторює попередні фрагменти.
Передостанній оператор - звертання до функції free() для звільнення пам'яті, що була виділена функцією malloc(): free(Ar);
Повний текст програми наведений нижче.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <alloc.h>