статистичний аналіз текстового файлу

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

ВУЗ:
Донецький національний технічний університет
Інститут:
О
Факультет:
РТ
Кафедра:
Не вказано

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

Рік:
2003
Тип роботи:
Курсова робота
Предмет:
Застосування засобів об’єктно-орієнтованого програмування у лінгвістичних задачах

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

Вступ C++ (Сі-плюс-плюс) — універсальна мова програмування високого рівня з підтримкою декількох парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної. Розроблена Б'ярном Страуструпом (Bjarne Stroustrup) в AT&T Bell Laboratories (Мюррей-Хілл, Нью-Джерсі) у 1979 році та названа «Сі з класами». Страуструп перейменував мову у C++ у 1983 р. Базується на мові Сі. Визначена стандартом ISO/IEC 14882:2003. У 1990-х роках С++ стала однією з найуживаніших мов програмування загального призначення. При створенні С++ прагнули зберегти сумісність з мовою С. Більшість програм на С справно працюватимуть і з компілятором С++. С++ має синтаксис, заснований на синтаксисі С. Від будь якого методу програмування очікується що він допоможе нам у вирішенні проблеми у розбитті програми на невеликі та чітко окресленні частини. Щоб вирішити дану проблему слід абстрагуватися від дрібних деталей. У цьому сенсі класи являють дуже зручний інструмент. Метою даної роботи являється закріплення на практиці вміння використовувати основні концепції об'єктно-орієнтованого підходу (ООП) — класи, засоби UML- моделювання, інкапсуляцію, успадкування, поліморфізм, перевантаження методів і операцій, шаблони методів і класів та STL- бібліотеку (Стандартну бібліотеку шаблонів C++) при створенні складних програмних проектів. В даній курсовій роботі була виконана розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування, яка включала в себе роботу з файлами, класами, обробку числової та текстової інформації. Дана програма може використовуватися для аналізу текстових файлів з розширенням .txt або .dat. Для коректного відображення файл повинен мати назву латинськими літерами та містити текст латинськими літерами чи кирилицею. Робота програми була протестована на текстових файлах що містили текст трьома мовами (англійською, українською та російською). Під тестуванням програми слід розуміти що бралися готові тексти такі як ( «Harry Pother», «Война и мир», «Злочин і кара») 1. Специфікація програми 1.1 Постановка умови задачі Написати програму для статистичного аналізу тексту, яка повинна виконувати наступні операції: - зчитувати текст з файлу з розширенням .TXT - забезпечити підрахунок речень у текстовому файлі, - забезпечити підрахунок слів у текстовому файлі, - забезпечити підрахунок складів у текстовому файлі, - забезпечити підрахунок заданого словополучення - задання адреси текстового файлу користувачем, - задання параметрів пошуку задаються користувачем. 1.2 Опис підключених бібліотек в програмі В  мові програмування C++, Стандартна бібліотека[1] C++ це набір класів і функцій, які написані на базовій мові і є частиною стандарту C++ ISO. Стандартна бібліотека C++ реалізує набір базових контейнерів, функцій для використання і управління цими контейнерами, функціональних об'єктів, загальні строки та потоки (включаючи взаємодію і файловий ввід/вивід), підтримку деяких особливостей мови програмування, і звичайні функції для вирішення таких задач, як пошук квадратного кореня числа. Стандартна бібліотека C++ також включає в себе 18 заголовкових файлів стандарту ISO C90 Стандартної бібліотеки C які мають розширення ".h", але їх використання не рекомендується, оскільки вони є застарілими. Не існує інших заголовкових файлів із розширенням ".h". Всі функції і компоненти бібліотеки знаходяться в просторі імен(std. В даній курсовій роботі було використано наступні бібліотеки[2] за їх призначенням які описані в таблиці1.2.1). Таблиця 1.2.1 – Підключень бібліотеки та їх призначення Назва підключеної бібліотеки Для чого застосовується дана бібліотека  <iostream> основи ведення виведення  <stdio.h> введення та виведення в Сі  <conio.h> робота з консольним вводом виводом  <CString> обробка рядів та масивів  <iomanip> форматування введення виведення  <stdlib.h> виділення памяті контроль процеса виконання програми  <fstream> читання запис даних в файл  <time.h> заголовочний файл для роботи з датою та часом   1.3 Опис інтерфейсу користувача Після входу в програму появиться напис “Введіть назву текстового файлу для аналізу” (скріншот1) користувач може ввести просто назву файлe якщо файловий текст знаходиться в одні папці з програмою або ввести адресу до файлу. Слід памятати що дана версія програми призначена для читання файлів формату .TXT якщо користувач ввів коректне назву/адресу файлу (скріншот2) то появиться меню яке складається з 9 пунктів Таблиця 1.3.1. Якщо ж користувач ввів не коректне назву/адресу файлу тоді в консолі появиться напис «Введене невірно назву файлу» (скріншот3) та програма припинить свою роботу. Розглянемо перший варіант в консолі появиться меню з наступними назвами та властивостями(скріншот4) : Таблиця 1.3.1 - Команди меню та їх призначення 1.Показати текст Виведе в консолі весь текст який міститься у введеному текстовому файлі(скріншот4)  2.Показати кількість речень Виведе кількість речень в аналізованому текстовому файлі(скріншот5)  3.Показати кількість слів Виведе кількість слів у аналізованому текстовому файлі(скріншот6)  4.Показати кількість складів Виведе кількість складів у аналізованому текстовому файлі(скріншот7)  5.Показати кількість символів Виведе кількість символів у аналізованому текстовому файлі(скріншот8)  6.Показати кількість заданого слова в тексті Ввести та показати кількість згадувань заданого слова в тексті (скріншот9)  7.Показати всю інформацію Виконання пунктів 2,3,4,5,6(скріншот10)  8.Новий файл Дозволяє ввести імя/адресу нового файлу для аналізу(скріншот11)  9. Закрити програму Закриває та припиняє виконання програми(скріншот12)   Після завершення виконання програми появиться час роботи програми. В подальшому ці дані будуть використані для аналізу ефективності коду. 1.4 Опис функціональності програми Опис функціональності програми Рис 1.3.4 Дана програма виконує всі завдання коректно які перед нею були поставлені. А отже володіє певними функціями а саме: 1.Підрахунок речень у текстовому файлі; 2.Підрахунок слів у текстовому файлі; 3.Підрахунок складів у текстовому файлі; 4.Підрахунок символів у текстовому файлі; 5. Пошук та підрахунок згадування слова в текстовому файлі; 6. параметри пошуку та назва файлу задаються користувачем. Також програма може використовуватися для аналізу текстів латинськими літерами та кирилицею. Тестування програми було проведено на наступних мовах російською, українською та англійською на наступних творах відповідно (Harry Potter, Война и Мир, Злочин і кара). 2. Проектна специфікація 2.1 Опис даних 2.1.1 Опис змінних Змінна (variable) у програмі – це іменована комірка пам‘яті, яка призначена для зберігання деякого значення. Збережене значення може бути результатом обчислення виразу, числовою чи рядковою константою тощо. Змінні які використані в даній програмі наведені в таблиці 2.1.1 Таблиця 2.1.1 – Типи змінних та для чого їх використовують Назва змінної Тип Опис змінної  act int Використовується для зберігання введеного числа з меню програми  s[999] Масив char Використовується для проміжного зберігання зчитуємого із файла текста  name[256] Масив char Використовується для введення назви тексту для аналізу  ch char   s char   a, len, cnt, vcount, sent, swg  Лічильник  TextCI q(name)  Створює екземпляр класа TextCI по кострукторах з параметрами в яким ми надаємо назву файлу  fin File Файлова змінна   2.1.2 Опис методів та функцій класу Клас являє собою абстрактний тип даних, що визначається користувачем і являє собою модель реального об’єкта у вигляді даних та функцій для роботи з ними. Дані класу називаються полями, а функції —методами, що призначені для обробки полів. Крім методів, тип клас може мати спеціальні функції — конструктори і деструктори. Таблиця 2.1.2 - Опис методів та функцій використаних у програмі та їх призначення № Назва функції Призначення  1 ShowMenu Виводить на екран меню  2 count_symbol() Підраховує к-сть символів у текстовому файлі  3 count_word() Підраховує к-сть рядків у текстовому файлі  4 row_count() Підраховує к-сть речень у текстовому файлі  5 count_syllable() Підраховує к-сть складів у текстовому файлі  6 count_sentences() Підраховує к-сть речень у текстовому файлі  7 search_word_count() Підраховує к-сть введеного слова в тексті  8 ShowFullInfo() Виводить та записує всю інформацію в файл наведену в пунктах 2,4,5,6,7  9 CloseThreads() Метод закриття потоків файлів  10 Main Головна ф-ція програми   2.2 Опис обєктної структури Центральний елемент ООП - абстракція. Дані за допомогою абстракції перетворяться в об'єкти, а послідовність обробки цих даних перетворюється на набір повідомлень, що передаються між цими об'єктами. Кожен з об'єктів має свою власну унікальну поведінку. До об'єктів можна звертатися як до окремих сутностей, які реагують на повідомлення, що наказують їм виконати якісь дії. ООП характеризується наступними принципами (по Алану Кею) :[4] усе являється об'єктом; обчислення здійснюються шляхом взаємодії (обміну даними) між об'єктами, при якому один об'єкт вимагає, щоб інший об'єкт виконав деяку дію; об'єкти взаємодіють, посилаючи і отримуючи повідомлення; повідомлення - це запит на виконання дії, доповнений набором аргументів, які можуть знадобитися при виконанні дії; кожен об'єкт має незалежну пам'ять яка складається з інших об'єктів кожен об'єкт є представником класу який виражає загальні властивості об'єктів даного типу у класі задається функціональність (поведінка об'єкту); тим самим усе об'єкти, які являються екземплярами одного класу, можуть виконувати одні і ті ж дії; класи організовані в єдину деревовидну структуру із загальним коренем, звану ієрархією спадкоємства; пам'ять і поведінка, пов'язана з екземплярами певного класу, автоматично доступні будь-якому класу, розташованому нижче в ієрархічному дереві. Якщо брати для аналізу клас який був використаний у наші програмі Рис 2.2.1 де: 18.class TextCl 19.{ 20.private: 21. ifstream fin; //файловий вивід 22. ofstream fout; //файловий вивід 23. string line; //робота з рядками 24. public: 25. TextCl(string filePath) //конструктор з параметрами 26. { 27. fin.open(filePath); //повязує потік з переданою назвою у цей конструктор 28. if (!fin.is_open()){//якщо файл не відкритий 29. cout << "Введено невірне імя файла!\n"; 30. return ; 31. } 32. fout.open("Consulution.txt");//звязує потік з "Consulution.txt"та записує в файл 33.ShowMenu(); 34.} - рядок 18 це назва класу; - рядок 20 оголошує приватні дані тобто їх видно тільки у класі; - рядки 21-23 оголошує потоки вводу і виводу; - рядок 24 оголошує публічний тип даних тобто дані які буде видно з інших класів; - рядок 25 оголошує конструктор з параметрами ; - рядок 27 зв’язує потоки з переданим аргументом в цей конструктор; - рядки 28-29 якщо файл не відкритий виводить відповідний напис; - рядок 33 підключає публічну функцію виводу меню. 3. Принцип роботи та реалізації програми 3.1 Меню програми Перше що появляється на екрані після введення адреси/назви буде меню. Назва ф-ції меню у коді Void ShowMenu(), яка містить змінну act типу інт в яку буде записано натиснену клавішу(варіант меню). Потім програма попросить нас ввести варіант від 1 до 9. Меню складається з девяти пунктів які у виконанні моєї програми представлені case(1-9). В подальшому кожен варіaнт меню програми буде описуватися через case()1-9 Case 1: допоки курсор не дійде [while(!fin.eof()] до кінця текстового файлу буде друкуватися текст [ getline()fin,line,’/n ’; cout<<line;] далі припиняється виконання виконання найближчого циклу [break]. case 1: cout <<"Текст:" <<endl; while (!fin.eof()) //до поки файл не кінець файлу { getline(fin, line, '\n');//зчитує символи з рядка до пробілу cout <<line; } break;   Case2: Курсор переходить на нову строку [cout<<endl;] та друкує к-сть речень у тексті [cout<<count_sentence<<endl;] далі припиняється виконання найближчого циклу [break][5]. case 2: { cout << endl; cout <<"к-сть речень у тексті:"<< count_sentences() << endl; break;}   Case3: Курсор переходить на нову строку [cout<<endl;] та друкує к-сть речень у тексті [cout<<row_count<<endl;] далі припиняється виконання найближчого циклу [break]. case 3: { cout << endl; cout <<"к-сть слів у тексті:"<<row_count() << endl; break; }   Case4: Курсор переходить на нову строку [cout<<endl;] та друкує к-сть речень у тексті [cout<<count_syllable<<endl;] далі припиняється виконання найближчого циклу [break]. case 4: { cout << endl; cout << "к-сть складів у тексті:"<<count_syllable() << endl; break; }   Case5: Курсор переходить на нову строку [cout<<endl;] та друкує к-сть речень у тексті [cout<<count_symbol<<endl;] далі припиняється виконання найближчого циклу [break]. case 5: { cout << endl; cout <<"к-сть символів у тексті:"<<count_symbol() << endl; break}   Case6: Курсор переходить на нову строку [cout<<endl;] та друкує к-сть речень у тексті [cout<<count_sentence<<endl;] далі припиняється виконання найближчого циклу [break]. case 6: { cout << endl; cout <<"к-сть заданого слова в тексті:"<<search_word_count() << endl; break; }   Case 7: Виконується дія з пунктів 2, 3, 4, 5, 6. Та записуються дані у файл case 7: { ShowFullInfo(); // виводить всю інформацію break; }   Case 8: На монітор виводиться напис «введіть напис текстового файлу» [cout<< введіть напис текстового файлу<<endl;] введена[cin>>name] назву файлу зберігається у буфер проміжного зберігання зчитуючого із файлу текста [char s[999] ], збереже назву файлу у масив [char name[256]] та підключить конструктор з назвою файлу [TextCl next(name);] далі припиняється виконання найближчого циклу [break;] case 8: { cout << "Введiть назву текстового файлу для аналiзу:" << endl; char s[999]; // буфер проміжного зберігання зчитуючого текста char name[256]; cin >> name; TextCl next(name);//підключає для роботи конструктор з параметрами break; }   Case 9: виходить з циклу[return], повертає код символа без його відображення [getch()] та виходить з найближчого циклу case 9: { return; getch();//повертає символ зчитаний з клавіатури break; }   Також якщо не задовільняється жодний з case(1-9) виконується зарезервоване слово default яке просить вибрати пункт [cout<<виберіть правильний пунк]. Якщо [act!=8] акт не дорівнює 8 на екран виводиться меню Деструктор ~TextCl закриває потоки при виході з програми [CloseThreos()] default:{ // виконується якщо вибраний не правильний пункт cout << "Виберіть правильний варіант" << endl; } } if (act !=8 ) { ShowMenu(); }   3.2 Підрахунок символів у текстовому файлі На початку роботи дана функція скидає стан прапорців і переводить курсор на початок файлу і після виводу із файлу успадковується знак кінця файлу [fin.clear()]. Далі повертається на початок потоку буфера [fin.seekg(0, ios_base::beg)] де команда seekg переміщає курсор файлу на позицію яка вказана0. Після цього запускається цикл з умовою ”Допоки не кінець файлу ” [while(!fin.eof())]. Якщо умова циклу задовільняється тоді відбувається зчитування строки з файлового тексту [fin.get(ch)] і відповідно збільшує значення лічильника [a++]. Після припинення виконання циклу повертається значення лічильника [return a;] int count_symbol() //ф-ція підрахунку символів { fin.clear(); //скидає стан прапорців і після виводу із файлу виводить знак кінця файлу fin.seekg(0, ios_base::beg); //повертається на початок буфера, повертає курсор на позицію 0 int a = 0; char ch; while (!fin.eof()) { fin.get(ch); //зчитує строку з файла a++; } return a; }   3.3 Підрахунок рядків у текстовому файлі На початку роботи дана ф-ція визначає тип змінних [const char *str] наступною дією програми є обнулення лічильника [int len=0;]. І запускає цикл do while і доки даний символ або буква лічильник додає 1 до лічильника і пост інкремент [for(++len;isalnum(*str)&&*str;*str++);]. Допоки в рядка не має знака кінця рядка [while (*str++!=’\0’)] int count_word(const char* str) { int len = 0; do { if (isalnum(*str))//доки даний (кінець рядка)символ чи буква в строці(правда брехня) for (++len; isalnum(*str) && *str; *str++); } while (*str++ != '\0');//кінець рядка return len; }   3.4 Підрахунок слів у текстовому файлі На початку роботи дана функція скидає стан прапорців і переводить курсор на початок файлу і після виводу із файлу успадковується знак кінця файлу [fin.clear()]. Далі повертається на початок потоку буфера [fin.seekg(0, ios_base::beg)] де команда seekg переміщає курсор файлу на позицію яка вказана 0. Далі ф-ція переводить лічильник у значення «0». Та зануля лічильник правильних символів [int cnt2=0;] та запускає цикл з умовою допоки не кінець файлу [while (!fin.eof)] буде провірятися кожен символ в line на правильність з переходом на новий рядок [getline(fin,line,’/n’)] та для надалі запускає цикл перевірки кожного символу на правильність [for(int i=0; i<line_size();i++)]. І якщо його ACII код більший -1 і менший 255 тоді лічильник правильних символів збільшується [if((int)line[i]>=-1&&(int)line[i]<=255) cnt2++ ]; якщо к-сть правильних символів рівна довжині рядка то виконується робота з цим рядком [if(cnt==line.size())]; Cnt +=cout_word(line.c_str());. І зануляється лічильник правильних символів[cnt2=0], і повертається значення лічильника. int row_count() { fin.clear(); fin.seekg(0, ios_base::beg); int cnt = 0; string line;//текстовий масив символів int cnt2 = 0; //Лічильни вірних символів while (!fin.eof()) { getline(fin, line, '\n'); //зчитує до пробілу for (int i = 0; i < line.size(); i++) //перевірка кожного символу на правильність { if ((int)line[i] >= -1 && (int)line[i] <= 255) cnt2++; // якщо його ACII код більший -1 і менший 255 то лічильник збільшиться } if (cnt2 == line.size()) //якщо к-сть правильних символів рівна довжині рядка то виконується далі робота з цим рядком { cnt += count_word(line.c_str()); //передає значення сnt значення cnt2 } cnt2 = 0; } return cnt; }   3.5 Підрахунок складів у текстовому файлі Int count_syllable[6] На початку роботи дана функція скидає стан прапорців і переводить курсор на початок файлу і після виводу із файлу успадковується знак кінця файлу [fin.clear()]. Далі повертається на початок потоку буфера [fin.seekg(0, ios_base::beg)] де команда seekg переміщає курсор файлу на позицію яка вказана 0. У програмі є введено масив голосних літер [char_vowel[]="АаЕеЁёИиОоУуЫыЭэЮюЯяАаЕеЄєИиiiЇїОоУуЮюЯяAaEeIiOoUuYy";] які в подальшому цикл буде їх порівнювати з текстом [char ch]; далі занулений лічильник [int vcout=0]; Допоки зчитується файл проводиться порівнювання з заданим масивом і збільшує лічильник [while (fin.get(ch)) if (strchr(vowel, ch)) vcount++;] і повертає значення лічильника [return vcount] int count_syllable(){ fin.clear(); fin.seekg(0, ios_base::beg); char_vowel[]="АаЕеЁёИиОоУуЫыЭэЮюЯяАаЕеЄєИиiiЇїОоУуЮюЯяAaEeIiOoUuYy"; char ch; int vcount = 0; while (fin.get(ch)) if (strchr(vowel, ch)) vcount++; return vcount; }   3.6 Підрахунок речень у текстовому файлі Int count_sentences На початку роботи дана функція скидає стан прапорців і переводить курсор на початок файлу і після виводу із файлу успадковується знак кінця файлу [fin.clear()]. Далі повертається на початок потоку буфера [fin.seekg(0, ios_base::beg)] де команда seekg переміщає курсор файлу на позицію яка вказана 0. Обнуляє лічильник [int sent=0]; містить змінну текстового типу [char c] та масив символів для порівняння [const char *symbols = ".?!";] та програма містить цикл допоки файл читається і повертає істину і не найдено жодної помилки в потоці [const char *symbols = ".?!";]. Надалі функція виконує пошук першого входження символу в рядок та додає +1 до лічильника [if (strchr(symbols, c))++sent;}] в кінці ф-ції повертає значення лічильника. int count_sentences() { fin.clear(); fin.seekg(0, ios_base::beg); int sent = 0; char c; const char *symbols = ".?!"; //масив символів для перевірки while ((c = fin.get()) && fin.good()) // допоки файл читається і повертає істину якщо не найде жодної помилки { if (strchr(symbols, c))//виконує першого входження в символу в тексті ++sent; } return sent; }   3.7 Підрахунок заданого словосполучення у текстовому файлі Int search_word_count На початку роботи дана функція скидає стан прапорців і переводить курсор на початок файлу і після виводу із файлу успадковується знак кінця файлу [fin.clear()]. Далі повертається на початок потоку буфера [fin.seekg(0, ios_base::beg)] де команда seekg переміщає курсор файлу на позицію яка вказана 0. Далі виконує пошук лексим у рядку str та перевіряє символи розділу[char *strtok( char *string, const char *delim );]. Далі програма просить ввести слово для аналізу [cout << "Введіть слово для аналізу: ";] яке буде записане у змінну s [string s; cin >> s;] значення лічильника переводить в 0. Зчитує символи в буфер допоки не буде зчитаний останній символ, досягнуто кінець файлу або допоки не буде досягнуто символ delim. [while(getline(fin,line))] далі проводиться знімання const та виділяє пам'ять для формування нового масиву [p = strtok(const_cast<char*>(line.c_str())," ");] І порівнюється по одному символу [if((p)&&(strcmp(p,s.c_str())==0))] і збільшується лічильник. Якщо зчитали всі +1 для лічильника [if(strcmp(p,s.c_str())==0)]. І повертає лічильник [return swc] int search_word_count() { char *strtok( char *string, const char *delim ); fin.clear(); fin.seekg(0, ios_base::beg); string s; cout << "Введіть слово для аналізу: "; cin >> s; int swc = 0; string line; while(getline(fin,line)) //допоки зчитується файл цикл працює { char* p; p = strtok(const_cast<char*>(line.c_str())," ");//зміню константу виділяє память if((p)&&(strcmp(p,s.c_str())==0))// порівнює посимвольно swc++; while(p = strtok(NULL," ")) //якщо строка порожня if(strcmp(p,s.c_str())==0) swc++; } return swc; }   3.8 Методи класу Основні переваги класів виявляються при наявності методів – членів класу. З допомогою методів доступу до даних в класах можна зручно: ініціалізувати дані початковими значеннями; здійснювати перевірку на коректність внутрішніх даних при їх задаванні; реалізовувати різні варіанти перетворення (конвертування) даних; реалізовувати організацію виділення пам’яті для складених типів даних, що реалізовані у класах; виконувати різноманітні види обчислень над даними. У даній курсовій роботі використані наступні методи класу Void ShowFullInfo() Виводить потрібну інформацію на екран і записує дані у файл через стандартні cout та fout Void CloseThreads Закриває потоки введеня та виведення [fin.close(); fout.close();] 3.9 Головна функція програми int main(int argc, char* argv[]) підключає для роботи українську та російські мови [system("chcp 1251 > nul"); setlocale(LC_ALL, "rus");] виводить напис для введення текстового файлу записує назву [char name[256] та зберігає зчитуємий файл у буфер [char s[999]] ф-ція gets(name) виводить імя. Створює екземпляр класу по конструктуру з параметрами в який надаємо [7]назву файлу. Та в кінці виконання виконується вихід [return 0]. int main(int argc, char* argv[]) { start: system("chcp 1251 > nul");//коректне відображення Української setlocale(LC_ALL, "rus"); // корректное отображение Кириллицы cout << "Введiть назву текстового файлу для аналiзу:" << endl; char s[999]; // буфер промежуточного хранения считываемого из файла текста char name[256]; gets(name); TextCl q(name); //створюється екземпляр класа TextCl за конструкторорм в якому зарискємо назву файлу return 0; }   4. Інструкція користувача Розроблена програма призначена для роботи на ОС WindowsXP чи вище. Для установлення програми слід розархівувати файл АналізаторТексту; Запустити файл Статистичний аналіз тексту; Після загрузки програми потрібно ввести назву/адресу файлу; (назву вводиться якщо файл для аналізу знаходиться в одній папці з Статистичний аналіз тексту в іншому випадку потрібно ввести повний шлях до файлу для аналізу ). Якщо назва/адреса введені коректно відкриється меню з 9 можливими варіантами вибору .РИС.1.3.4. У Таблиці 1.3.1 представлені варіанти меню та що буде виконуватися при натисканні відповідних клавіш. Висновки В ході виконання даної курсової роботи мною була розроблена програма. Результати численних проведених тестів вказують на те, що програма працює вірно. У цій роботі я спробував врахувати всі можливі ситуації і можливі помилки. Отримана завдання і мета були виконані. Також при тестуванні створеної програми було виявлено наступні закономірності: -Зі збільшення кількостісті символів у тексті зростає і час виконання програми(графік1); Додаток1(Графіки) Графік 1 - залежність часу виконання програми взалежності від кількості рахованих символів Таблиця 1 - Зміна часу роботи програми зі збільшенням к-сті символів час виконання програми  кількість символів що рахувалися  0,435 363474  0,71 408635  0,75 589835  1 786447  1,39 1016167  1,8 1652430   Залежність часу роботи програми під час послідовних запусків - при повторному тестуванні програмою одного і того ж файла час виконання програми виявився різним (графік2) . / Графік 2 - зміна часу обробки програми Таблиця 2 – Тестування програми 2 Номер досліду Час запуску компільованої програми Час запуску програми з компіляцією  1 0,529 0,719  2 0,565 0,701  - від того наскільки вимогливі додатки запущені на ПК залежить результативність виконання вашої програми чи іншого додатка на ПК оскільки ресурси процесора витрачаються ще на додаткове вираховування в нашому випадку програми Code::Block. При усереднені результатів було визначено що швидкість роботи алгоритму 786447 символів за секунду. Формула 1 S/T=A (1) Де Sc-загальне число слів яке було підрахована при тестуванні; T –загальний час за який було підраховано всі слова при тестуванні А - швидкість роботи алгоритму програми. ПЕРЕЛІК ПОСИЛАНЬ И.А.Попова “Програмування: принципи та практика використання С++”-Вильямс, 2011 -1225с В.Ю.Вінник. “Алгоритмічні мови та основи програмування: мова С”/Житомир, 2007.- 190 с Максим Динман. ‘C++ освой на примерах”/Максим Динман – БХВ-Петербург 2006, 374с Т.А. Павловловская «С/С++ Программирование на языке высокого уровня». ++»/Т. А. Павловскаяю - СПб.: Питер, 2004.-461с Арнольд Виллемер. “Програмирование на С++” /Арнольд Виллемер – М.: Єксмо, 2013. - 528с. Лафоре Р. “Обєктно-орієнтоване програмування в С++” Класика Computer Science 4-видання – СПБ.: Питер, 2011.-928с. Нейл Дейл, Чип Уимз “Програмирование на С++”- М.:ДМК Пресс. -672 с.: Додаток А введення назви файлу для аналізу / Рисунок 1.3.1 – Введіть назву текстового файлу / Рисунок 1.3.2 – Коректне введення назви текстового файлу / Рисунок 1.3.3 – Не коректне введення назви текстового файлу Додаток Б розбір інтерфейсу користувача. Команди 1-2 / Рисунок 1.3.4 – Меню при коректному введені назви файлу / Рисунок 1.3.5 – Виконання команди 1 в меню / Рисунок 1.3.6 – Виконання команди 2 в меню Додаток В команди 3-5 / Рисунок 1.3.7– Виконання команди 3 в меню / Рисунок 1.3.8 – Виконання команди 4 в меню / Рисунок 1.3.9 – Виконання
Антиботан аватар за замовчуванням

21.03.2019 16:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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