Цель индивидуальных заданий: Составление алгоритмов и написание программ обработки строк.
Задание на лабораторную работу
Выберите задачу вашего варианта. Разработайте приложение, в котором через диалоговое окно вводится строка – фраза, состоящая из нескольких слов. Слово – это последовательность любых символов, разделенная одним или несколькими пробелами. В каждом из вариантов может вводиться еще какая-либо дополнительная информация для решения поставленной задачи.
Каждое слово-строка фразы обрабатывается разработанной вами функцией обработки. Из обработанных слов склеивается новая фраза по правилам вашего варианта, старая и новая фразы выдаются в диалоговое окно. В зависимости от варианта в окно может выдаваться и другая дополнительная информация.
Алгоритм решения задачи должен быть разделен на функции:
· Индивидуальные функции, определенные в Вашем варианте.
Доступ к нужному символу в строке (движение по строке) осуществлять путем изменения значения указателя (адреса) этого символа.
· Функцию, которая в строке с пробелами ищет первое слово (первую последовательность символов, не разделенных пробелами).
· Функцию обработки фразы, которая получает строку-фразу и, выделяя в ней последовательно все слова, каждое из них обрабатывает по правилу вашего варианта. Функция формирует новую строку-фразу из тех слов, которые подверглись изменению.
В этой функции склеивание из полученных в процессе обработки слов результирующей фразы осуществить одной из стандартных функций: wmemcpy или wcsncpy
wchar_t* wmemcpy ( wchar_t* strDest, const wchar_t* strSource, size_t count ); | wchar_t* wcsncpy ( wchar_t* strDest, const wchar_t* strSource, size_t count ); |
Отладьте созданные Вами вами функции в консоли.
Создайте приложение в Win32, разработайте следующие функции:
· Функцию ввода информации через диалоговое окно.
· Функцию вывода информации в диалоговое окно.
При вводе и выводе больших текстовых строк в диалоговых окнах для элементов управления Edit control задайте дополнительно флажки Multiline, Horizontal scroll. В диалоговом окне вывода дополнительно к этим флажкам установите флажок Read-only.
Функции при необходимости могут (или должны) быть разделены на ряд составляющих функций.
Подключите разработанные вами функции обработки строк и выполните приложение.
Варианты индивидуальных заданий
Вариант 1.
Функция int is RusBukv (TCHAR s) получает символ и определяет, является ли он символом русского алфавита.
Функция TCHAR* isStr Rus (TCHAR* str, int& len) получает исходную строку str без пробелови ищет в ней первую подстроку, содержащую только строчные или прописные буквы русского алфавита. Если такая подстрока найдена, функция возвращает через параметр по ссылке ее длину и ее адрес через возвращаемое значение, и NULL в противном случае. Используйте при разработке алгоритма функции функцию isRusBukv.
Функция int sumLenPstr (TCHAR* str) для строки, полученной через параметры, подсчитывает и возвращает сумму длин предпоследней и последней из найденных подстрок, состоящих из символов кириллицы. Если подстрок нет, то функция возвращает ноль. Используйте при разработке алгоритма функции функцию isStrRus
Функция обработки фразы обрабатывает строку-фразу, по словам и, используя функцию sumLenPstr, формирует новую строку-фразу, включив в нее только те слова, в которых сумма длин предпоследней и последней русских подстрок оказывается одинаковой. Функция формирует информацию о количестве слов в начальной и конечных фразах и сумме длин предпоследней и последней русских подстрок. Результирующая информация в функции должна быть объединена в структуру.
Вариант 2.
Функция int is Latin (TCHAR s) получает символ и определяет, является ли он символом латиницы (строчной или прописной буквы латинского алфавита)
Функция TCHAR* isStrLatinBukv (TCHAR* str, int& n) получает исходную строку str и ищет в ней первую подстроку, содержащую только символы латиницы (строчные или прописные буквы латинского алфавита). Если такая подстрока найдена, функция возвращает через параметр по ссылке длину подстроки и ее адрес через возвращаемое значение, и NULL в противном случае. Используйте при разработке алгоритма функции функцию isLatin.
Функция int raznLenPstr (TCHAR* str) для строки, полученной через параметры, подсчитывает и возвращает разность длин первой и последней из найденных подстрок, состоящие из символов латиницы. Если подстрок меньше двух функция возвращает ноль. Используйте при разработке алгоритма функции функцию isStrLatinBukv.
Функция обработки фразы обрабатывает строку-фразу, по словам и, используя функцию raznLenPstr, формирует новую строку-фразу, включив в нее только те слова, в которых разность длин первой и последней подстрок образуют возрастающую последовательность. Функция формирует информацию о количестве слов в начальной и конечных фразах и сумме разностей длин первой и последней латинских подстрок. Результирующая информация в функции должна быть объединена в структуру.
Вариант 3.
Функция int is LatinLow (TCHAR s) получает символ и определяет, является ли он прописным символом латиницы.
Функция TCHAR* isPstrLatinLow (TCHAR* str, int& n) получает исходную строку str и ищет в ней первую подстроку, содержащую только прописные символы латиницы. Если такая подстрока найдена, функция возвращает через параметр по ссылке длину подстроки и ее адрес через возвращаемое значение, и NULL в противном случае. Используйте при разработке алгоритма функции функцию isPstrLatinLow.
Функция TCHAR up (TCHAR s) получает символ латинской буквы и возвращает эту латинскую букву в коде верхнего регистра.
Функция TCHAR* upNPstr (TCHAR* str, int n) получает строку str и преобразует каждую n -ую подстроку латинских строчных букв в подстроку тех же букв, но в противоположном регистре, преобразуя каждый символ латинской буквы строки str в этот же символ, но в коде верхнего регистра. Функция возвращает адрес строки str, если нашлась хотя бы одна n -ая подстрока, над которой были произведены преобразования, и NULL, если строка не была подвергнута преобразованию. Функция использует разработанные Вами функции isPstrLatin и up.
Функция обработки фразы обрабатывает в строке-фразе каждое слово и, используя функцию upNPstr, формирует новую строку-фразу, включив в нее только те слова, в которых подверглась изменению каждая n -ая подстрока из латинских прописных букв. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 4.
Функция TCHAR* firstРStr (TCHAR* strRez, TCHAR * str) получает две строки - строку strRez и строку str, и ищет в строке strRez первую подстроку, равную строке str, Функция возвращает адрес найденной подстроки или ноль, если подстрока не найдена.
Функция void pushSubstr (TCHAR* str, TCHAR* substr) вставляет в начало строки str строку substr.
Функция char* doubleSymbPstr (char* strRez, char* str) получает две строки строку str и строку strRez, и ищет в строке strRez подстроки, равные строке str, и в каждую найденную дублирует, если перед ней стоит символ, равный первому символу str, не дублируя сам этот символ. Функция возвращает адрес строки strRez, если символы строки подвергались преобразованию, и NULL в противном случае. Используйте при разработке алгоритма функции функцию firstРStr и pushSubstr.
Функция обработки фразы, получив строку-фразу и строку str, обрабатывает строку-фразу, по словам и, используя функцию doubleSymbPstr, формирует новую строку-фразу, включив в нее только те слова, в которых удалось продублировать подстроки, равные полученной строке str. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 5.
Функция TCHAR* firstOtrezokPStr (TCHAR* str, TCHAR* pstr, int& len) получает строку символов str, строку символов pstr, и ищет адрес и длину первой подстроки, совпадающей с любым отрезком строки символов pstr. Если такой подстроки не существует, функция возвращает 0.
Функция TCHAR* delNsymbl (TCHAR* str, int N) удаляет из полученной строки N первых символов.
Функция обработки фразы, получив строку-фразу и строку pstr, обрабатывает строку-фразу, по словам и, используя функцию firstOtrezokPStr, находит все отрезки в словах фразы, совпадающие с строкой pstr. Те из найденных отрезков, длина которых больше двух, удаляются, а само слово записывается в новую строку-фразу. Функция формирует информацию о количестве слов, не попавших в конечную фразу. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 6.
Функция TCHAR* findFirstSubstr (TCHAR* str, TCHAR* substr, int& len) получает стpоку s tr, строку substr и ищет в строке s tr первую подстpоку, состоящую только из символов строки substr. Функция возвращает адрес подстроки и ее длину,если она найдена, иначе возвращается адресный 0.
Функция TCHAR* delNsymbl (TCHAR* str, int N) удаляет из полученной строки N первых символов.
Функция void pushSubstr (TCHAR* str, TCHAR* substr) вставляет в начало строки str строку substr.
Функция TCHAR* findHowSubstr (TCHAR* str, TCHAR* substr1, TCHAR* substr2, int how) получает стpоку s tr, строку substr1 и substr2, число how иищет в строке s tr how -тую подстpоку, состоящую только из символов строки substr1, и, найдя, заменяет ее на подстроку substr2. Функция возвращает адрес строки, если удалось сделать хоть одну замену, в противном случае функция возвращает адресный 0. Используйте при разработке алгоритма функции функции findFirstSubstr, delNsymbl, pushSubstr.
Функция обработки фразы, получив строку-фразу и две строки substr1 и substr2, число how обрабатывает каждое слово строки-фразы функцией findHowSubstr и формирует новую строку-фразу, включив в нее только те слова, в которые подверглись изменению в процессе обработки. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 7.
Функция TCHAR* bounding Pstr (TCHAR* str, TCHAR Symb, int& len) получает строку, символ и возвращает адрес подстроки, начинающейся и заканчивающейся заданным символом. Если такой подстроки нет в строке, то функция возвращает 0.
Функция TCHAR* delNsymbl TCHAR* str, int N) удаляет из полученной строки N первых символов.
Функция TCHAR* bounding NPstr (TCHAR* str, TCHAR Symb, int N) получает строку, символ и число N, находит первую N- туюподстроку, начинающуюся и заканчивающуюся полученным символом, и удаляет символы подстроки, оставив в строке второй ограничивающий подстроку символ. Если удаление невозможно, функция возвращает 0, в противном случае возвращает адрес строки.
Функция обработки фразы, получив строку-фразу, символ Symb и целое N, обрабатывает каждое слово строки-фразы функцией boundingNPstr, формирует новую строку-фразу, включив в нее только те слова, в которых удалось удалить каждую N- туюподстроку, ограниченную символами Symb. Функция формирует информацию о количестве слов в конечной фразе. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 8.
Функция int is Number (TCHAR s) получает символ и определяет, является ли он цифровым символом.
Функция TCHAR* is NumberPstr (TCHAR* str, int& len) получает исходную строку str и ищет в ней первую подстроку, содержащую только цифровые символы. Если такая подстрока найдена, функция возвращает через параметр по ссылке ее длину и ее адрес через возвращаемое значение, и NULL в противном случае. Используйте при разработке алгоритма функции функцию isNumber.
Функция TCHAR* delNsymbl (TCHAR* str, int N) удаляет из полученной строки N первых символов.
Функция TCHAR* numtrim (TCHAR* str) получает строку str, в которой могут быть цифры в конце, в начале, в середине, удаляет из нее только начальные и конечные цифры. Функция возвращает адрес str, если строку удалось преобразовать, и NULL, если не удалось. Функция должна использовать разработанные функции isNumberPstr и delNsymbl.
Функция обработки фразы обрабатывает строку-фразу, по словам и, используя функцию numtrim, формирует новую строку-фразу, включив в нее только те слова, в которых удалены цифровые символы в начале и в конце. Функция формирует информацию о количестве слов в начальной и конечных фразах. Результирующая информация в функции должна быть объединена в структуру.
Вариант 9.
Функция TCHAR* padL eft (TCHAR* str, TCHAR symb, int n) получает строку str, символ symb, число n и добавляет к строке str слева n повторений символа. symb. Функция возвращает адрес str.
Функция TCHAR* poiskEqualPstr (TCHAR* str, TCHAR* pstr) получает стpоку s tr, строку pstr и ищет в строке s tr первую подстроку, равную строке pstr. Функция возвращает адрес подстроки в строке,если она найдена, иначе возвращается адресный 0.
Функция TCHAR* pushaAfterNPstr (TCHAR* str, TCHAR* pstr, TCHAR symb, int n) ищет в строке str все подстроки, равные строке pstr и после каждой n найденной такой подстроки вставляет n символов symb. Функция возвращает адрес строки str, если ее удалось преобразовать, и 0, если не удалось.
Функция обработки фразы, получив строку-фразу, строку pstr, символ symb и целое n обрабатывает строку-фразу, по словам и, используя функцию pushaAfterNPstr, формирует новую строку-фразу, включив в нее только те слова, в которые удалось вставить подстроки, равные полученной строке pstr. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 10.
Функция TCHAR* adjacentDel (TCHAR* str), получает строку str и удаляет из нее первый символ, код которого оказался смежным с кодом следующего символа (смежными числами назовем числа, значения которых отличаются на 1). Функция возвращает адрес удаленного символа, если удалось удалить такой символ, и NULL, если не удалось.
Функция int adjacentDel All (TCHAR* str), получает строку str и удаляет из нее все символы, коды которых оказались смежными с кодом следующего за ними символов. Функция количество удаленных смежных символов. Функция должна использовать разработанную функцию adjacentDel.
Функция обработки фразы обрабатывает каждое слово строки-фразы, используя функцию adjacentDelAll, копируя в новую строку-фразу только те слова, в которых удалось удалить все смежные символы. Функция формирует информацию о количестве слов в начальной и конечной фразах и количестве удаленных смежных символов. Результирующая информация в функции должна быть объединена в структуру.
Вариант 11.
Функция int is ZifrSymb (TCHAR s) получает символ и определяет, является ли он цифровым символом.
Функция TCHAR* is ZifrPstr (TCHAR* str, int& len) получает исходную строку str и ищет в ней первую подстроку, содержащую только цифровые символы. Если такая подстрока найдена, функция возвращает через параметр по ссылке ее длину и ее адрес через возвращаемое значение, и NULL в противном случае. Используйте при разработке алгоритма функции функцию isZifrSymb.
Функция TCHAR* delNsymbl (TCHAR* str, int N) удаляет из полученной строки N первых символов.
Функция TCHAR* delArifProgPstr (TCHAR* str) получает строку str, в которой могут быть цифровые подстроки, и удаляет те из них, значения цифр которых не образуют арифметическую прогрессию. Функция возвращает адрес str, если строку удалось преобразовать, и NULL, если не удалось.
В функции обработки фразы, используя функцию delArifProgPstr, обработать каждое слово фразы, поместив в новую строку-фразу только те слова, в которых удалось удалить цифровые подстроки, не представляющие арифметическую прогрессию. Функция формирует информацию о количестве слов в конечной фразе. Результирующая информация в функции должна быть объединена в структуру.
Вариант 12.
Функция TCHAR* poiskPstr (TCHAR* str, TCHAR* pstr) получает стpоку s tr, строку pstr и ищет в строке s tr первую подстроку, равную строке pstr. Функция возвращает адрес подстроки в строке,если она найдена, иначе возвращается адресный 0.
Функция TCHAR * udalNsymbl (TCHAR* str, int N) удаляет из полученной строки N первых символов.
Функция void insertPstr (TCHAR* str, TCHAR* pstr) вставляет в начало строки str строку pstr.
Функция char* poiskTwoPstr (TCHAR* str, TCHAR* pstr1, TCHAR* pstr2) получает стpоку s tr, строку pstr1 и pstr2 иищет в строке s tr первую и последнюю подстpоки, равные строке pstr1, и заменяет, если находит их, на подстроку pstr2. Функция возвращает адрес строки, если удалось сделать хоть одну замену, в противном случае функция возвращает адресный 0. Используйте при разработке алгоритма функции poiskPstr, udalNsymbl и insertPstr.
Функция обработки фразы, получив строку-фразу, строки pstr1, pstr2 обрабатывает каждое слово строки-фразы и, используя функцию poiskTwoPstr, формирует новую строку-фразу, включив в нее только те слова, в которых удалось заменить подстроки, равные полученной строке pstr1. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 13.
Функция int is Alfa (TCHAR s) получает символ и определяет, является ли он символом латиницы или кириллицы(строчным или прописным)
Функция TCHAR * strAlfa (TCHAR * str, int& lenAlfa) получает строку str и ищет первую буквенную подстроку. Функция возвращает адрес найденной подстроки и ее длину или NULL, если в строке нет буквенной подстроки символов.
Функция void swapNsymb (TCHAR* str, int n) получает строку str и преобразует ее, переставляя в обратном порядке n первых символов строки.
Функция char* swapNPstr (TCHAR* str, int n) получает строку str и число n и преобразует в строке каждую n –ую буквенную подстроку, переставляя буквы в ней в обратном порядке. Функция возвращает адрес строки, если удалось сделать хоть одну перестановку, в противном случае функция возвращает адресный 0. Используйте при разработке алгоритма функции функции strAlfa, qaz.
Функция обработки фразы, получив строку-фразу и целое число n, обрабатывает каждое слово строки-фразы функцией swapNPstr, формируя новую строку-фразу. В новую фразу включаются только те слова, в которых удалось переставить буквы в нужных подстроках. Функция формирует информацию о количестве слов в конечной фразе. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 14.
Функция TCHAR* ubratBeg (TCHAR* str, int nLen) получает строку. str, и удаляет из нее nLen первых символов. Функция возвращает адрес str.
Функция TCHAR * poiskBukvCheredov (TCHAR * str, int& lenAlfa) получает строку str и ищет первую буквенную подстроку, в которой чередуются две буквы. Функция возвращает адрес найденной подстроки и ее длину или NULL, если в строке нет буквенной подстроки с чередованием символов.
Функция char* ubratAllCheredov (TCHAR* str) получает строку str, находит все буквенные подстроки с чередованием и удаляет из них чередующиеся буквы. Если строку не удалось преобразовать, функция возвращает 0, иначе возвращает адрес строки. Используйте при разработке алгоритма функции poiskBukvCheredov и ubratBeg.
В функции обработки фразы, используя функцию ubratAllCheredov, обработать каждое слово строки-фразы, поместив в новую строку-фразу только те слова, в которых удалось удалить чередование букв. Функция формирует информацию о количестве слов в конечной фразе. Результирующая информация в функции должна быть объединена в структуру.
Вариант 15.
Функция void add( TCHAR* str, TCHAR symb, int n) получает строку str, количество вставляемых символов n, вставляемый символ symb и вставляет n символов в начало строки str.
Функция TCHAR * poiskPovtorSymb (TCHAR * str, int& len) получает строку str и ищет первую группу одинаковых символов. Если группа найдена, функция возвращает ее длину len и адрес. В противном случае возвращается 0.
Функция TCHAR * insertAfter (TCHAR* str, TCHAR symb1, int n, TCHAR symb2) получает строку и ищет в ней группу повторов символа symb1 и после каждого найденного повтора символа вставляет n символов symb2. Функция возвращает адрес строки, если строка преобразовывалась, в противном случае функция возвращает 0. Функция должна использовать разработанные функции add и poiskPovtorSymb.
Функция обработки фразы, получив строку-фразу, символы symb1, symb2 и целое n обрабатывает каждое слово строки-фразы и, используя функцию insertAfter, формирует новую строку-фразу, включив в нее только те слова, в которые удалось вставить символы symb2. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 16.
Функция TCHAR* poiskPstr (TCHAR* str, TCHAR symbLeft, TCHAR symbRight, int& len) получает строку str, и ищет первую подстроку, начинающуюся с символа, равного символу symbLeft и кончая первым встретившимся в этой строке символом, равным symbRight. Если хотя бы один из ограничивающих символов symbLef или symbRight подстроки не найдены, функция возвращает NULL. В противном случае функция возвращает адрес найденной подстроки и ее длину.
Функция void insert (TCHAR* str, TCHAR symb) получает строку и символ и вставляет символ в начало строки.
Функция char* insertNumber (TCHAR* str, TCHAR symbLeft, TCHAR symbRight) получает строку str, и ищет в ней все подстроки, начинающуюся с символа, равного символу symbLeft и кончающуюся первым встретившимся в этой строке символом, равным symbRight, и после каждой такой подстроки, длина которой меньше или равна 9, вставляет цифровой символ, равный длине этой подстроки. Если подстроки не найдены или их длина больше 9, функция возвращает NULL. В противном случае функция возвращает адрес преобразованной строки. Функция должна использовать разработанные функции poiskPstr и insert.
Функция обработки фразы, получив строку-фразу и символы symbLeft и symbRight, обрабатывает все слова строки-фразы, используя функцию insertNumber, и формирует новую строку-фразу, включив в нее только те слова, в которые удалось вставить цифровой символ, равный длине найденной подстроки. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 17.
Функция TCHAR* poiskOtDoSymb (char* str,TCHAR symbl, int& len) получает строку str, символ symbl и ищет в этой строке первую подстроку между двумя символами symbl (последовательность значащих символов, ограниченную symbl). Функция возвращает адрес найденной подстроки и ее длину. Если подстрока не найдена, то возвращается адрес 0.
Функция TCHAR* udalenie MinOtDoSymb (TCHAR* str, TCHAR symbl, int& len) получает строку str и символ symbl, ищет все подстроки, ограниченные символом symbl, и самую короткую среди них удаляет. Если удаление удалось, то функция возвращает адрес str иколичество удаленных символов. В противном случае функция возвращает 0.
Функция обработки фразы, получив строку-фразу, символ symb, обрабатывает все слова строки-фразы, используя функцию udalenieMinOtDoSymb, и формирует новую строку-фразу, включив в нее только те слова, в которых удалось удалить короткую найденную подстроку. Функция формирует информацию о количестве слов в начальной и конечной фразах, а также о количестве всех удаленных символов. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 18.
Функция TCHAR* dubl (TCHAR* str, int& len) получает строку str и ищет в ней первую группу повторяющихся символов (одинаковых символов, идущих подряд). Функция возвращает адрес и длину такой группы символов, если она есть, и адресный 0 и длину 0, если в строке нет ни одного повторяющегося символа.
Функция void delNsymbl (TCHAR * str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция int small (TCHAR* str) получает строку str и «сжимает» строку, удалив из нее все, кроме одного, одинаковые символы, следующие подряд. Если таких символов в строке не найдено, то функция возвращает 0, в противном случае возвращается количество удаленных символов. Используйте при разработке алгоритма функции функции dubl и delNsymbl.
Функция обработки фразы, получив строку-фразу, обрабатывает все слова строки-фразы, используя функцию small, и формирует новую строку-фразу. Функция подсчитывает количество удаленных символов. Результирующая информация в функции должна быть объединена в структуру.
Вариант 19.
Функция int isCifr (TCHAR symb) получает символ и определяет, является ли он цифровым символом.
Функция TCHAR* poiskCifrPstr (TCHAR* str, int& len) получает строку, находит в ней первую цифровую подстроку и возвращает ее адрес и длину. Если такая подстрока не найдена, то функция возвращает адресный 0.
Функция void delNsymbl (TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция void insertNsymbl (TCHAR* str, TCHAR symb, int n) получает строку, символ symb число n и вставляет в начало строки n символов symb.
Функция TCHAR* longStr (TCHAR* str, TCHAR symb) получает строку str, в которой могут присутствовать цифровые подстроки, и символ symb. Функция находит цифровые подстроки и заменяет каждую цифровую подстроку S символами symb. S равно сумме цифр в подстроке, которая подлежит замене. Если цифровые подстроки в строке str не найдены, то возвращается NULL, в противном случае функция возвращает адрес преобразованной строки str. Используйте при разработке алгоритма функции функции poiskCifrPstr, delNsymbl, insertNsymbl.
Функция обработки фразы, получив строку-фразу, символ symb, обрабатывает каждое слово строки-фразы, используя функцию longStr, формирует новую строку-фразу, включив в нее только те слова, в которые удалось вставить последовательности символов symb, равные по длине сумме цифр подстрок. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 20.
Функция TCHAR* findSymbPstr (TCHAR* str, TCHAR symb, int& len) получает строку, символ и ищет в ней подстроку, состоящую из полученного символа. Функция возвращает адрес найденной подстроки и ее длину. Если подстрока не найдена, то функция возвращает адресный 0.
Функция void vstavkaPstr (TCHAR* str TCHAR* pstr) получает строку str и pstr и вставляет строку pstr в начало строки str.
Функция void delNsymbl (TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция int smallStr (TCHAR* str) получает строку str, и удаляет в ней все, кроме одного, повторяющиеся символы, заменив их подстрокой-числом, равным числу удаленных символов. Функция возвращает 0, если замен не произошло. В противном случае функция возвращает количество всех удаленных символов. Используйте при разработке алгоритма функции функции findSymbPstr, vstavkaPstr и delNsymbl.
В функции обработки фразы, используя функцию smallStr, обработать каждое слово строки-фразы, поместив в новую строку-фразу только те слова, в которых удалось удалить повторяющиеся символы и заменить их числовой последовательностью. Функция формирует информацию о суммарном количестве удаленных символов конечной фразе. Результирующая информация в функции должна быть объединена в структуру.
Вариант 21.
Функция TCHAR * doublingFirstSymb (TCHAR* str) получает строку str и вставляет в первую позицию символ, стоящий на этой позиции (дублирует этот символ). Функция возвращает адрес преобразованной строки str.
Функция TCHAR* findPstr (TCHAR* str1, TCHAR* str2), получив строку str1, ищет в ней первую подстроку, равную строке str2. Если такая подстрока найдена, то функция возвращает адрес найденной подстроки. Если подстрока не найдена, то функция возвращает адресный 0.
Функция int doublingBegEndSymbPstr (TCHAR* str, TCHAR* pstr) получает строку str, и строку pstr, ищет в строке str все подстроки, равные строке pstr, и в каждой найденной подстроке дублирует начальный и конечный ее символы. Функция возвращает количество вновь вставленных символов.
Функция обработки фразы, получив строку-фразу, строку pstr, каждое слово строки-фразы обрабатывает, используя функцию doublingBegEndSymbPstr, формирует новую строку-фразу, включив в нее только те слова, в которых удалось продублировать начальные и конечные символы подстрок, равных полученной строке pstr. Функция формирует информацию о суммарном количестве вставленных символов. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 22.
Функция void delNsymbl TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция TCHAR* poisk1BigAlfa (TCHAR* str), получив строку, ищет в ней адрес первого прописного буквенного латинского символа, за которым следует или перед которым стоит его строчный символ. Если таких символов нет, функция возвращает адресный 0.
Функция int smallSymb (TCHAR* str) получает строку str и удаляет прописные символы, если они дублируют рядом стоящий строчный символ. Функция возвращает количество удаленных символов. Используйте при разработке алгоритма функции функции delNsymbl и poisk1BigAlfa.
Функция обработки фразы, получив строку-фразу, обрабатывает все слова строки-фразы, используя функцию smallSymb, и формирует новую строку-фразу. Функция подсчитывает суммарное количество удаленных символов. Результирующая информация в функции должна быть объединена в структуру.
Вариант 23.
Функция TCHAR* findPstr (TCHAR* str1, TCHAR* str2), получив строку str1, ищет в ней первую подстроку, равную строке str2. Если такая подстрока найдена, то функция возвращает адрес найденной подстроки. Если подстрока не найдена, то функция возвращает адресный 0.
Функция void replaceNSymb (TCHAR* str, int nSymb), получив строку str и число nSymb, первые nSymb символов записывает в этой стоке в обратном порядке.
Функция void delNsymbl (TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция char* replaceSubStr (TCHAR* str, TCHAR* strSub, int n) получает строку str, строку strSub и число n. Функция, найдя каждую n подстроку, равную strSub, переписывает символы этой подстроки в обратном порядке, остальные найденные подстроки удаляет. Функция возвращает адрес строки str, если удалось выполнить хотя бы одно преобразование в строке, в противном случае функция возвращает 0. Используйте при разработке алгоритма функции функции findPstr, delNsymbl и replaceNSymb.
Функция обработки фразы, получив строку-фразу, строку strSub, целое число n обрабатывает каждое слово строки-фразы и, используя функцию replaceSubStr, формирует новую строку-фразу, включив в нее только те слова, в которых удалось произвести изменения. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 24.
Функция void delNsymbl (TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция char* FirstPstrS1S2 (TCHAR* str, TCHAR s1, TCHAR s2, int& lenPstr) получает строку str, символ s1 и символ s2 и ищет в строке str первую подстроку от символа s1 до символа s2, включая сам символ. Если такая подстрока найдена, то функция возвращает адрес этой подстроки и ее длину, в противном случае функция возвращает адресный 0.
Функция char* changeStr (TCHAR* str, TCHAR s1, TCHAR s2) получает строку str, символ s1 и символ s2 и ищет в строке str все подстроки, от символа s1 до символа s2 и проверяет наличие в найденной подстроке первого цифрового символа. Если он найден, то часть подстроки от найденного цифрового символа до ее конца (включая символ s2) удаляется. Функция возвращает адрес строки и, если удалось вставить хотя бы один символ, в противном случае возвращает 0. Используйте при разработке алгоритма функции delNsymbl и FirstPstrS1S2.
Функция обработки фразы, получив строку-фразу, символы s1, s2 обрабатывает каждое слово строки-фразы и, используя функцию changeStr, формирует новую строку-фразу, включив в нее только те слова, в которых удалось сделать удаление частей подстрок. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 25.
Функция int isZifr (TCHAR symb) получает символ и определяет, является ли он цифровым символом.
Функция TCHAR* poiskZifrPstr (TCHAR * str, int& len) получает строку и находит в ней первую цифровую подстроку и возвращает ее адрес и длину. Если такая подстрока не найдена, то функция возвращает адресный 0.
Функция void delNsymbl (TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция void vstavkaPstr (TCHAR* str TCHAR* pstr) получает строку str и pstr и вставляет строку pstr в начало строки str.
Функция TCHAR* zamenaZifr (TCHARr* str, TCHAR* pstr) получает строки str и pstr, ищет в строке str все цифровые подстроки и заменяет те из них на строку pstr, которые по длине оказались меньше строки pstr. Функция возвращает адрес строки str, если произошла хотя бы одна замена, в противном случае функция возвращает адресный 0. Используйте при разработке алгоритма функции функции poiskZifrPstr, delNsymbl и vstavkaPstr.
Функция обработки фразы, получив строку-фразу, строку pstr обрабатывает каждое слово строки-фразы и, используя функцию zamenaZifr, формирует новую строку-фразу, включив в нее только те слова, в которых удалось заменить цифровые подстроки строкой pstr. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 26.
Функция int is Alfa (TCHAR s) получает символ и определяет, является ли он символом латиницы (строчным или прописным)
Функция TCHAR * strAlfa (TCHAR * str, int& lenAlfa) получает строку str и ищет первую буквенную подстроку. Функция возвращает адрес найденной подстроки и ее длину или NULL, если в строке нет буквенной подстроки символов.
Функция int lower (TCHAR s) получает символ и, если это буквенный символ, преобразует его код из кода верхнего регистра в код нижнего регистра. Функция возвращает 1, если символ подвергся преобразованию и ноль, если такого преобразования не было.
Функция TCHAR* delNsymbl (TCHAR * str, int N) удаляет из полученной строки N первых символов.
Функция TCHAR* zamenaAlfaStr (TCHAR* str) получает строку str и ищет в ней все буквенные подстроки. Если в найденной подстроке не удается преобразовать ни одного буквенного символа из верхнего регистра в нижний, то такая подстрока удаляется из строки str. Функция возвращает 0, если строка не подверглась изменению, в противном случае функция возвращает адрес строки.
Функция обработки фразы, получив строку-фразу, обрабатывает все слова строки-фразы, используя функцию zamenaAlfaStr, и формирует новую строку-фразу только из слов, претерпевших изменения в процессе обработки. Функция подсчитывает количество слов в новой фразе. Результирующая информация в функции должна быть объединена в структуру.
Вариант 27.
Функция int isCifr (TCHAR symb) получает символ и определяет, является ли он цифровым символом.
Функция TCHAR* poiskCifrPstr (TCHAR* str, int& len) получает строку, находит в ней первую цифровую подстроку и возвращает ее адрес и длину. Если такая подстрока не найдена, то функция возвращает адресный 0.
Функция void delNsymbl (TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция void insertPstr (TCHAR* str, TCHAR* pstr) получает строку str и вставляет в начало строки строку pstr.
Функция TCHAR* zamenaCifrNaPstr (TCHAR* str, TCHAR* pstr) получает две строки str и рstr, ищет в строке str цифровые подстроки и каждую найденную подстроку, у которой совпадают первый и последний символ, заменяет на строку pstr. Если в процессе обработки строка str подверглась изменению, то функция возвращает ее адрес, в противном случае функция возвращает 0.
Функция обработки фразы, получив строку-фразу, строку pstr, каждое слово строки-фразы обрабатывает, используя функцию zamenaCifrNaPstr, формирует новую строку-фразу, включив в нее только те слова, в которых удалось заменить цифровые подстроки подстроками, равными строке pstr. Функция формирует информацию о количестве слов, удаленных из старой фразы. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 28.
Функция TCHAR* findPstr (TCHAR* str1, TCHAR* str2), получив строку str1, ищет в ней первую подстроку, равную строке str2. Если такая подстрока найдена, то функция возвращает адрес найденной подстроки. Если подстрока не найдена, то функция возвращает адресный 0.
Функция void delNsymbl (TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция TCHAR* delSubStr (TCHAR* str, TCHAR* strSub, int n) получает строку str, строку strSub, ищет в строке str все подстроки равные строке strSub и удаляет те из них, перед которыми и после которых стоят одинаковые символы. Равные символы также удаляются.
Функция возвращает адрес строки str, если в ней произошли изменения, в противном случае функция возвращает 0.
Функция обработки фразы, получив строку-фразу, строку strSub, каждое слово строки-фразы обрабатывает, используя функцию delSubStr, формирует новую строку-фразу, включив в нее только те слова, в которых удалось произвести изменения. Функция формирует информацию о количестве слов, не подвергшихся изменению в исходной фразе. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 29.
Функция void delNsymbl (TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция void insertNsymbl (TCHAR* str, TCHAR symb, int n) получает строку, символ symb число n и вставляет в начало строки n символов symb.
Функция TCHAR* poiskFirstPstrS1S2 (TCHAR* str, TCHAR s1, TCHAR s2, int& lenPstr) получает строку str, символ s1 и символ s2 и ищет в строке str первую подстроку от символа s1 до символа s2, включая сам символ. Если такая подстрока найдена, то функция возвращает адрес этой подстроки и ее длину, в противном случае функция возвращает адресный 0.
Функция TCHAR* udlineniePstr (TCHAR* str, TCHAR s1, TCHAR s2, int N) получает строку str, символ s1 и символ s2, целое число N. Функция ищет в строке str все подстроки, от символа s1 до символа s2 и, если длина очередной найденной подстроки lenPstr оказывается меньше N, то после символа s1 вставляется N - lenPstr символов s1, в противном случае найденная подстрока удаляется. Функция возвращает адрес строки str, если в ней произошли изменения, в противном случае функция возвращает 0.
Функция обработки фразы, получив строку-фразу, символы s1, s2 и целое число N обрабатывает каждое слово строки-фразы и, используя функцию udlineniePstr, формирует новую строку-фразу, включив в нее только те слова, в которых произведены изменения. Функция формирует информацию о количестве слов в начальной и конечной фразах. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 30.
Функция TCHAR* poiskPstr (TCHAR* str, TCHAR* pstr) получает стpоку s tr, строку pstr и ищет в строке s tr первую подстроку, равную строке pstr. Функция возвращает адрес подстроки в строке,если она найдена, иначе возвращается адресный 0.
Функция TCHAR* moveOfNsymbl (TCHAR* str, int N) удаляет из полученной строки N первых символов.
Функция void insertNsymbl (TCHAR* str, TCHAR symb, int n) получает строку, символ symb число n и вставляет в начало строки n символов symb.
Функция TCHAR * replacementPstr (TCHAR* str, TCHAR* pstr, TCHAR symb) получает стpоку s tr, строку pstr исимвол symb, ищет в строке s tr все подстроки, равные строке pstr. Если перед найденной подстрокой обнаруживается символ symb, а после нее этого символа нет, то он добавляется. Если же перед найденной подстрокой символа symb нет, то эта подстрока удаляется. Функция возвращает 0, если строка str не подверглась изменению, в противном случае функция возвращает адрес строки str.
Функция обработки фразы, получив строку-фразу, строку pstr и символ symb, каждое слово строки-фразы обрабатывает, используя функцию replacementPstr, формирует новую строку-фразу, включив в нее только те слова, в которых произошли изменения. Функция формирует информацию о количестве слов, удаленных из старой фразы. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 31.
Функция int isCifrSymb (TCHAR symb) получает символ и определяет, является ли он цифровым символом.
Функция TCHAR* poiskCifrPstr (TCHAR* str, int& len) получает строку, находит в ней первую цифровую подстроку и возвращает ее адрес и длину. Если такая подстрока не найдена, то функция возвращает адресный 0.
Функция void delNsymbl (TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
Функция void insertPstr (TCHAR* str, TCHAR* pstr) получает строку str и вставляет в начало строки строку pstr.
Функция TCHAR* CifrNaPstr (TCHAR* str, TCHAR* pstr, int N) получает две строки str и рstr, целое число N, ищет в строке str цифровые подстроки и каждую найденную подстроку, у которой сумма цифр меньше числа N удлиняет символьным представлением числа N, подстроки, у которых сумма цифр больше числа N, урезаются на одну последнюю символьную цифру. Функция возвращает 0, если строка str не подверглась изменению, в противном случае функция возвращает адрес строки str.
Функция обработки фразы, получив строку-фразу, строку pstr, целое число N обрабатывает каждое слово строки-фразы, используя функцию CifrNaPstr и формирует новую строку-фразу, включив в нее только те слова, в которых удалось изменить цифровые подстроки. Функция формирует информацию о количестве слов в новой фразе. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 32.
Функция TCHAR* searchPstr (TCHAR* str, TCHAR* pstr) получает стpоку s tr, строку pstr и ищет в строке s tr первую подстроку, равную строке pstr. Функция возвращает адрес подстроки в строке,если она найдена, иначе возвращается адресный 0.
Функция TCHAR* moveNsymbl (TCHAR* str, int N) удаляет из полученной строки N первых символов.
Функция void insertNsymbl (TCHAR* str, TCHAR symb, int n) получает строку, символ symb число n и вставляет в начало строки n символов symb.
Функция TCHAR * moveInsertSymbPstr (TCHAR* str, TCHAR* pstr, TCHAR symb) получает стpоку s tr, строку pstr исимвол symb, ищет в строке s tr все подстроки, равные строке pstr. Если перед найденной подстрокой обнаруживается символ, равный первому символу строки str, то он заменяется двумя символами symb, если перед найденной строкой нет первого символа строки str, то удаляется последний символ найденной подстроки. Функция возвращает 0, если строка str не подверглась изменению, в противном случае функция возвращает адрес строки str.
Функция обработки фразы, получив строку-фразу, строку pstr, символ symb обрабатывает каждое слово строки-фразы, используя функцию moveInsertSymbPstr, формирует новую строку-фразу, включив в нее только те слова, в которых удалось изменить подстроки, равные строке pstr. Функция формирует информацию о количестве слов, попавших в новую фразу. Исходная и результирующая информация в функции должна быть объединена в структуры.
Вариант 33.
Функция void insertPstr (TCHAR* str, TCHAR* pstr) получает строку str и вставляет в начало строки строку pstr.
Функция TCHAR* moveNsymbl (TCHAR* str, int N) удаляет из полученной строки N первых символов.
Функция TCHAR* poiskFirstFromS1ToS2 (TCHAR* str, TCHAR s1, TCHAR s2, int& lenPstr) получает строку str, символ s1 и символ s2 и ищет в строке str первую подстроку от символа s1 до символа s2, включая сам символ. Если такая подстрока найдена, то функция возвращает адрес этой подстроки и ее длину, в противном случае функция возвращает адресный 0.
Функция TCHAR* poiskAllFromS1ToS2 (TCHAR* str, TCHAR* strSub, TCHAR s1, TCHAR s2) получает две строки str и strSub, два символа s1 и s2. Функция ищет в строке str все подстроки, от символа s1 до символа s2 и, если в найденной подстроке находится хотя бы один цифровой символ, то часть подстроки от первого встреченного цифрового символа до конца подстроки заменяется строкой strSub.
Функция обработки фразы, получив строку-фразу, строку strSub, два символа s1 и s2 обрабатывает каждое слово строки-фразы, используя функцию poiskAllFromS1ToS2, формирует новую строку-фразу, включив в нее только те слова, в которых удалось сделать преобразования. Функция формирует информацию о количестве слов, удаленных из старой фразы. Исходная и результирующая информация в функции должна быть объединена в структуры.
ЛАБОРАТОРНАЯ РАБОТА №3
Цель работы: Составление алгоритмов и написание многомодульных программ обмена данными с диском в стиле С++ (с использованием потоков С ++).
Лабораторная работа имеет только индивидуальное задание.
Задание на лабораторную работу