Реферат: Латинизация кириллицы - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Латинизация кириллицы

Банк рефератов / Радиоэлектроника

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Архив Zip, 38 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ УРАЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ– УПИ Кафедра автоматики и информационных технологий Оценка_____________ Члены комиссии : ___________________ ___________________ ЛАТИНИЗАЦИЯ КИРИЛЛИЦЫ Курсовой проект по дисциплине ПЯВУ Студент: Мальцев Группа Р- 328 A Преподаватель: Трофимов С.П. Екатеринбург 200 4 ОГЛАВЛЕНИЕ ПОСТАНОВКА ЗАДАЧИ 3 Теоретичес кая часть 4 Инструкция пользователя 6 Инструкция программиста 8 “ Menu . cpp ” 8 “ Translit cpp ” 9 “ Test .с pp ” 12 ТЕСТИРОВАН ИЕ 14 ЗАКЛЮЧЕНИЕ 15 Библиограф ический список 16 ПРИЛОЖЕНИЕ 1. ТЕКСТ ПРОГРАММЫ 17 ПРИЛОЖЕНИЕ 2. Экранные формы 24 ПОСТАНОВКА ЗАДАЧИ Написать программу, соответственно следующим требованиям: · программа работает с командн ой строкой, получающей входной файл и словарь; · программа преобразует русские бук восочетания в английские; · предусмотреть корректность словар я; · реализовать тестирование программ ы. Теоретическая часть Транслит – замещение букв одного языка другими на основании фон етического созвучия. Например, русское сл овосочетание "РТФ" пишется так – “ RTF ”. Почему же возникло это явление и зачем оно испо льзуется? Транслит в компьютерной сфере зародился еще на заре развития информаци онных технологий. Тогда у программистов не было русских клавиатур и драй веров, они не могли писать на русском языке (собственно тогда большинств о программ попросту наш язык не поддерживало) и программистам приходило сь русские слова писать транслитом. Это явление существует до сих пор, та к как многие русские, уезжая из России обычно не бегут с собой русские кла виатуры, а в других странах они не продаются. Так и приходится этим людям п исать транслитом или наклеивать на иностранные кнопки самопальные сти керы с русскими литерами. Был предложен еще один вариант замены – на основании визуального п одобия. Например, русское словосочетание "РТФ" пишется так “ PTOP ”, причем оно написано полностью английским и буквами. В этом виде транслита допустима еще и замена цифрами (ч-4,з-3). Назв ание этому явлению – мегатранслит (или псевдотранслит), т.к. это нечто бол ьшее, чем простой транслит. Если же взглянуть на все это с точки зрения банальной эрудиции, то сейчас транслит можно было бы забыть. Но он нашел свое применение в сфере общени я. Например, когда разговариваешь в чате, то чего же не писать транслитом? Вообще, точек зрения на вопрос каким должен быть стандарт кодировки у ру сской Сети существует несколько: 1. ко дировка КОИ8 2. к одировка CP1251 3. c тандартом русской Сети - равно как и мировой - является и должен оставаться translit, то есть верхняя половина символьной таблицы 4. у русской Сети не может и не должно бы ть единого стандарта. Приверженцы транслита на замечают, что если русским станд артом ДОСа является CP866, в клонах UNIX распространена поддержка КОИ8, а в виндо зных системах принято поддерживать CP1251, то существует лишь одна кодировка, на основании которой пользова тели всех этих операционных систем могут договориться, - транслит. В самом деле эта кодировка доступна наибольшему числу пользователей. Од нако недостатки транслита общеизвестны. Во-первых, писать по-русски лати нскими буквами - это достаточно трудоемкое занятие. Во-вторых, для трансл ита не существует общепринятого стандарта, равно как и способа его созда ния. Поэтому тексты, написанные в транслите, плохо поддаются конверсии и сквозному поиску. Но также следует отметить, что у операционных систем, ус тановленных примерно на 90% компьютеров в мире, не существует средств подд ержки КОИ8, будь то в режиме чтения или письма. Кодировка CP1251 не поддерживае тся в довольно большом числе не последних по значимости операционных си стем - включая ДОС, UNIX, Макинтош. Делать стандартом кодировку, которую польз ователи этих систем не могут прочитать в принципе, означает изначальную установку на отсечение от русского киберпространства всех пользовател ей, которые не являются клиентами Билла Х. Гейтса. Транслит очень нравится всякого рода злоумышленника м (хакерам). Они пишут слово так, чтобы оно было похоже на оригинал. Допусти м, в адрес c е электронной почт ы хакер вместо буквы О может написать цифру 0. Мало кто смотрит на адре c с отправителя, и заметить "подво х", оставленный хакером, удается не сразу. Таким образом, этот простейший п рием можно использовать для дополнительной защиты своего почтового ящ ика. Сейчас проблема транслитерации уже давно вышла за пределы компь ютера. Теперь транслит можно встретить почти во всех сотовых телефонах с функцией SMS, в электронных записных книжках, на дорожных знаках, даже попа даются телевизоры, меню которых было написано на транслите. Следует отметить, что писать вручную на транслите – для рядового обыват еля дело очень утомительное из-за своей необычности и непривычности. Дан ное приложение призвано помочь вам в этом! Инструкция пользователя Данное приложение предназначено для латинизации (транслитерац ии) кириллицы. Включает в себя проект Translit . prj , содержащий три файла menu . cpp , translit . cpp , test .с pp , два словаря tdict . txt и pdict . txt (содержат тр анслит и псевдотранслит соответственно), а также для осуществления тест ирования программы- файлы tsource . txt , tresult . txt , tcorrect . txt . Файлы словари составлены разработчиком проекта, представляют собой об ычные текстовые файлы. Каждая строка в словаре записана в следующем форм ате: key - value где key – русское буквосочет ание, value – словосочетание, н а которое заменяется rus при п ереводе. Для запуска программы в командной строке необходимо указать словарь(од ин из имеющихся на выбор пользователя либо собственный), файл, который по длежит транслитерации. Также при желании пользователь может указать им я файла для вывода.Все аргументы командной строки прописываются через п робел. Если пользователь не указал его, вывод производится на экран. Если было указано имя не существующего файла, он будет создан в текущем катал оге, т.е. где находится программа. Существует три способа указания файлов: 1.Непосредственно в командной строке Dos , где прописываются через пробел имя исполняемого файла и име на остальных необходимых файлов. П 2.Меню оболочки RUN Arguments , где прописываются просто имена необходимых файлов(при наличии их в текущей директории) или полный путь к файлам(при отсутствии их в теку щей директории). 3. Меню оболочки FILE DOS shell (указание аргументов кома ндной строки производится аналогично). Если при запуске программы появляется сообщение Используйте: Translit. exe словарь файл_для_перевода [переведенный ф айл] это означает, что пользо ватель ввел недопустимое число аргументов. Следует повторить запуск пр ограммы с правильно указанными аргументами. Если файл-словарь пуст, то выдается сообщение: Словарь слишком мал! Если пуст файл, указанный для перевода, то на экране появляется сообщени е: Невозможно открыть файл для перевода! При запуске программы на экране появляется меню, в котором пользователю предлагается на выбор пять пунктов: · About; · Help; · Translit; · Test; · Exit Передвижение по пунктам меню осуществляется при нажатии клавиш “стрелка вверх” или ”стрелка вн из”. Для входа в какой-либо пункт меню используйте клавишу “ ENTER ”. При выборе “ About ” вы увидите на экране несколько строк об разработчике и предназ начении программы: Программа Translit осуществляет транслитерацию. Автор: Пашкова Ольга, группа Р-220б" Пункт “ Help ” поможет вам разобраться в использо вании программы. При выборе “ Translit ” осуществляется транслитерация ук азанного файла и полученный текст выводится на экран(если не был отмечен в командной строке файл для перевода) или в файл. Внимание: первый вариант применяет ся в случае, когда исходный файл невелик, и требуется просто познакомить ся с работой программы, если же файл для перевода достаточно велик, то луч ше указывать в командной строке и файл для вывода. При выборе “ Test ” осуществляе тся тестирование данной программы за счет сравнения файла полученного с помощью Translit а с файлом, произ веденным вручную (оба файла содержатся в приложении: tresult . txt , tcorrect . txt , соответственно). На экран может быть выведено одно из сообщений: "Тест у дачно пройден." или "Тест не пройден." , а также при отсутствии одного или двух файлов Ошибка при открытии файла(ов). Для выхода пользуетесь “ Exit ” или просто нажмите “ esc ”. Программа осуществляет проверку выбранного словаря на корректность за писанной в нем информации: в каждой строке словаря должен имеется символ '-', не допускается отсутствие в какой-либо из строк словаря словосочетани я(ий) key и (или) value . При обнаружении некорректной записи в словаре программа выдает со общение с указанием номера неправильной строки и саму строку: Предупреждение! (7) строчка словаря ' в v ' записана некорректно! В этом случае пользователю необходимо проверить словарь, исправить нек орректную запись и запустить программу снова. Для своей работы программы использует динамическую память. Если на экране появляется сообщение касающееся отсутствия свободной памяти , например Нет памяти для хранения словаря рекомендуется перезагрузить компьютер и попытаться снова запусти ть программу. В случае невозможность устранения неполадок самим пользователем обращ аться к разработчику по адресу, указанному в пункте меню “ About ”. Инструкция программиста Данная программа предназначена для латинизации (транслитераци и) кириллицы. Программа представляет собой проект, состоящий из трех фай лов: menu . cpp , translit . cpp , test .с pp . Причем для ее работы необходимы следующие файлы: один из файлов словар ей ( DictT . txt или DictP . txt ), входной файл с текстом для перев ода ( source . txt ), файл для вывода ( result . txt ), которые задаются в командной строке (последний файл является не о бязательным аргументом командной строки). “ Menu . cpp ” – модуль проекта, включающий в себя функции ос тальных файлов. Предназначен для создания текстового диалога с пользов ателем путем выбора команды из списка команд меню. Содержит следующие фу нкции: · void translit (char *, char *, char *); · int test ( ); · void usage (char * name); · void main(int argc, char *argv[]). -void translit (char *, char *, char *) Функция, реализующая латинизацию кириллицы, находитс я в файле translit . cpp (см. ниже). Ее аргументами являются указа тели на имена файлов, имеющиеся в командной строке. Ничего не возвращает. - int test ( ) (пдробное описание данной функции приведено ниже) Функция, осуществляющая тестирование транслитерации путем сравни вания двух файлов: один содержит текст латинизации данного приложения, в торой создавался в ручную. Функция ничего не получает, возвращает результат сравнения дв ух файлов: 1-файлы одинаковы; 0-файлы различны. - void usage ( char * name ) Получает указатель на имя исполнимого файла. Используется в помощь пользователю для работы с командной строкой (задания аргументов команд ной строки), где обязательно должны быть указаны исполняемый файл, слова рь, файл для перевода, необязательным аргументом является файл для вывод а. Если в командной строке не указан хотя бы один из параметров, функция выд ает сообщение об ошибке: Используйте: Translit. exe словарь фа йл_для_перевода [переведенный файл] - void main(int argc, char *argv[]) Функция использует аргументы командной строки. Параметры функции: argc – переме нная, содержащая количество аргументов командной строки, включая испол нительный файл; argv – массив ука зателей, на аргументы командной строки. Ничего не возвращает. Организовывает меню и обще ние с пользователем при использовании консольных функций ввода-вывода. Функция проверяет все ли обязательные аргументы указаны в командной с троке, если нет, то выдается сообщение об ошибке, описанной выше( usage ). При наличии всех необходимых файл ов проверяется присутствие файла для вывода. Если его имя написано в ком андной строке, то он открывается для записи выходного потока. Выделяются окна для каждого из п унктов меню с заданием цвета текста( WHITE ) и местонахождения на экране. Причем при активизации какого-ли бо пункта меню цвет текста меняется( RED )(данная часть функции осуществляется с помощью переключателя ). Производится очистка буфера ввода-вывода с клавиатуры, так как при наж атии некоторых клавиш в буфер записываются два числа: 0 и расширенный код , совпадающий, как правило, со scan - кодом клавиши. Далее определяется какая клавиша была нажата, посредство м этого осуществляется перемещение по пунктам меню по кругу, если были н ажаты “стрелки вверх, вниз”; выход из программы-“ ESC ”; вход в пункт меню-“ ENTER ”. Причем при нажатии последней клавиши на экране выделяется окно для вывода информации: About Программа Translit , осуществляет транслитерацию. Автор: Пашкова Ольга, группа Р-220б. Help Пользуйтесь клавишами стрелк и 'вверх','вниз', а также ' Enter ', для входа в пункт меню. Translit выполняется функция translit , описанная выше. Test выполняется функция test , описанная выше. Exit осуществляется выход из про граммы. “ Translit cpp ” - модуль, непосредственно осуществляющий транслитерацию. Имеет макроопределение define chunk 10 для минимального количества струк тур, используется в функции bukvosoch * divide _ dick ( char * d , int * count ).. Содержит структуру bukvosoch , элементами которой являются подстрока слева от “-” (русск ие буквы) в словаре, подстрока справа от “-” (латинские буквы) в словаре и дл ина key (в байтах). Содержит следующие функции: · char * read_dick (char *filename); · bukvosoch *divide_dick (char *d, int *count); · int sortf (const void *a, const void *b); · void prepare_dick(bukvosoch *w, int count); · void translit(char *dict,char *text, char *output). -char * read_dick (char *filename) Получает указатель на имя файла – словаря. Возвращает ука затель на область памяти, куда был считан словарь. Если произошла одна из ошибок, описанных ниже, функция возвращает значение NULL . Функция открывает имеющийся словарь ( с атрибуто м «только для чтения» ), определяет его размер. Если файл оказался пустым, программа выдает сообщение: Словарь слишком мал! и закрывает файл. В противн ом случае выделяется область памяти для словаря. Если нет свободного мес та в памяти, то выдается сообщение Нет памяти для хранения словаря. В отсутствии ошибки происходит считывание содержимого файла в выделен ную область памяти, причем в конец файла приписывается нуль с целью пред охраниться от “мусора”. Закрывается словарь, пришедший в функцию. Так как считанный файл представляет собой одну строку , для дальнейшей работы необходимо разбить ее на подстроки. -bukvosoch *divide_dick (char *d, int *count) Аргументы: указатель на область памяти, содержащей считанный файл, указатель на число структур, полученных после выполнения функции. Возвр ащает массив структур. Выделяется память, размером в chunk структур bukvosoch , так как изначально неизвестно какой обьем памяти понадобится. Если нет своб одной памяти, то выдается сообщение об ошибке: Нет памяти! При удачном выделении памяти определяется длина файл а. В цикле for проверяется кажд ый символ строки. При обнаружении ‘ \ n ’ (asci-кода “ ENTER ”) заменяется на нуль, причем каждая такая замена учитывается счетч иком k . Если их количество пр евысило ( chunk -1)(получающийся ма ссив структур начинается с нулевого элемента), то производится изменени е размера ранее выделенной памяти (перевыделение памяти ) до размера n * chunk , где n - числ о перевыделений.В случае отсутствии памяти появляется сообщение об оши бке, указанной выше, и освобождается ранее выделенный блок динамически р аспределяемой памяти, функция возвращает NULL . Данная функция представляет каждую структуру виде ст роки русских символов ( key ), ост альные ее элементы приравнивает к нулю. Определение числа получившихся структур осуществляется так: k +1. - int sortf ( const void * a , const void * b ) Является аргументом функции qsort .Получает два указателя с квалификат ором типа- const , т.е. имеющих пост оянное значение (доступны только для чтения). Осуществляет сравнение эле ментов key структур по длине и возвращает результат сравнения (положительное число, 0, отрицательное чи сло). -void prepare_dick(bukvosoch *w, int count) Получаем массив структур и число структур в массиве (число элементо в массива). Функция ничего не возвращает. Циклом for осуществля ется проверка словаря на корректность. При обнаружении следующих ошибо к: хотя бы одна структура не имеет ’ -’ , в структуре отсутствует элемент key или value программа выдает сообщение, указыва я ошибочную запись с номером соответствующей строки: Предупреждение! (7) строчк а словаря 'в v ' записана некорректно! Структура с ошибкой обну ляется. Подстрока после найденного ‘ -’ обозначается элементом структ уры value , определяется и значен ие keylen . После этого производится сортировка структур по длине key при использовании функции сравнения , определенной выше, описание функции qsort производится в пункте “ Некоторые функции из HELPa ” . -void translit(char *dict,char *text, char *output) Получает указатели на имена файлов, указанных в командной строке. Ничего не возвращает. Функция проверяет наличие всех обязательных аргументов в командной ст роке и существование указанных файлов. При обнаружении ошибки заканчив ает свою работу(соответствующее сообщение выдает функция usage , содержащаяся в модульном файле “ Menu . cpp ”). Если пользователь указал файл для вывода, то он открываетс я для записи, при неудачном выполнении операции выдается сообщение: Ошибка при открытии файла для выходного потока! Осуществляется считывание словаря в память ( read _ dick ), произ водится разделение полученной строки в памяти на подстроки-структуры( divide _ dick ), затем каждая строка представляется в виде элементов структуры( prepare _ dick ). При выполнении этих трех шагов возможны сообщения: Ошибка при чтении словаря! Ошибка при разбиении словаря (нет памяти). при этом функция завершает свою работу. При удачном результате определяется длина key нулевого элемента массива структур и выделяется память для “ок ошка” этой длины. В случае отсутствия свободной памяти на экране появляе тся сообщение: Нет свободной памяти для window . производится очистка динамической памяти, завершение раб оты функции. В противном случае производится открытие файла с текстом для чтения. При неудаче программа выдает ошибку: Невозможно открыть файл для перевода! При удачном открытии файла “окошко” заполняется нулями с целью предохр аниться от “мусора”, затем в него считывается строка из файла такой же дл ины и по всем структурам осуществляется поиск key , входящего в эту строку( c равнение осуществляется с начала “окошка”). Если key был найден, то соответствующий элемент стру ктуры value записывается в output файл и (или) выводится на экран, а “окошко” бу дет передвинуто на число равное keylen (т ранслитерация происходит в бесконечном цикле). Если “окошко” снова зап олнилось нулями, то выходим из цикла. Производится закрытие файлов и очи стка динамической памяти. “ Test .с pp ” - модуль, осуществляющий тестирование транслитера ции. · void translit(char *,char *, char *); · int test ( ). Включает в себя прототип фу нкции translit , описанной выше. Причем имен а файлов прописываются в функции, обязательно наличие всех файлов. Функция ничего не получает, возвращает результат сравнения двух файлов: 1-файлы одинаковы; 0-файлы различны. Открываются для чтения фа йлы, записанные в функции fopen : tresult . txt , tcorrect . txt . При невозможности открытия на экран выводится сообщение об ошибк е: Ошибка при открытии файла(ов). В противном случае файлы считываются в буфер и производится посимвольн ое сравнение двух областей памяти. Как только будет достигнут конец кажд ого файла, функция завершит свою работу. Некоторые функции из HELPa - FILE f open ( const char * filename , const char * mode ) открывает файл, на им я которого указывает filename , в ре жиме зазываемом mode и связыва ет его с протоколом. Указатель на поток является значен ием , возвращаемым функцией. - char * strchr ( const char * str , intc ) ищет в строке str первое в хождение символа с. - void * memset ( void * s , int c , unsigned n ) записывает во все байты области памяти s значение с. Длина области s равна n байт. - fread ( void * buf , size _ t size , sizet size bl, FILE * fp ) считывает sizet size bl количество блоков из fp в buf , размером size _ t size . Возвращ ает количество считанных блоков, даже если считалась половина блока. - int strncmp ( const char * str 1, const char * str 2, int kol ) сравнивает час ти строк str 1 и str 2, причем рассматривая str 1< str 2; равен нулю str 1= = str 2, и положителен если str 1> str 2. - void * memmove ( roid * dest , const void * src , int n ) копирует блок длиной n байтов из src в dest , возвра щает указатель dest . -void qsort(void base,size_t nelem, size_t width, int(*fcmp)(const void *p1,const void *p2)) – функция быстрой сортировки масси ва . Параметры: base - указатель на начало массива сортируем ых элементов (адрес нулевого элемента массива), nelem -количество сортируемых элементов в массиве, width -размер элемента массива в (байтах), fcmp -указатель на функцию сравне ния.Функция ничего не возвращает. - int feof ( FILE * stream ) проверяет, дос тигнут ли конец файла, связан с потоком stream . ТЕСТИРОВАНИЕ Как говорилось ранее, тестирование програм мы осуществляется при выборе пункта меню “ Test ”. Производится сравнивание посимвольно двух файлов: пе рвым является файл с произведенным транслитом данным приложением, втор ой был произведен в результате транслитерации вручную. Тестирование пр ошло удачно и на экране появилось сообщение: Тест удачно пройден. Также для тестирования были смоделирована ситуация(м одификация в функции translit ), при к оторой не верно была произведена транслитерация.При этом программа выд ало сообщение: Тест не пройден. ЗАКЛЮЧЕНИЕ Основным результатом выполнения данного курсового проекта ста ла программа, осуществляющая транслитерацию кириллицы. Следует отмети ть, что данное приложение может быть применено ни только для транслитера ции, но и для псевдотранслитерации, что осуществляется за счет наличия д вух файлов-словарей. Словари программы созданы в вольной интерпретации разработчика. Достоинством программы является ее простота. Реализация поставленной задачи была осуществлена при создании проекта , содержащего три файла, с использованием текстого диалога с пользовател ем путем выбора пунктов меню. Следует отметить, что разработчику пришлос ь столкнуться со следующей проблемой: ”выигрываем в памяти- проигрываем в скорости”(например, при использовании консольных функций ввода-вывод а, при выполнении функции divide _ dick в модуле Translit . cpp ). Программа написана в соответствии с правилами хорошего стиля: все указатели до использо вания обнуляются, любой выделенный блок динамической памяти освобожда ется до завершения программы и т.д.. При небольшой модернизации программу можно превратить в кодирующ ую-декодирующую систему. Этого нетрудно достичь, если добавить в програм му функцию выбора направления перевода. Правда словари тогда должны буд ут удовлетворять некоторым требованиям. Программа была протестирована в соответствии с пунктом ТЕСТИРОВА НИЕ данного курсового проекта. Библиографический список 1. Подбельский В.В., Фомин С.С. Программирование на языке Си: Учеб. пособие. – 2-е доп. изд. – М.: Финансы и ст атистика, 1999. – 576 с. 2. Программирование в языке СИ. Организ ация ввода-вывода: Методические указания к лабораторным занятиям / С.П.Тр офимов. Екатеринбург. Изд-во УГТУ,1998.22 c . 3. Керниган Б.,Ритчи Д.Язык программиров ания СИ / Пер. с англ. – СПб.: “Невский Диалект”, 2001. – 351 с. ПРИЛОЖЕНИЕ 1. ТЕКСТ ПРОГРАММЫ “ Menu . cpp ” #include #include #include #include #include #include void translit(char *, char*,char*); int test(); //##################################### void usage(char *name) printf ("Используйте: % s словарь файл_для_перевода [переведенный фа йл]", name ); //##################################### void main(int argc,char *argv[]) clrscr(); if (argc<3) usage(argv[0]); return; else if(argc==4) freopen(argv[3],"wt",stdout); else clrscr(); int k=0,z=0; while(1) window(3,3,30,11); textcolor(WHITE); gotoxy(1,1); cprintf("About\n\r"); cprintf("Help\n\r"); cprintf("Translit\n\r"); cprintf("Test\n\r"); cprintf("Exit\n\r"); switch(k) case 0: gotoxy(1,1); textcolor(RED); cprintf("About"); break; case 1: gotoxy(1,2); textcolor(RED); cprintf("Help"); break; case 2: gotoxy(1,3); textcolor(RED); cprintf("Translit"); break; case 3: gotoxy(1,4); textcolor(RED); cprintf("Test"); break; case 4: gotoxy(1,5); textcolor(RED); cprintf("Exit"); break; textcolor(WHITE); if(!(z=getch())) z=getch(); if(z==80) k=k==4?0:k+1; else if(z==72) k=k==0?4:k-1; else if(z==27) return ; else if(z==13) window(15,3,80,20); clrscr(); switch(k) case 0: cprintf ("Программа Translit осущес твляет транслитерацию." "Автор: Пашкова Ольга, группа Р-220б"); break ; case 1: cprintf ("Пользуйтесь клавишами стрелки 'вверх','вниз', " "а также ' Enter ', для входа в пунк т меню"); break; case 2:translit(argv[1],argv[2],argc==4?argv[3]:NULL); break ; case 3: cprintf ( test ()?"Тест удачно пройд ен":"Тест не пройден"); break; case 4:exit(0); break; “Translit cpp” include include include //для filelength include include include define chunk 10 struct bukvosoch char * key ; // строка в словаре, стоящая слева от '-' char * value ; // строка в словаре, стоящая слева от '-' unsigned keylen ; //длина key в байтах ; /##################################### /выделение памяти и чтение файла-словаря в выделенную область памяти char *read_dick(char *filename) FILE *dic=NULL; dic=fopen(filename,"rt"); if (! dic ) cprintf ("\ n Ошибка при открытии файла-словаря!"); return NULL; long len=filelength(dic->fd); if ( len ==0) cprintf ("\ n Словарь слишком мал!"); fclose(dic); return NULL; unsigned l=(unsigned)(++len); char *dick=(char *)malloc(l); if(dick==NULL) cprintf ("\ n Нет памяти для хранения словаря"); fclose(dic); return NULL; fread ( dick , l ,1, dic ); //считывание словаря в память dick[l-1]=0; fclose(dic); return dick ; /##################################### /разбиение считанной 'строки' на строки bukvosoch* divide_dick(char *d, int *count) int ps=chunk; bukvosoch *items=(bukvosoch*)malloc(ps*sizeof(bukvosoch)); if (items==NULL) cprintf("\nНет памяти!"); return NULL; //нет памяти unsigned l=strlen(d); char *start=NULL; start=d; int k=-1; for (unsigned i=0; ips-1) ps+=chunk; bukvosoch *qwe=(bukvosoch*)realloc(items,ps*sizeof(bukvosoch)); if(qwe==NULL) free(items); cprintf("\nНет памяти!"); return NULL; else items=qwe; items[k].key=start; items[k].value=NULL; items[k].keylen=0; start=d+i+1; *count=k+1; return items; /############################################# /функция для сравнения длин key в элем ентах массива структур int sortf(const void *a, const void *b) return ((bukvosoch*)b)->keylen-((bukvosoch*)a)->keylen; /##################################### /представление строк в виде " key - value ",сортировка их по длине key void prepare_dick(bukvosoch* w, int count) for(int i=0; i #include #include void translit(char *,char*,char*); //##################################### int test() translit("tdict.txt","tsource.txt", "tresult.txt"); FILE *f1=fopen("tcorrect.txt","rt"); FILE *f2=fopen("tresult.txt","rt"); if (!f1 || !f2) printf ("Ошибка при откры тии файла(ов)."); return 0; char buf1[11],buf2[11]; buf1[10]=0;buf2[10]=0; char equal=1; while(1) fread(buf1,10,1,f1); fread(buf2,10,1,f2); if (memcmp(buf1,buf2,10)) equal=0; break; if (feof(f1) || feof(f2)) break; return equal; ПРИЛОЖЕНИЕ 2. Экранные формы About Программа Translit осуществляет транслитерацию. Help Автор: Пашкова Ольга, группа Р-220б. Translit Test Exit About Пользуйтесь клавишами стр елки 'вверх','вниз', а также ' ENTER ' дл Help входа в пункт меню. Translit Test Exit About Help Ошибка при открытии файла-слова ря!Ошибка при чтении словаря! Translit Test Exit About РТФ-chempion! Help Translit Test Exit About РТФ-4eMn|/|oH! Help Translit Test Exit About Тест удачно пройден . Help Translit Test Exit
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
В детском саду смекалистые воспитательницы в тихий час придумали конкурс для детей: кто первый заснёт, тому можно не спать!..
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по радиоэлектронике "Латинизация кириллицы", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru