Корректирование текста.

Текст не содержит собственных имён и сокращений, набран с использованием прописных и строчных русских букв. Проверить то, что все фразы (и только они) начинаются с прописной буквы; при необходимости откорректировать текст.



Скачать архив программы

Код программы.

Исходный текст в файле "input.txt"

Отредактированный текст в файле "output.txt"

Описание программы на языке СИ.
В программе используется функция int replace(int s, bool q) от двух аргументов целого и логического типа, выдающая значения целого типа.
Если значение параметра q = true, то эта функция получая на вход код прописной буквы в кодировке windows-1251, возвращает на выходе код той же строчной буквы, прибавляя к нему число 32, если код символа не соответствует букве Ё, и заменяя символ с кодом 168, на символ с кодом 184.
Если значение параметра q = false, то эта функция получая на вход код строчной буквы в кодировке windows-1251, возвращает на выходе код той же прописной буквы, вычитая от него число 32, если код символа не соответствует букве ё, и заменяя символ с кодом 184, на символ с кодом 168.
При q = true функция производит замену кода символа только в том случае, если на вход её подан символ, соответствующий коду прописной русской буквы, и ничего не делает в противном случае.
При q = false функция производит замену кода символа только в том случае, если на вход её подан символ, соответствующий коду строчной русской буквы, и ничего не делает в противном случае.

Основная процедура редактирования текста void editor() открывает текстовый файл "input.txt" для чтения данных и открывает текстовый файл "output.txt" для записи данных. Эти файлы должны располагаться в той же самой папке, в которой находится файл исполняемой программы editor.exe (Папка Output\MingW ).
Поскольку переменная s имеет тип unsigned char , коды всех русских букв располагаются в соответствии с таблицей символов в кодировке Windows=1251.

Сначала каждый встретившийся символ, если он является прописной буквой, заменяется на строчную букву.

После этого первый символ в тексте, если он является буквой, заменяется на прописную букву. Переменная логического типа k0=true тогда и только тогда, когда указатель находится в начале файла "input.txt" , и с того времени, как файл "input.txt" был открыт, не встретилось ни одного символа, отличного от пробела. В самом начале k0=true. Сразу же, как только встретится первый отличный от пробела символ (k0=true), переменной k0 будет присвоено значение k0=false, и строчная буква заменяется на прописную букву. После этого значение k0=false не будет меняться до самого конца алгоритма.

После каждой точки и, возможно, нескольких пробелов после этой точки, нужно изменить первую строчную букву на прописную. Переменная логического типа point=false до тех пор, пока в тексте не встретилась точка с кодом 46. Как только точка встретится в тексте, переменной point будет присвоено значение point=true. Если значение point=true, а символ не является ни пробелом (символом с кодом 32), ни точкой (символом с кодом 46), ни символом перенса на новую строку (сивмолом с кодом 10), и если он является строчной буквой, то он будет заменён на прописную букву, и после этого значению переменной point снова будет присвоено значение point=false. Значение переменной point будет оставаться point=false до тех пор, пока в тексте не встретится следующая точка (символ с кодом 46).

Алгоритм завершит работу, когда будет достигнут конец файла "input.txt". Файлы "input.txt", "output.txt" будут закрыты. Отредактированный текст можно будет просмотреть в файле "output.txt" .

Примечание.

Таблица символов в кодировке cp866 (DOS)

Таблица символов в кодировке windows-1251

На главную страницу.