- •Лабораторна робота №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)
- •Контрольні питання
- •Література
Void main()
{
float *t;
int i,n;
printf(“n=”);
scanf(“%d”,&n);
t=(float*)malloc(n*sizeof(float));
for (i=0;i<n;i++)
{
printf(“x[%d]=”, i);
scanf(“%f”, &t[i]);
}
for (i=n-1; i>=0; i- -)
{
if( i%2= =0) printf(“\n”);
printf(“\t x[%d]=%f”,i,t[i]);
}
free(t);
}
У даному прикладі n – кількість чисел типу, що вводяться, float; t- покажчик на початок області, виділюваної для розміщення n чисел, що вводяться.
Доступ до ділянок виділеної області пам'яті виконується за допомогою операції індексування t[і] і t[і-1].
3. Приклад розв’язання задачі на еом (варіант №30)
3.1. Розробка алгоритму вирішення
На початку виконання, після ініціалізації датчика випадкових чисел, потрібно одержати випадкове число в діапазоні 50 - 200 (назвемо його size) і виділити пам'ять для масиву цілих чисел розміром size. Перед самим виходом із програми потрібно звільнити виділену пам'ять (після блоку 19).
На першому етапі виконання програми необхідно буде сформувати масив випадкових чисел. Перед тим як будемо звертатися до датчика випадкових чисел, необхідно його проініціалізувати (блок 2). Далі організуємо цикл із лічильником (блок 3), у кожній ітерації якого генерується наступне випадкове число й записується в наступний елемент масиву (блок 4). Після закінчення циклу заповнення масиву виводимо масив на екран (блок 5).
Нам необхідно буде обчислювати середнє значення послідовності, отже - підраховувати кількість елементів у ній. Для цього вводимо змінну nn - лічильник елементів, нульове значення цієї змінної буде показувати, що в нас немає послідовності для обробки. На початку обробки встановлюємо nn=0 (блок 6).
Далі організуємо цикл із лічильником (блок 7), у якому перебираємо елементи масиву. Для кожного елемента в першу чергу перевіряється його знак (блок 8). Якщо це негативний елемент, то це може бути перший або не перший елемент послідовності. Це можна визначити, перевіряючи значення змінної nn: якщо вона 0 - це перший елемент (блок 9). Для першого елемента запам'ятовуємо в змінної ib індекс початку послідовності, установлюємо лічильник елементів nn в 1, а в змінну av записуємо значення цього елемента (блок 10). Для не першого елемента ми збільшуємо лічильник на 1, а значення елемента підсумуємо із значенням змінної av (блок 11). Таким чином, змінна av відіграє роль накопичувача суми елементів послідовності.
Якщо ж черговий елемент послідовності позитивний, то виникає питання - чи не є цей елемент першим позитивним елементом після негативної послідовності? Це можна перевірити по лічильнику nn. Якщо елемент перший, то значення nn повинне бути більше 0 (блок 12). Якщо ні, то необхідно обробити ту негативну послідовність, що тільки що закінчилася. Для обробки в першу чергу одержуємо середнє значення (блок 13). Потім організуємо цикл (блок 14) з лічильником j, що змінюється від ib (індекс початку негативної послідовності, що ми зберегли раніше) до i-1 (i - це індекс першого позитивного елемента після негативної - це індекс першого позитивного елемента після негативної послідовності, отже i-1 – індекс останнього елемента негативної послідовності). У кожній ітерації цього циклу ми порівнюємо j-й елемент масиву із середнім значенням av (блок 15).
Рисунок 11.1 - Логічна схема програми обробки вказівників і масивів
Якщо значення елемента менше середнього (тобто більше за абсолютним значенням), то середнє значення записується в j-й елемент (блок 16), якщо ж немає - нічого не відбувається. По виходу із циклу ми встановлюємо лічильник nn в 0 (блок 17), як ознака того, що в нас немає неопрацьованої послідовності. Для не першого позитивного елемента немає необхідності що-небудь робити.
Після виходу з того циклу, що почався в блоці 7, необхідно перевірити, чи не залишилася неопрацьована послідовність і, якщо так, обробити її. На схемі алгоритму показано це одним блоком 18, дії, які виконуються в цьому блоці тотожні діям, які детально показані в блоках 12 - 17.
По закінченню обробки виводимо масив-результат (блок 19) і закінчуємо програму.