Створення алгоритму для розстановки переносів у словах за правилами російської орфографії

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Міністерство освіти і науки Російської Федерації

Федеральне агентство з освіти

Марійський державний технічний університет

Кафедра інформатики і

системного програмування

Курсова робота з дисципліни "Інформатика"

на тему:

Моделювання інших процесів

варіант № 11

Виконав: студент ІХТ-11

Андрєєв Маски Анатолійович

Перевірила: старший викладач

Кафедри ИИСП Іванова І.М.

Йошкар - Ола

2008

Постановка завдання

Варіант № 11

Побудувати модель вирішення задачі автоматичного перенесення слів за правилами російської орфографії.

Зміст



Введення

1. Теоретична частина

1.1 Теорія

1.2 Опис методу розв'язання

2. Практична частина

2.1 Алгоритм рішення задачі

2.2 Лістинг програми

2.3 Тестування програми

3. Висновок

Список літератури

Введення

У цій роботі показано один зі способів використання математичних методів для вирішення задачі по перенесенню слів за правилами російської орфографії. Для реалізації поставленого завдання я використовував теоретичні відомості з курсу інформатики, а також отримані раніше знання в області програмування.

Теоретична частина

    1. Теорія

Для початку визначимо, які існують правила переносів в російській орфографії.

Основними правилами є:

  • При перенесенні не можна ні залишати в кінці рядка, не переносити на іншу сторону частину слова, не складову стилю, наприклад, не можна переносити: просмо-тр, ст-рах

  • Не можна відокремлювати приголосну від наступної за нею гласною.

  • Не можна відривати літери 'і ь від попередньої приголосної.

  • Не можна відривати букву ї від попередньої голосної

  • Не можна залишати в кінці рядка або переносити на інший рядок одну букву

  • При перенесенні з приставками не можна розбивати односкладові приставку, якщо за приставкою йде приголосний.

  • При перенесенні з приставками не можна залишати в кінці рядка при приставці початкову частину кореня, не складову складу.

  • При перенесенні складних слів не можна залишати в кінці рядка початкову частину другої основи, якщо ця частина не становить складу

  • Не можна залишати в кінці рядка або переносити в початок наступної дві однакові приголосні, що стоять між голосними

  • Не можна розбивати перенесенням односкладові частина складноскорочені слова

1.2 Опис методу розв'язання

Методом вирішення даної задачі є алгоритм, в основі якого лежить «каретка», довжиною в 4 символи. Принцип роботи «каретки» наступний: в слові беруться перші 4 символу, підраховуються голосні і приголосні літери, і, якщо в даному місці в слові можна зробити перенесення за правилами, то перенесення робиться, якщо ж ні одне правило не підходить, то «каретка» зсувається на один символ і відбувається той же алгоритм перевірки, і так до кінця слова.

2. Практична частина

2.1 Алгоритм рішення задачі

Спочатку, для зручності користувача, надамо можливість прописати шлях до файлу власноруч. Коли шлях до файлу введений користувач тисне «виконати».

Після цього проводяться такі розрахунки:

а) д ля початку створимо алгоритм, який буде рахувати кількість голосних і приголосних літер у слові. Для цього створюємо двовимірний масив, в якому містяться всі голосні і приголосні літери в першій клітинці, у другій же містяться цифри «1» і «2», де голосні прирівнюємо «1», а приголосні «2». Далі створюємо цикл, який вважає символи від початку рядка до першого пробілу, потім від пропуску до пробілу, і так до кінця рядка.

б) створюємо цикл, який у кожному слові частини по чотири символи перевіряє на можливість перенесення, якщо між першими чотирма символами перенесення зробити не можна, то «каретка» зсувається на один символ вправо і так далі до кінця слова.

в) заключний етап програми - це виведення тексту, в якому зроблені всі можливі переноси в окремий файл. Файл буде мати колишня назва + "2. Txt"

2.2 Лістинг програми

Програма перенесення слів за правилами російської орфографії.

Для оптимізації коду, створюємо масив "al".

Сама програма має наступний вигляд:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls, ShellCtrls;

type

TForm1 = class (TForm)

Button1: TButton;

Edit1: TEdit;

procedure Button1Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

t, tt, t2: string;

f: Tstrings;

r, i, rs, j, q, rc, m, n, l, qw: integer;

al: array [1 .. 66,1 .. 2] of string;

kl: array [1 .. 1000] of integer;

implementation

{$ R *. dfm}

procedure TForm1.Button1Click (Sender: TObject);

begin

f: = Tstringlist.create ();

f.Loadfromfile (form1.Edit1.Text);

for qw: = 0 to f.count-1 do begin

tt :='';

t2 :='';

t: = f.strings [qw];

i: = 1;

while t [i ]<>'' do

i: = i +1;

r: = i-1;

for i: = 1 to r do begin

q: = 1;

for j: = 1 to 66 do begin

if t [i] = al [j, 1] then begin

tt: = tt + al [j, 2];

q: = 2;

end;

end;

if q = 1 then begin

if t [i] = '' then begin tt: = tt + '4 '; q: = 2; end;

if t [i ]='-' then begin tt: = tt + '5 '; q: = 2; end;

if q = 1 then tt: = tt + '6 ';

end;

end;

//---------------------------

i: = 1;

while i <= r do begin

q: = 0;

m: = 0;

n: = 0;

for j: = 0 to 4 do begin

if tt [i + j] = '1 'then q: = q +1;

if (tt [i + j] = '2 ') and (j <> 4) then m: = m +1;

if ((tt [i + j] = '4 ') or (tt [i + j] = '5') or (tt [i + j] = '6 ')) and (j <> 4) then n : = n +1;

end;

if ((q + m> = 4) and (q> = 2)) and

(Tt [i +2] <> tt [i +3]) and (n = 0) and (tt [i +1] + tt [i +2] <> '21 ') and ((t [i + 3] <> 'ь') and (t [i +3] <> '' ')) then begin

t2: = t2 + t [i] + t [i +1 ]+'-';

i: = i +1;

end else begin

t2: = t2 + t [i];

end;

i: = i +1;

end;

//---------------------------

f.strings [qw]: = t2;

end;

f.SaveToFile (form1.Edit1.Text + '2. txt ');

end;

procedure TForm1.FormCreate (Sender: TObject);

begin

al [1, 1]: = 'а';

al [2, 1]: = 'б';

al [3, 1]: = 'в';

al [4, 1]: = 'м';

al [5, 1]: = 'д';

al [6, 1]: = 'е';

al [7, 1]: = 'е';

al [8, 1]: = 'ж';

al [9, 1]: = 'з';

al [10, 1]: = 'і';

al [11, 1]: = 'й';

al [12, 1]: = 'до';

al [13, 1]: = 'л';

al [14, 1]: = 'м';

al [15, 1]: = 'н';

al [16, 1]: = 'про';

al [17, 1]: = 'п';

al [18, 1]: = 'р';

al [19, 1]: = 'з';

al [20, 1]: = 'т';

al [21, 1]: = 'у';

al [22, 1]: = 'ф';

al [23, 1]: = 'х';

al [24, 1]: = 'ц';

al [25, 1]: = 'ч';

al [26, 1]: = 'ш';

al [27, 1]: = 'щ';

al [28, 1]: = '' ';

al [29, 1]: = 'и';

al [30, 1]: = 'ь';

al [31, 1]: = 'е';

al [32, 1]: = 'ю';

al [33, 1]: = 'я';

al [34, 1]: = 'А';

al [35, 1]: = 'Б';

al [36, 1]: = 'В';

al [37, 1]: = 'Г';

al [38, 1]: = 'Д';

al [39, 1]: = 'Е';

al [40, 1]: = 'Е';

al [41, 1]: = 'Ж';

al [42, 1]: = 'З';

al [43, 1]: = 'І';

al [44, 1]: = 'Ї';

al [45, 1]: = 'К';

al [46, 1]: = 'Л';

al [47, 1]: = 'М';

al [48, 1]: = 'Н';

al [49, 1]: = 'О';

al [50, 1]: = 'П';

al [51, 1]: = 'Р';

al [52, 1]: = 'З';

al [53, 1]: = 'Т';

al [54, 1]: = 'У';

al [55, 1]: = 'Ф';

al [56, 1]: = 'Х';

al [57, 1]: = 'Ц';

al [58, 1]: = 'Ч';

al [59, 1]: = 'Ш';

al [60, 1]: = 'Щ';

al [61, 1]: = '' ';

al [62, 1]: = 'И';

al [63, 1]: = 'Ь';

al [64, 1]: = 'Е';

al [65, 1]: = 'Ю';

al [66, 1]: = 'Я';

al [1, 2]: = '1 ';

al [2, 2]: = '2 ';

al [3, 2]: = '2 ';

al [4, 2]: = '2 ';

al [5, 2]: = '2 ';

al [6, 2]: = '1 ';

al [7, 2]: = '1 ';

al [8, 2]: = '2 ';

al [9, 2]: = '2 ';

al [10, 2]: = '1 ';

al [11, 2]: = '1 ';

al [12, 2]: = '2 ';

al [13, 2]: = '2 ';

al [14, 2]: = '2 ';

al [15, 2]: = '2 ';

al [16, 2]: = '1 ';

al [17, 2]: = '2 ';

al [18, 2]: = '2 ';

al [19, 2]: = '2 ';

al [20, 2]: = '2 ';

al [21, 2]: = '1 ';

al [22, 2]: = '2 ';

al [23, 2]: = '2 ';

al [24, 2]: = '2 ';

al [25, 2]: = '2 ';

al [26, 2]: = '2 ';

al [27, 2]: = '2 ';

al [28, 2]: = '1 ';

al [29, 2]: = '1 ';

al [30, 2]: = '1 ';

al [31, 2]: = '1 ';

al [32, 2]: = '1 ';

al [33, 2]: = '1 ';

al [34, 2]: = '1 ';

al [35, 2]: = '2 ';

al [36, 2]: = '2 ';

al [37, 2]: = '2 ';

al [38, 2]: = '2 ';

al [39, 2]: = '1 ';

al [40, 2]: = '1 ';

al [41, 2]: = '2 ';

al [42, 2]: = '2 ';

al [43, 2]: = '1 ';

al [44, 2]: = '1 ';

al [45, 2]: = '2 ';

al [46, 2]: = '2 ';

al [47, 2]: = '2 ';

al [48, 2]: = '2 ';

al [49, 2]: = '1 ';

al [50, 2]: = '2 ';

al [51, 2]: = '2 ';

al [52, 2]: = '2 ';

al [53, 2]: = '2 ';

al [54, 2]: = '1 ';

al [55, 2]: = '2 ';

al [56, 2]: = '2 ';

al [57, 2]: = '2 ';

al [58, 2]: = '2 ';

al [59, 2]: = '2 ';

al [60, 2]: = '2 ';

al [61, 2]: = '1 ';

al [62, 2]: = '1 ';

al [63, 2]: = '1 ';

al [64, 2]: = '1 ';

al [65, 2]: = '1 ';

al [66, 2]: = '1 ';

end;

end.

2.3 Тестування програми

Задавши слова російської мови отримуємо на виході слова з розставленими переносами.



Висновок

При виконанні цієї курсової роботи, був складений найбільш оптимальний алгоритм для розстановки переносів у словах за правилами російської орфографії. Ця програма необхідна всім людям, які сумніваються, як переносити те чи інше слово по складах.

16


Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
62.6кб. | скачати


Схожі роботи:
Створення таблиць пепевірка орфографії Методи створення таблиць перевірки орфографії
Застосування методу розстановки пріоритетів для порівняння декількох постачальників непродовольчої
Організація орфографії на уроках російської мови
Перевірка стилістики й орфографії російської мови
Знаходження мінімального остовом дерева Порівняння алгоритму Прима і алгоритму Крускала
Розробка алгоритму і програми для обчислення коефіцієнта оперативної готовності системи
Розробка алгоритму та інструментарію для виявлення професійної компетентності психолога організації
Реалізація алгоритму зворотного трасування променів для моделей з великим числом полігонів
Про латинських словах позначають одяг
© Усі права захищені
написати до нас