ТГУ – Лабораторная работа – ОБРАБОТКА СТРОК

Цель работы: Рассмотреть представление данных в виде строки. Изучить основные способы обработки строк.
Краткие теоретические сведения
Первый тип строк предполагает, что строка определяется как символьный массив, который завершается нулевым символом ( ‘\0’ ). Таким образом, строка с завершающим нулем состоит из символов и конечного нуль-символа. Другой тип представления строк в C++ заключается в применении объектов класса string, который является частью библиотеки классов C++. Таким образом, класс string подразумевает объектно-ориентированный подход к обработке строк. Объявляя символьный массив, предназначенный для хранения строки с завершающим нулем, необходимо учитывать признак ее завершения и задавать длину массива на единицу больше длины самой большой строки из тех, которые предполагается хранить в этом массиве. Например, при объявлении массива str, в который предполагается поместить 10-символьную строку, следует использовать следующую инструкцию: char st r [ 11] ; Заданный здесь размер (11) позволяет зарезервировать место для нулевого символа в конце строки. C++ позволяет определять строковые литералы. Строковый литерал — это список символов, заключенный в двойные кавычки. Например: “Привет” “Мне нравится C++” “Mars” “”. Строка, приведенная последней (” “), называется нулевой. Она состоит только из одного нулевого символа (признака завершения строки).
Оператор “>>” прекращает считывание строки, как только встречает символ пробела, табуляции или новой строки. Если в программе необходимо считать строку с клавиатуры, вызовите функцию gets (), а в качестве аргумента передайте имя массива, не указывая индекса. После выполнения этой функции заданный массив будет содержать текст, введенный с клавиатуры. Функция gets () считывает вводимые пользователем символы до тех пор, пока он не нажмет клавишу <Enter>. Для вызова функции gets () в программу необходимо включить заголовок <cstdio>.
Например:
# include <iostream>
# include <cstdio>
using namespace std;
int main()
char str[80] ;
cout <<“Введите строку: “;
gets(str);
cout <<“Вот ваша строка: “;
cout <<st r ;
return 0;
}
Язык C++ поддерживает функции обработки строк. Например: strcpy(), strcat(), strlen(), strcmp(). Для вызова всех этих функций в программу необходимо включить заголовок <cstring>.
В языке C++ для удобной работы со строками есть класс string, для использования которого необходимо подключить заголовочный файл string.
Строки можно объявлять и одновременно присваивать им значения:
string S1, S2 = “Hello”;
К отдельным символам строки можно обращаться по индексу, как к элементам массива или C-строк. Например S[0]- это первый символ строки. Для того, чтобы узнать
длину строки можно использовать метод size() строки. Например, последний символ строки S это S[S.size() – 1].
Строки можно создавать с использованием следующих конструкторов: string() – конструктор по умолчанию (без параметров) создает пустую строку. string(string & S) – копия строки S string(size_t n, char c) – повторение символа c заданное число n раз. string(size_t c) – строка из одного символа c. string(string & S, size_t start, size_t len) – строка, содержащая не более, чем len символов данной строки S, начиная с символа номер start.
Вывод строки: cout << S;
Считывание строки: cin >> S;
В этом случае считывается строка, пропуская пробелы и концы строк. Это удобно для того, чтобы разбивать текст на слова, или чтобы читать данные до конца файла при помощи. Можно считывать строки до появления символа конца строки при помощи функции getline. Сам символ конца строки считывается из входного потока, но к строке не добавляется: getline(cin S);
Метод size() возращает длину строки. Метод length(), который также возвращает длину строки. Метод resize(n) изменяет длину строки, новая длина строки становится равна n. Метод clear() – очищает строку. Метод empty() – возвращает true, если строка пуста, false – если непуста. Push_back(c) добавляет в конец строки символ c, вызывается с одним параметром типа char. Append() добавляет в конец строки несколько символов, другую строку или фрагмент другой строки. Имеет много способов вызова. Erase(pos) – удаляет из строки S с символа с индексом pos и до конца строки. Insert() вставляет в середину строки несколько символов, другую строку или фрагмент другой строки. Substr() возвращает подстроку данной строки начиная с символа с индексом pos и до конца строки. Find() ищет в данной строке первое вхождение другой строки str. Возвращается номер первого символа, начиная с которого далее идет подстрока, равная строке str. Если эта строка не найдена, то -1.
Порядок выполнения работы
1. Изучить краткие теоретические сведения;
2. Выполнить задание1 и задание 2, на языке С++;
3. Отладить программу;
4. Оформить отчет (тема, цель работы, листинг программы, по каждому заданию привести по 3 контрольных примера).
Варианты заданий
Задание 1.
1. Дана строка. Подсчитать количество содержащихся в ней цифр.
2. Дана строка. Подсчитать количество содержащихся в ней прописных латинских букв.
3. Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв.
4. Дана строка. Преобразовать в ней все прописные латинские буквы в строчные.
5. Дана строка. Преобразовать в ней все строчные буквы (как латинские, так и русские) в прописные.
6. Дана строка. Преобразовать в ней все строчные буквы (как латинские, так и русские) в прописные, а прописные — в строчные.
7. Дана строка. Если она представляет собой запись целого числа, то вывести 1, если вещественного (с дробной частью) — вывести 2; если строку нельзя преобразовать в число, то вывести 0. Считать, что дробная часть вещественного числа отделяется от его целой части десятичной точкой «.».
8. Дано целое положительное число. Вывести символы, изображающие цифры этого числа (в порядке слева направо).
9. Дано целое положительное число. Вывести символы, изображающие цифры этого числа (в порядке справа налево).
10. Дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа.
Задание 2.
1. Дано целое число N (> 0) и строка S. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы «.» (точка).
2. Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из этих строк новую строку, содержащую первые N1 символов строки S1 и последние N2 символов строки S2 (в указанном порядке).
3. Дан символ C и строка S. Удвоить каждое вхождение символа C в строку S.
4. Дан символ C и строки S, S0. Перед каждым вхождением символа C в строку S вставить строку S0.
5. Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0.
6. Даны строки S и S0. Проверить, содержится ли строка S0 в строке S. Если содержится, то вывести True, если не содержится, то вывести False.
7. Даны строки S и S0. Найти количество вхождений строки S0 в строку S.
8. Даны строки S и S0. Удалить из строки S первую подстроку, совпадающую с S0. Если совпадающих подстрок нет, то вывести строку S без изменений.
9. Даны строки S и S0. Удалить из строки S последнюю подстроку, совпадающую с S0. Если совпадающих подстрок нет, то вывести строку S без изменений.
10. Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0. Если совпадающих подстрок нет, то вывести строку S без изменений.
Может быть интересно
Здравствуйте. Скажите пожалуйста, планирую поступать в магистратуру на факультет Психологии « Психология личности»в РГГУ скажите пожалуйста, есть ли у вас, ответы на вступительные экзамены? так как, планирую, сделать акцент на бюджет. Спасибо.
Арсений, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Дистанционная помощь в защите ВКР
Анастасия, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте. Нужна срочно практическая часть вкр, третья глава. Скину похожие работы, на которые можно ориентироваться
Александр, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
вкр по теме: экологический туризм России : анализ состояния, проблемы и перспективы
Людмила, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте вы защищаете ВКР?
Ольга, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать магистерскую ВКР на тему «Совершенствование логистических бизнес-процессов на примере торговой компании». Не менее 100 страниц.
Миша, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте нужна работа Вкр
Лена, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать ВКР 3 раздела Тема строительство строительство жилого дома с применением каркасно-монолитных технологий Антиплагиат от 75% ПЗ и чертежи
Владимир, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.