Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
20_STL_14.doc
Скачиваний:
18
Добавлен:
10.04.2019
Размер:
152.58 Кб
Скачать

Сравнение строк

Объекты класса string можно сравнивать, используя перегруженные операции или метод compare(). Равными считаются полностью идентичные строки; меньшей считается та, что стоит раньше в алфавитном порядке.

Пример 20.6. Сравнение строк с помощью перегруженных операций.

#include "stdafx.h"

#include <iostream>

#include <string>

#include <conio.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{ setlocale(LC_ALL,"Russian");

string str1, str2;

cout << "Введите строку str1: ";

cin >> str1;

cout << "Введите строку str2: ";

cin >> str2;

if (str1 == str2) cout << "Строки равны" << endl;

if (str1 != str2) cout << "Строки не равны: ";

if (str1 > str2) cout << "строка str1 больше строки str2" << endl;

if (str1 < str2) cout << "строка str1 меньше строки str2" << endl;

_getch();

return 0;

}

Перегруженные операции сравнения вызывают метод compare() шаблона basic_string, поддерживающий дополнительные параметры, которые можно использовать для сравнения подстрок.

Контрольные вопросы

  1. Из чего состоит ядро библиотеки стандартных шаблонов?

  2. Дайте определения контейнеров, алгоритмов, итераторов, функциональных объектов.

  3. Что представляет собой контейнерный класс?

  4. Перечислите методы, общие для всех контейнеров.

  5. Как осуществляется ввод и вывод строк?

  6. Перечислите:

  • методы поиска подстрок и отдельных символов в строке

  • методы модификации строки.

Варианты заданий

Таблица 20.7

Номер варианта

Задание

1, 15

В векторе целого типа заменить максимальный элемент суммой предыдущих элементов, минимальный – суммой последующих элементов.

2, 16

В конец вектора целого типа дописать четные элементы этого вектора

3, 17

В начало вектора целого типа дописать нечетные элементы этого вектора.

4, 18

В середину вектора целого типа поместить элементы этого вектора, кратные пяти.

5, 19

В начало вектора целого типа дописать его минимальное значение, в середину – максимальное.

6, 20

В начало вектора целого типа записать элементы, являющиеся делителями максимального элемента этого файла.

7, 21

В середину вектора целого типа записать элементы этого файла, меньшие числа, введенного с клавиатуры.

8, 22

Дан вектор с положительными и отрицательными целыми числами. Записать в другой файл сначала отрицательные элементы, а затем положительные.

9, 23

Сформировать динамический список, считая, что длина списка (количество элементов) задана. Описать функцию, которая удаляет из списка за каждым вхождением элемента Е, значение которого введено с клавиатуры, один элемент, если такой есть и он отличен от Е.

10, 24

Сформировать динамический список, считая, что длина списка (количество элементов) задана. Описать функцию, которая формирует список М1 – копию списка М и список М2, представляющий собой ”перевернутый” список М.

11, 25

Сформировать динамический список, считая, что длина списка (количество элементов) задана. Описать функцию, которая включает в упорядоченный по убыванию список новое значение, введенное с клавиатуры, таким образом, чтобы не нарушать упорядоченность.

12, 26

Сформировать динамический список, считая, что длина списка (количество элементов) задана. Описать функцию, которая объединяет два упорядоченных по невозрастанию списка в один упорядоченный по невозрастанию список.

13, 27

Найти сумму элементов вектора целого типа, находящихся между минимальным и максимальным элементами, включая и сами эти числа.

14, 28

Сформировать динамический список, считая, что длина списка (количество элементов) задана. В составе программы описать функцию, которая в списке из каждой группы подряд идущих одинаковых элементов составляет только один..

Таблица 20.8

Номер варианта

Задание

1, 16

Дана строка слов, разделенных пробелами. Сформируйте новую строку, вставив перед каждым вхождением слова "and" запятую. Определите, сколько в строке симметричных слов.

2, 17

Дана строка слов, разделенных пробелами. Сформируйте новую строку, вставив перед каждым вхождением слова "no" запятую. Подсчитайте количество подстрок между запятыми. Определите, сколько слов в строке, у которой первая буква содержится в слове более одного раза.

3, 18

Дана строка слов. Сформируйте новую строку, удалив пробелы, с которых может начинаться строка, а каждую внутреннюю группу пробелов замените одним пробелом. Подсчитайте количество слов в данной строке и количество слов, у которых первая и последняя буквы совпадают.

4, 19

Дана строка слов, разделенных пробелами. Определите количество слов, которые встречаются более одного раза. Сформируйте строку из неповторяющихся слов.

5, 20

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

6, 21

Дана строка слов, разделенных пробелами, запятыми, точками. Сформируйте новую строку из пяти самых длинных слов. Определите количество слов, начинающихся первой буквой алфавита (русского или латинского).

7, 22

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

8, 23

Дана строка символов и некоторый символ n. Сформируйте новую строку, вставив после каждого вхождения символа n запятую. Определите самое большое слово в строке.

9, 24

Дана строка слов, разделенных пробелами и запятыми. Подсчитайте количество подстрок (заключенных между запятыми) в строке. Определите длину самого короткого слова.

10, 25

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

11, 26

Дана строка символов, представляющих собой арифметическое выражение. Порядок операций определен слева направо. Подсчитайте результат данного выражения.

12, 27

Дана строка слов, разделенных пробелами. Сформируйте новую строку, заменив каждую группу внутренних пробелов одним пробелом. Оставьте в строке только первые вхождения слов. Определите самое короткое слово.

13, 28

Дана строка слов, разделенных пробелами, запятыми, точками. Сформируйте новую строку из трех самых коротких слов. Определите количество слов, заканчивающихся последней буквой алфавита (русского или латинского ).

14, 29

Дана строка слов. Сформируйте новую строку, вставив перед каждым из слов "а" и "но" запятую. Подсчитайте количество подстрок, разделенных запятыми. Сформируйте строку из слов, с которых начинаются подстроки.

15, 30

Дана строка слов. Сформируйте новую строку, вставив перед каждым из слов "а" и "но" запятую. Определите самую короткую подстроку и слово, с которого она начинается.

181