Лабораторная работа № 8. Программирование с использованием строк
Цель работы: овладеть навыками программирования задач с использованием строк.
Краткие теоретические сведения Для представления символов в памяти компьютера используется тип char. Определение констант и переменных этого типа: const char c1 = 'A'; // константная переменная char c = c1, c2; // переменные Под данные типа char отводится 1 байт. Тип char является целым типом, поэтому внутреннее представление для данных типа char (их коды) — это просто целые числа. Для работы с данными типа char можно использовать все арифметические операции, операции сравнения и побитовые операции, хотя, если учесть, что этот тип используется для представления не чисел, а именно символов, то, естественно, чаще всего применяют операции сравнения. В языках С/С++ нет встроенного строкового типа данных. Для работы со строками используется массив данных типа char. Если подразумевается, что работа ведётся не просто с массивом символов, а со строкой, то она должна заканчиваться символом с кодом 0 ('\0' — нуль-символ). Именно нуль-символ показывает, где заканчиваются данные в таком массиве. Пусть дана строка s (рис. 9): Рис. 9. Строка символов Памяти под неё отводится 6 байт, поэтому описание будет следующим: char s[6]; Полезная информация (текст " ABC") размещается в первых трёх байтах, а затем в третьем байте находится нуль-символ '\0'. Строку s можно было бы инициализировать, т.е. на этапе компиляции задать ей начальное значение: char s[6] = {'A', 'B', 'C', '\0'}; Так как s — это массив (хотя и символов), поэтому инициализация записана точно так же, как это обычно делается для массива. Но s — это ещё и строка, поэтому допускается упрощённый вариант инициализации, схожий с инициализацией простых переменных: char s[6] = " ABC"; При инициализации для строки допустимо не задавать объём выделяемой памяти: char s[] = " ABC"; Теперь компилятор сам подсчитает, сколько требуется отвести памяти под строку, и выделит под неё необходимый объём. Функции для работы со строками и символами представлены в таблице 3. Таблица 3 Функции для работы со строками и символами
продолжение табл. 3
Задание 1. Составить блок-схему алгоритма и программу в соответствии с заданным вариантом. 2. Составить отчет о проделанной работе (аналогично отчету для лабораторной работы №1)
Пример выполнения работы Условие: Поменять порядок символов, расположенных между первой и последней точкой, на обратный.
#include < windows.h> #include < wincon.h> #include < stdio.h> #include< stdlib.h> char* srev(char* str);
void main() { SetConsoleOutputCP(1251); char str[50]=" In.for mat i.ka "; puts(str); srev(str); puts(str); } /* Функция меняет в строке str порядок символов, расположенных между первой и последней точкой, на обратный. */ char* srev(char* str) { char* first, *last; first=strchr(str, '.'); //Адрес первой точки last=strrchr(str, '.'); //Адрес последней точки //Если точек нет или она одна, строку не меняем: if (first==NULL || first==last) return str; //На время “обрезаем” строку: *last='\0'; strrev(first+1); //Восстанавливаем последнюю точку: *last='.'; return str; }
Задания для самостоятельного выполнения 1. Определить, содержит ли текст символы, отличные от малых латинских букв и пробела. 2. Выяснить, является ли заданный текст идентификатором. 3. Если в тексте нет символа *, то оставить этот текст без изменения, иначе каждую из малых латинских букв, предшествующих первому вхождению символа *, заменить на цифру 3. 4. Если в тексте нет символа +, то оставить этот текст без изменения, иначе каждую из цифр, предшествующих первому вхождению символа +, заменить символом -. 5. Если в тексте нет малых латинских букв, то оставить его без изменения, иначе каждый из символов, следующих за первой группой малых латинских букв, заменить точкой. 6. Подсчитать количество русских гласных букв в последнем слове текста. 7. Подсчитать количество цифр в первом слове текста. 8. В каждом из слов текста заменить первую букву звездочкой. 9. Первое слово текста заменить тремя звездочками. 10. Последнее слово текста заменить тремя звездочками. 11. Заменить каждую цифру, расположенную между первой и последней точкой, символом ‘*’. 12. Пусть первая часть текста есть все символы, расположенные до первого встретившегося пробела. Вторая часть - все остальные. Поменять местами первую и вторую части текста. 13. Даны две строки. Вставить все символы второй строки в первую строку, поместив их после символа с заданным индексом. 14. Даны две строки. Если первое слово одной строки совпадает с первым словом другой строки, то удалить первое слово той строки, длина которой больше. Иначе оставить строки без изменения. Контрольные вопросы 1. Указать, какие операции можно выполнять над символьными данными. 2. Указать способ описания символьных данных. 3. Назвать специальные функции, используемые для обработки символьных данных. 4. Для чего используется тип данных char. 5. При инициализации для строки допустимо ли не задавать объём выделяемой памяти. 6. Какие операции можно использовать для работы с типом данных char. 7. Что означает символ '\0'.
|