МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ УРАЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ УПИ Кафедра автоматики и информационных технологий Оценка Члены комиссии ЛАТИНИЗАЦИЯ КИРИЛЛИЦЫ Курсовой проект по дисциплине ПЯВУ Студент Мальцев Группа Р-328A Преподаватель Трофимов С.П. Екатеринбург 2004 ОГЛАВЛЕНИЕ ПОСТАНОВКА ЗАДАЧИ 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 rguments, где прописываются просто имена необходимых файловпри наличии их в текущей директории или полный путь к файлампри отсутствии их в текущей директории. 3. Меню оболочки FIL OS 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 mainint argc, char argv. -void translit char , char , char
Функция, реализующая латинизацию кириллицы, находится в файле translit.cppсм. ниже. Ее аргументами являются указатели на имена файлов, имеющиеся в командной строке. Ничего не возвращает. -int test пдробное описание данной функции приведено ниже Функция, осуществляющая тестирование транслитерации путем сравнивания двух файлов один содержит текст латинизации данного приложения, второй создавался в ручную.
Функция ничего не получает, возвращает результат сравнения двух файлов 1-файлы одинаковы 0-файлы различны. -void usage char name Получает указатель на имя исполнимого файла. Используется в помощь пользователю для работы с командной строкой задания аргументов командной строки, где обязательно должны быть указаны исполняемый файл, словарь, файл для перевода, необязательным аргументом является файл для вывода. Если в командной строке не указан хотя бы один из параметров, функция выдает
сообщение об ошибке Используйте Translit.exe словарь файлдляперевода переведенный файл - void mainint 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 для минимального количества структур, используется в функции bukvosochdividedick char d, int count Содержит структуру bukvosoch, элементами которой являются подстрока слева от - русские буквы в словаре, подстрока справа от - латинские буквы в словаре и длина key в байтах. Содержит следующие функции char readdick char filename bukvosoch dividedick char d, int count int sortf
const void a, const void b void preparedickbukvosoch w, int count void translitchar dict,char text, char output. -char readdick char filename Получает указатель на имя файла словаря. Возвращает указатель на область памяти, куда был считан словарь. Если произошла одна из ошибок, описанных ниже, функция возвращает значение NULL. Функция открывает имеющийся словарь с атрибутом только для чтения, определяет его размер.
Если файл оказался пустым, программа выдает сообщение Словарь слишком мал и закрывает файл. В противном случае выделяется область памяти для словаря. Если нет свободного места в памяти, то выдается сообщение Нет памяти для хранения словаря. В отсутствии ошибки происходит считывание содержимого файла в выделенную область памяти, причем в конец файла приписывается нуль с целью предохраниться от мусора.
Закрывается словарь, пришедший в функцию. Так как считанный файл представляет собой одну строку, для дальнейшей работы необходимо разбить ее на подстроки. -bukvosoch dividedick char d, int count Аргументы указатель на область памяти, содержащей считанный файл, указатель на число структур, полученных после выполнения функции. Возвращает массив структур. Выделяется память, размером в chunk структур bukvosoch, так как изначально неизвестно какой обьем памяти
понадобится. Если нет свободной памяти, то выдается сообщение об ошибке Нет памяти При удачном выделении памяти определяется длина файла. В цикле for проверяется каждый символ строки. При обнаружении n asci-кода ENTER заменяется на нуль, причем каждая такая замена учитывается счетчиком k. Если их количество превысило chunk-1получающийся массив структур начинается с нулевого элемента, то
производится изменение размера ранее выделенной памяти перевыделение памяти до размера nchunk, где n- число перевыделений.В случае отсутствии памяти появляется сообщение об ошибке, указанной выше, и освобождается ранее выделенный блок динамически распределяемой памяти, функция возвращает NULL. Данная функция представляет каждую структуру виде строки русских символов key, остальные ее элементы приравнивает к нулю. Определение числа получившихся структур осуществляется так k1. -int sortf const
void a, const void b Является аргументом функции qsort.Получает два указателя с квалификатором типа-const, т.е. имеющих постоянное значение доступны только для чтения. Осуществляет сравнение элементов key структур по длине и возвращает результат сравнения положительное число, 0, отрицательное число. -void preparedickbukvosoch w, int count Получаем массив структур и число структур в массиве число элементов массива.
Функция ничего не возвращает. Циклом for осуществляется проверка словаря на корректность. При обнаружении следующих ошибок хотя бы одна структура не имеет в структуре отсутствует элемент key или value программа выдает сообщение, указывая ошибочную запись с номером соответствующей строки Предупреждение 7 строчка словаря вv записана некорректно Структура с ошибкой обнуляется. Подстрока после найденного - обозначается элементом структуры value,
определяется и значение keylen. После этого производится сортировка структур по длине key при использовании функции сравнения, определенной выше, описание функции qsort производится в пункте Некоторые функции из HELPa. -void translitchar dict,char text, char output Получает указатели на имена файлов, указанных в командной строке. Ничего не возвращает. Функция проверяет наличие всех обязательных аргументов в командной строке и существование
указанных файлов. При обнаружении ошибки заканчивает свою работусоответствующее сообщение выдает функция usage, содержащаяся в модульном файле Menu.cpp. Если пользователь указал файл для вывода, то он открывается для записи, при неудачном выполнении операции выдается сообщение Ошибка при открытии файла для выходного потока Осуществляется считывание словаря в память readdick, производится разделение полученной строки в памяти на подстроки-структурыdividedick, затем каждая строка
представляется в виде элементов структурыpreparedick. При выполнении этих трех шагов возможны сообщения Ошибка при чтении словаря Ошибка при разбиении словаря нет памяти. при этом функция завершает свою работу. При удачном результате определяется длина key нулевого элемента массива структур и выделяется память для окошка этой длины. В случае отсутствия свободной памяти на экране появляется сообщение
Нет свободной памяти для window. производится очистка динамической памяти, завершение работы функции. В противном случае производится открытие файла с текстом для чтения. При неудаче программа выдает ошибку Невозможно открыть файл для перевода При удачном открытии файла окошко заполняется нулями с целью предохраниться от мусора, затем в него считывается строка из файла такой же длины и по всем структурам осуществляется поиск key, входящего
в эту строкуcравнение осуществляется с начала окошка. Если key был найден, то соответствующий элемент структуры value записывается в output файл и или выводится на экран, а окошко будет передвинуто на число равное keylen транслитерация происходит в бесконечном цикле. Если окошко снова заполнилось нулями, то выходим из цикла. Производится закрытие файлов и очистка динамической памяти.
Test.сpp - модуль, осуществляющий тестирование транслитерации. void translitchar ,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 первое вхождение символа с. -voidmemset void s, int c, unsigned n записывает во все байты области памяти s значение с. Длина области s равна n байт fread void buf, sizet size, sizet sizebl, FILE fp считывает sizet sizebl количество блоков из fp в buf, размером sizet size. Возвращает количество считанных блоков, даже если считалась половина блока. -int strncmp const char
str1, const char str2, int kol сравнивает части строк str1 и str2, причем рассматривая str1 str2 равен нулю str1 str2, и положителен если str1 str2 void memmove roid dest, const void src, int n копирует блок длиной n байтов из src в dest, возвращает указатель dest. -void qsortvoid base,sizet nelem, sizet width, intfcmpconst void p1,const void p2 функция быстрой сортировки массива. Параметры base- указатель на начало массива сортируемых элементов адрес нулевого элемента массива,
nelem-количество сортируемых элементов в массиве, width -размер элемента массива в байтах, fcmp -указатель на функцию сравнения.Функция ничего не возвращает. -int feof FILE stream проверяет, достигнут ли конец файла, связан с потоком stream. ТЕСТИРОВАНИЕ Как говорилось ранее, тестирование программы осуществляется при выборе пункта меню Test. Производится сравнивание посимвольно двух файлов первым является файл с произведенным транслитом
данным приложением, второй был произведен в результате транслитерации вручную. Тестирование прошло удачно и на экране появилось сообщение Тест удачно пройден. Также для тестирования были смоделирована ситуациямодификация в функции translit, при которой не верно была произведена транслитерация.При этом программа выдало сообщение Тест не пройден.
ЗАКЛЮЧЕНИЕ Основным результатом выполнения данного курсового проекта стала программа, осуществляющая транслитерацию кириллицы. Следует отметить, что данное приложение может быть применено ни только для транслитерации, но и для псевдотранслитерации, что осуществляется за счет наличия двух файлов-словарей. Словари программы созданы в вольной интерпретации разработчика. Достоинством программы является ее простота. Реализация поставленной задачи была осуществлена при создании
проекта, содержащего три файла, с использованием текстого диалога с пользователем путем выбора пунктов меню. Следует отметить, что разработчику пришлось столкнуться со следующей проблемой выигрываем в памяти- проигрываем в скоростинапример, при использовании консольных функций ввода-вывода, при выполнении функции dividedick в модуле Translit.cpp. Программа написана в соответствии с правилами хорошего стиля все указатели до использования обнуляются, любой выделенный блок динамической памяти освобождается до завершения программы
и т.д При небольшой модернизации программу можно превратить в кодирующую-декодирующую систему. Этого нетрудно достичь, если добавить в программу функцию выбора направления перевода. Правда словари тогда должны будут удовлетворять некоторым требованиям. Программа была протестирована в соответствии с пунктом ТЕСТИРОВАНИЕ данного курсового проекта. Библиографический список 1.
Подбельский В.В Фомин С.С. Программирование на языке Си Учеб. пособие. 2-е доп. изд. М. Финансы и статистика, 1999. 576 с. 2. Программирование в языке СИ. Организация ввода-вывода Методические указания к лабораторным занятиям С.П.Трофимов. Екатеринбург. Изд-во УГТУ,1998.22c. 3. Керниган Б
Ритчи Д.Язык программирования СИ Пер. с англ. СПб. Невский Диалект, 2001. 351 с. ПРИЛОЖЕНИЕ 1. ТЕКСТ ПРОГРАММЫ Menu.cpp include stdio.h include conio.h include io.h include alloc.h include stdlib.h include process.h void translitchar , char,char int test void usagechar name printfИспользуйте s словарь файлдляперевода переведенный файл,name void mainint argc,char argv clrscr if argc 3 usageargv0 return else ifargc4 freopenargv3,wt,
stdout else clrscr int k0,z0 while1 window3,3,30,11 textcolorWHITE gotoxy1,1 cprintfAboutnr cprintfHelpnr cprintfTranslitnr cprintfTestnr cprintfExitnr switchk case 0 gotoxy1,1 textcolorRED cprintfAbout break case 1 gotoxy1,2 textcolorRED cprintfHelp break case 2 gotoxy1,3 textcolorRED cprintfTranslit break case 3 gotoxy1,4 textcolorRED cprintfTest break case 4 gotoxy1,5 textcolorRED cprintfExit break textcolorWHITE ifzgetch zgetch ifz80 kk40k1 else ifz72 kk04k-1 else ifz27 return else ifz13 window15,3,80,20 clrscr
switchk case 0cprintfПрограмма Translit осуществляет транслитерацию. Автор Пашкова Ольга, группа Р-220б break case 1cprintfПользуйтесь клавишами стрелки вверх,вниз, а также Enter, для входа в пункт меню break case 2translitargv1,argv2,argc4argv3NULL break case 3cprintftestТест удачно пройденТест не пройден break case 4exit0 break Translit cpp include stdio.h include conio.h include io.h для filelength include alloc.h include string.
h include stdlib.h define chunk 10 struct bukvosoch char key строка в словаре, стоящая слева от - char value строка в словаре, стоящая слева от - unsigned keylen длина key в байтах выделение памяти и чтение файла-словаря в выделенную область памяти char readdickchar filename FILE dicNULL dicfopenfilename,rt if dic cprintfnОшибка при открытии файла-словаря return NULL long lenfilelengthdic- fd if len0 cprintfnСловарь слишком мал fclosedic return
NULL unsigned lunsignedlen char dickchar mallocl ifdickNULL cprintfnНет памяти для хранения словаря fclosedic return NULL freaddick,l,1,dic считывание словаря в память dickl-10 fclosedic return dick разбиение считанной строки на строки bukvosoch dividedickchar d, int count int pschunk bukvosoch itemsbukvosochmallocpssizeofbukvosoch if itemsNULL cprintfnНет памяти return NULL нет памяти unsigned lstrlend char startNULL startd int k-1 for unsigned i0 i l i if din di0 k if k ps-1 pschunk bukvosoch qwebukvosochreallocitems,pssizeofbukvoso
ch ifqweNULL freeitems cprintfnНет памяти return NULL else itemsqwe itemsk.keystart itemsk.valueNULL itemsk.keylen0 startdi1 countk1 return items функция для сравнения длин key в элементах массива структур int sortfconst void a, const void b return bukvosochb- keylen-bukvosocha- keylen представление строк в виде key-value,сортировка их по длине key void preparedickbukvosoch w, int count forint i0 i count i для каждой структуры bukvosoch char estrchrwi.key if eNULL ewi.key ewi.keywi.keylen-1 cprintfnПредупреждение
d строчка словаря s записана некорректноn,i,wi.key wi.keyNULL wi.valueNULL wi.keylen0 continue e0 wi.valuee1 wi.keylene-wi.key qsortw,count,sizeofbukvosoch,sortf void translitchardict,chartext,char output if dict dict text text return FILEouNULL if output oufopenoutput,wt if ou cprintfОшибка при открытии файла для выходного потока return return clrscr char dreaddickdict if d cprintfОшибка при чтении словаря return int num0 bukvosoch qwedividedickd,num if qwe cprintfОшибка при разбиении словаря нет памяти return
preparedickqwe,num int wlstrlenqwe0.key char windowcharmallocwl1 if windowNULL freeqwe freed cprintfНет свободной памяти для window return windowwl0 char found0 int i поиск key в источнике char wherewindow char countwl int a0,exit0 FILE sourcefopentext,rt if sourceNULL freeqwe freed cprintfНевозможно открыть файл для перевода return while1 memsetwhere,0,count afreadwhere,count,1,source if a0 нет больше информации для чтения-window пусто exit1 forint i0 i wl i if windowi exit0 break if exit break found0 for i0 i
num i ifstrncmpqwei.key,window,qwei.keylen0 found1 break if found if output fprintfou,qwei.value else cprintfc,qwei.value countqwei.keylen else if output fprintfou, c, window0 else cprintfc, window0 count1 wherewindowwl-count memmovewindow,windowcount,wl-count конец while freewindow fclosesource if output fcloseou freeqwe freed Test.сpp include stdio.h include mem.h include conio.h void translitchar ,char,char int test translittdict.txt,tsource.txt, tresult.txt
FILE f1fopentcorrect.txt,rt FILE f2fopentresult.txt,rt if f1 f2 printfОшибка при открытии файлаов. return 0 char buf111,buf211 buf1100buf2100 char equal1 while1 freadbuf1,10,1,f1 freadbuf2,10,1,f2 if memcmpbuf1,buf2,10 equal0 break if feoff1 feoff2 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 РТФ-4eMnoH Help Translit Test Exit
About Тест удачно пройден. Help Translit Test Exit
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |
Реферат | "Как бы" и "На самом деле" |
Реферат | Возвратные глаголы на -ся в русском языке |
Реферат | Гражданский кодекс Наполеона 1804 |
Реферат | «Алтай: Строительство. Энергетика. Жкх. Газификация Алтая» |
Реферат | Арабский язык |
Реферат | Славянские языки |
Реферат | Реактивні літаки |
Реферат | Особенности использования частицы "не" |
Реферат | ФИДОвый диалект. |
Реферат | Художественная речь |
Реферат | Основные этапы истории русского языка |
Реферат | Введение в грамматическое учение о слове |
Реферат | Заметки по русскому словообразованию |
Реферат | Публицистический стиль и нормы речевой культуры |
Реферат | "Свое" и "чужое" с точки зрения носителя цыганского языка |