операції над стрічками

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Кафедра інформаційних систем та мереж

Інформація про роботу

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Теорiя алгоритмiв i математичнi основи представленння знань

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ,,ЛЬВІВСЬКА ПОЛІТЕХНІКА’’ Кафедра інформаційних систем та мереж / Лабораторна робота №2 на тему: операції над стрічками Мета роботи: набуття практичних навичок застосування операцій над стрічками. Завдання Розробити процедури та функції які забезпечують виконання операції вказаних в завданні. В контрольному прикладі передбачити всі можливі комбінації вхідних параметрів (нульова довжина, вихід за межі стрічки і т.п.), в тому числі і неправильні. № варіанту індивідуального завдання 10. Визначення довжини слова з номером n. Опис алгоритму: В даній лабораторній я створюю алгоритм знаходження довжини вказаного слова. Його робота полягає в накопиченні всіх пробілів у стрічці, і коли ми вводимо n, тобто номер слова, довжину якого нам потрібно, то функція перевіряє чи (k=n-1), тобто, в реченні на один пробіл менше ніж слів, і з цього місця інша змінна починає накопичувати символи, тобто букви слова і коли доходить до кінця, то виводить нам довжину сова на екран. Також передбачено ввід порожньої стрічки, виводить помилку, якщо нічого не введено з клавіатури. Якщо ми вказуємо на слово, якого немає, то також з’являється помилка (k<n-1), тобто, коли кількість пробілів менша ніж номер слова. Блок-схема алгоритму Ні Так Ні Так Ні Так Ні Так Реалізація програми в мові С Код програми //WordLenght.cpp #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string> #include <iostream> #include <ctime> #define MAX 256 #define OUTPUT ( n==1 ? b : b-1) void main() { char s[MAX]; int i,n,k,b,z; int t1, t2; printf("Введiть стрiчку:\n"); gets_s(s); if (strlen(s)==0) printf("Порожня стрiчка"); else { printf("Введiть номер слова:\n"); scanf_s("%d", &n); t1=clock(); k=0; b=0; z=0; for(i=0; i<strlen(s); i++) { if ((s[i]=='!')||(s[i]=='-')||(s[i]=='+')||(s[i]=='*')||(s[i]==']') ||(s[i]=='|')||(s[i]=='/')||(s[i]=='#')||(s[i]=='@')||(s[i]=='%') ||(s[i]=='{')||(s[i]=='}')||(s[i]=='"')||(s[i]=='(')||(s[i]==':') ||(s[i]==';')||(s[i]=='=')||(s[i]=='?')||(s[i]=='[')||(s[i]==')') ||(s[i]=='^')||(s[i]=='№')||(s[i]=='`')||(s[i]=='.')||(s[i]=='<') ||(s[i]=='>')||(s[i]=='&')) z++; { if (s[i]==' ') s[i+1]; } if ((s[i]==' ')&&(s[i+1]!=' ')) k++; if (k==n-1) b++; } if (z>0) printf("Помилка, в стрiчцi мiстяться %d системних символи\n",z); else { if (k<n-1) printf("Вказаного слова не iснує"); else printf("Довжина вказаного слова: %d", OUTPUT); } t2=clock(); printf("\nЧас виконання програми:%ld ms\n", t2-t1); } _getch(); } Виведення результатів На даному рисунку я перевіряю,як працює визначення довжини третього слова . / Ввожу системні символи, програма видає помилки, бо символи не стосуються слова. / Перевіряю, код на визначення порожньої стрічки. / Ввожу речення, і вказую на неіснуюче слово. / Перевіряю код на врахування апострофа в українській мові. / Перевіряю код на врахування скорочувального символа в англійській мові мові. / Перевіряю код на врахування твердого знаку в російській мові. / Вказую на слово ,якого немає, тобто, на слово поза межами стрічки. / Таблиця затрат часу на виконання Час Для стрічки із 3 слів Для стрічки із 10 слів Середня різниця  t1 2 мс. 7 мс. 5 мс.  t2 1 мс. 4 мс. 3 мс.  t3 3 мс. 6 мс. 3 мс.   Середня різниця часу складає 3.6 мс. – 0.004 секунди. Висновок: в даній лабораторній роботі я навчився працювати зі стрічками. Для пошуку потрібного слова я ввів функцію, яка шукає пробіли, підраховує їх, потім дивиться на номер слова, перед цим віднявши від номера 1, бо слів на одне більше, і починає шукати його довжину. Різниця в часі виконання між матрицями була не суттєвою – 0.004 секунди. При зчитуванні даних з файлу, результат виводився миттєво. Отже, я вважаю цей алгоритм – економним.
Антиботан аватар за замовчуванням

12.12.2016 23:12-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!