Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

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

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

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

Рік:
2010
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування
Група:
ПМ-31

Частина тексту файла

Міністерство освіти та науки України Національний університет «Львівська політехніка» кафедра прикладної математики ЛАБОРАТОРНА РОБОТА №1 з системного програмування на тему: «Скінченні автомати» Мета: побудувати скінченний детермінований автомат за заданим варіантом, продумати організацію програми скінченного автомата. Написати програму яка отримуэ на вході – символьний ланцюжок (у вхідному файлі або з клавіатури), на виході – відповідь, чи даний ланцюжок розпізнається як правильний (у вихідному файлі або екрані). Варіант №10. Завдання: Побудувати скінчений автомат для розпізнавання послідовності імен простих та індексованих змінних , що відокремлюються одне від одного комами. Ім'я простої змінної складається з довільної кількості букв, індексованої змінної − з довільної кількості букв, дужки [ , цілого числа без знаку , дужки ] . Автомат: a..z 0 1..9 , [ ] з. с.  S A F F F F F -  A A F F S B F +  B F F C F F F -  C F C C F F D -  D F F F S F F +  F F F F F F F -   Код програми: #include <iostream.h> #include <string.h> int M[6][6] = {{1, 5, 5, 5, 5, 5}, {1, 5, 5, 0, 2, 5}, {5, 5, 3, 5, 5, 5}, {5, 3, 3, 5, 5, 4}, {5, 5, 5, 0, 5, 5}, {5, 5, 5, 5, 5, 5}}; void main() { int state = 0; int y; char S[255], c; cout<<"Vevdit' stri4ky sumvoliv - poslidovnosti leksem ta indeksovanuh leksem," <<"jaki rozdileni komamu."<<endl; cin>>S; for(unsigned int i = 0; i < strlen(S); i++) { c = S[i]; if ((c >= 'a') && (c <= 'z')) y = 0; else if (c == '0') y = 1; else if ((c >= '1') && (c <= '9')) y = 2; else if (c == '[') y = 4; else if (c == ']') y = 5; else if (c == ',') y = 3; else state = 5; state = M[state][y]; } cout<<state<<endl; if (state == 5) cout<<"False"; if (state == 1 || state == 4) cout<<"True"; } Контрольний приклад: Vevdit' stri4ky sumvoliv - poslidovnosti leksem ta indeksovanuh leksem,jaki rozd ileni komamu. sdfw[234],sdfwe[433],c[23032] True Висновок: На цій лабораторній я ознайомився з поняттям скінченного автомату, та зрозумів як за допомогою цієї простої структури можна аналізувати ланцюжки символів на предмет належності граматиці що описує даний автомат. Я написав програму, що аналізує вхідну стрічку та відповідно виводить True – якщо ця стрічка належить граматиці, і – False – якщо ні.
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

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

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини