
- •Лабораторна робота №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( )
{
char B[]="Сезам, відкрийся!";
printf("%s",B);
} /* Кінець програми */
Результат виконання програми:
Сезам, відкрийся!
У програмі довжина масиву В - 17 елементів, тобто довжина рядка, що поміщається в масив (16 символів), плюс нульовий байт закінчення рядка. Саме 17 байтів виділяється при ініціалізації масиву в приведеному прикладі. Ініціалізація масиву символів за допомогою строкової константи являє собою скорочений варіант ініціалізації масиву і введена в мову для спрощення. Можна скористатися звичайною ініціалізацією, помістивши початкові значення елементів масиву у фігурні дужки і не забувши при цьому помістити наприкінці списку початкових значень спеціальний символ закінчення рядка '\0'. Таким чином, у програмі була б припустима така ініціалізація масиву В:
char B[ ]={'С','е','з','а','м',',',' ','в','і', 'д','к','р','и','й','с','я','!','\0' };
Угоду про признак закінчення рядка потрібно дотримувати, формуючи в програмах рядки з окремих символів, Як приклад розглянемо наступну задачу: "Ввести речення, що закінчується крапкою, слова в якому відділені пробілами. Надрукувати останнє слово речення".
Аналіз умови задачі дозволяє виявити наступні помилкові ситуації й особливі випадки: відсутність крапки наприкінці речення; пробіл чи пробіли перед першим словом речення; кілька пробілів між словами; пробіли перед крапкою, що завершує речення; відсутність слів у реченні (тільки крапка). Щоб не ускладнювати рішення задачі, приймемо угоду про те, що речення, що вводиться, завжди розміщається на одному рядку дисплея, тобто довжина його не перевищує 80 символів. Це дозволить легко виявляти відсутність крапки наприкінці пропозиції й обмежує довжину будь-якого слова речення. Щоб врахувати особливі ситуації з пробілами, необхідно при аналізі чергового введеного символу (перемінна s) розглядати і попередній символ (перемінна ss). Для виявлення відсутності слів у реченні будемо обчислювати довжину k кожного чергового слова, що вводиться. Якщо k==0, а вводиться символ '.', то це ознака порожнього речення.
Текст програми:
/* Надрукувати останнє слово в реченні */
#include <stdio.h>
Void main( )
{
char s,ss; /* s - символ, що вводиться*/
/* ss - попередній уведений символ */
char A[80]; /* Масив для слова */
int i,k; /* k *- довжина слова */
printf("Напишіть речення з крапкою в "
"кінці:\n");
for (i=0,s=' ',k=0; ³<=79; i++)
{
ss=s; s=getchar( );
if (s==' ') continue;
if (s=='.') break.;
if (ss==' ') k=0;
A[k]=s; k++;
}
/*Вихід по крапці чи по закінченні введення рядка*/
if (і==80 || k=0)
printf(" Невірне речення \n");
else
{
A[k]='\0'; /* Кінець рядка */
printf("Останнє слово: %s",A) ;
}
} /* Кінець програми */
Читання даних, що вводяться, виконується посимвольно в циклі з параметром. Якщо вводиться пробіл, то оператор continue викликає перехід до наступної ітерації. Якщо введена крапка, то цикл переривається. При цьому в перших k елементах масиву А[] запам'ятовується останнє слово пропозиції. Якщо введений символ відмінний від крапки і пробілу, то аналізується попередній символ. Якщо це пробіл, то починається введення наступного слова і встановлюється нульове значення k. У наступних операторах введений символ записується в k-й елемент масиву А і k збільшується на 1. Вихід з циклу можливий з появою крапки або після введення 80 символів. Останнє виконується при відсутності в реченні крапки. У цьому помилковому випадку і==80. Коли в реченні немає слів, k залишається рівним нулю. Якщо i<80 і k не дорівнює 0, то в k-й елемент масиву А записується ознака кінця рядка (останнього слова речення), і вона як єдине ціле виводиться на друк.
Результат виконання програми:
Напишіть речення з крапкою наприкінці:
Орфографічний словник.
Останнє слово: словник
Як ще раз ілюструє приведена програма, робота із символьними рядками - це робота з масивами типу char. При цьому варто звертати увагу на обов'язкову присутність наприкінці рядка (в останньому зайнятому елементі масиву) символу '\0' і не допускати його випадкового знищення при обробці.