
Лабораторный практикум
.pdfПорядок выполнения работы
1.Разработать и выполнить программу в соответствии с вариантом задания.
2.Результаты выполнения программы занести в отчет по работе.
3.Показать результаты работы преподавателю.
Требования к отчету
Отчет должен содержать:
1)наименование лабораторной работы;
2)формулировку задания;
3)текст программы для варианта задания;
4)результат выполнения программы (скриншот).
153
Варианты заданий
Написать программу из блока заданий № 1 (базовый уровень) или № 2 (повышенный уровень) в соответствии с номером варианта. Номер варианта задания соответствует номеру компьютера в компьютерном классе, на котором выполняется лабораторная работа
|
Блок № 1 |
|
|
№ |
Задание |
п\п |
|
1 |
Дана строка символов, разделенных пробелами. Сформируйте |
|
новую строку, вставив перед каждым вхождением слово «and» |
|
запятую |
2 |
Введите строку символов. Определите, является ли данная стро- |
|
ка симметричной |
3 |
Введите строку символов, разделенных пробелами. Подсчитайте |
|
количество слов, у которых первая буква встречается более од- |
|
ного раза |
4 |
Дана строка слов. Сформируйте новую строку, удалив пробелы, |
|
с которых может начинаться строка, а каждую внутреннюю |
|
группу пробелов замените одним пробелом |
5 |
Введите строку, состоящую из слов, разделенных пробелами. |
|
Подсчитайте количество слов в данной строке |
6 |
Дана строка слов, разделенных пробелами. Определите количе- |
|
ство слов, которые встречаются более одного раза |
7 |
Дана строка, состоящая из слов, разделенных пробелами. Выве- |
|
дите в алфавитном порядке слова данной строки |
8 |
Введите строку символов. Подсчитайте и выведите на экран ко- |
|
личество гласных букв, встречающихся в данной строке |
9 |
Дана строка символов, разделенных пробелами. Подсчитайте |
|
количество слов, у которых первая и последняя буквы совпада- |
|
ют |
10 |
Дана строка символов, разделенных пробелами. Определите ко- |
|
личество слов, начинающихся с первой буквы алфавита (русско- |
|
го или латинского) |
154 |
|
|
Продолжение |
|
|
№ |
Задание |
п/п |
|
11 |
Дана строка символов и некоторый символ n. Сформируйте новую |
|
строку, вставив после каждого вхождения символа n пробел |
12 |
Дана строка символов, разделенных пробелами. Найдите самое |
|
длинное слово в строке |
13 |
Дана строка символов, разделенных точкой и запятой. Замените |
|
все строчные символы, стоящие перед точкой, заглавными симво- |
|
лами |
14 |
Введите строку символов а. Замените все подстроки b строки а на |
|
подстроку c |
15 |
Введите строку символов, разделенных пробелами. Найдите самое |
|
короткое слово строки и выведите его на экран |
16 |
Дана строка слов, разделенных пробелами. Сформируйте новую |
|
строку, вставив перед каждым вхождением слова «no» запятую |
17 |
Дана строка символов, разделенных пробелами. Выведите на эк- |
|
ран пять наиболее часто встречающихся символов строки |
18 |
Дана строка символов, разделенных пробелами. Выведите на эк- |
|
ран слова-перевертыши данной строки |
19 |
Дана строка символов. Сформируйте новую строку, начинающую- |
|
ся с символа a (вводится с клавиатуры) и заканчивающуюся сим- |
|
волом b (вводится с клавиатуры), из символов исходной строки |
20 |
Дана строка символов. Сформируйте новую строку, в которой пе- |
|
ред каждым вхождением подстроки b исходной строки вставьте |
|
символ * |
21 |
Дана строка символов. Сформируйте новую строку, переписав ис- |
|
ходную в обратном порядке |
22 |
Дана строка символов, разделенных пробелами, знаками препина- |
|
ния и арифметических операций. Подсчитайте количество знаков |
|
препинания, встречающихся в строке, и выведите на экран их ко- |
|
личество в порядке убывания |
23 |
Дана строка символов, представляющая собой арифметическое |
|
выражение. Вычислите значение данного арифметического выра- |
|
жения |
24 |
Дана строка символов и некоторый символ n. Сформируйте новую |
|
строку, вставив после каждого вхождения символа n пробел |
|
155 |

Окончание
№ |
Задание |
п/п |
|
25Введите строку символов. Подсчитайте и выведите на экран количество согласных букв, встречающихся в данной строке
|
Блок № 2 |
|
|
№ |
Задание |
п/п |
|
1, 14 |
Дана строка слов, разделенных пробелами. Сформируйте но- |
|
вую строку, вставив перед каждым вхождением слова «and» |
|
запятую. Определите, сколько в строке симметричных слов |
2, 15 |
Дана строка слов, разделенных пробелами. Сформируйте но- |
|
вую строку, вставив перед каждым вхождением слова «no» за- |
|
пятую. Подсчитайте количество подстрок между запятыми. |
|
Определите, сколько слов в строке, у которой первая буква со- |
|
держится в слове более одного раза |
3, 16 |
Дана строка слов, разделенных пробелами. Определите коли- |
|
чество слов, которые встречаются более одного раза. Сформи- |
|
руйте строку из неповторяющихся слов |
4, 17 |
Дана строка слов, разделенных пробелами. Сформируйте стро- |
|
ку из неповторяющихся слов, расположив их в алфавитном по- |
|
рядке |
5, 18 |
Дана строка слов, разделенных пробелами, запятыми, точками. |
|
Сформируйте новую строку из пяти самых длинных слов. Оп- |
|
ределите количество слов, начинающихся с первой буквы ал- |
|
фавита (русского или латинского) |
6, 19 |
Дана строка символов и некоторый символ n. Сформируйте |
|
новую строку, вставив после каждого вхождения символа n |
|
пробел. Подсчитайте количество различных слов в образовав- |
|
шейся строке |
7, 20 |
Дана строка символов и некоторый символ n. Сформируйте |
|
новую строку, вставив после каждого вхождения символа n |
|
запятую. Определите самое большое слово в строке |
8, 21 |
Дана строка слов, разделенных пробелами и запятыми. Под- |
|
считайте количество подстрок (заключенных между запятыми) |
|
в строке. Определите длину самого короткого слова |
156 |
|
|
Окончание |
|
|
№п/п |
Задание |
|
|
9, 22 |
Дана строка слов, разделенных пробелами и запятыми. Под- |
|
считайте количество слов в строке и сформируйте новую стро- |
|
ку из самых длинных слов подстрок (заключенных между за- |
|
пятыми) |
10, 23 |
Дана строка слов, разделенных пробелами. Сформируйте но- |
|
вую строку, заменив каждую группу внутренних пробелов од- |
|
ним пробелом. Оставьте в строке только первые вхождения |
|
слов. Определите самое короткое слово |
11, 24 |
Дана строка слов, разделенных пробелами, запятыми, точками. |
|
Сформируйте новую строку из трех самых коротких слов. Оп- |
|
ределите количество слов, оканчивающихся последней буквой |
|
алфавита (русского или латинского) |
12,25 |
Дана строка слов. Сформируйте новую строку, вставив перед |
|
каждым из союзов «а» и «но» запятую. Подсчитайте количест- |
|
во подстрок, разделенных запятыми. Сформируйте строку из |
|
слов, с которых начинаются подстроки |
13, 26 |
Дана строка слов. Сформируйте новую строку, вставив перед |
|
каждым из союзов «а» и «но» запятую. Определите самую ко- |
|
роткую подстроку и слово, с которого она начинается |
157
Библиографический список
1.Страуструп Б. Язык программирования C++. Пер. с англ. под ред. Н.Н. Мартынова. - М.: Бином, 2012.
2.Франка П. С++ . Учебный курс Пер. с англ. - 2-е изд. - СПб.:
Питер, 2012.
3.Шилдт Г. С++: Базовый курс. -3-е изд. - М.: Вильямс, 2010.
158
|
|
|
Приложения |
|
1. Таблица приоритетов операций |
||
|
|
|
|
Приоритет |
|
Оператор |
Описание |
1 |
:: |
|
Область видимости |
2 |
++ |
-- |
Суффиксальный/постфиксный инкре- |
|
|
|
мент и декремент |
|
() |
|
Вызов функции |
|
[] |
|
Обращение к массиву по индексу |
|
. |
|
Выбор элемента по ссылке |
|
−> |
|
Выбор элемента по указателю |
3 |
++ |
-- |
Префиксный инкремент и декремент |
|
|
|
|
|
+ |
− |
Унарные плюс и минус |
|
! |
~ |
Логическое НЕ и побитовое НЕ |
|
(type) |
Приведение к типу type |
|
|
* |
|
Indirection (разыменование) |
|
& |
|
Адрес |
|
sizeof |
Размер |
|
|
new, new[] |
Динамическое выделение памяти |
|
|
delete, |
Динамическое освобождение памяти |
|
|
delete[] |
|
|
4 |
.* |
->* |
Указатель на член |
|
|
|
|
5 |
* |
/ % |
Умножение, деление и остаток |
|
|
|
|
6 |
+ |
− |
Сложение и вычитание |
|
|
|
|
7 |
<< |
>> |
Побитовый сдвиг влево и сдвиг вправо |
|
|
|
|
8 |
< |
<= |
Операторы сравнения < и ≤ |
|
> |
>= |
Операторы сравнения > и ≥ |
9 |
== |
!= |
Операторы сравнения = и ≠ |
10 |
& |
|
Побитовое И |
11 |
^ |
|
Побитовый XOR (исключающее ИЛИ) |
12 |
| |
|
Побитовое ИЛИ (inclusive or) |
13 |
&& |
|
Логическое И |
14 |
|| |
|
Логическое ИЛИ |
159
|
|
|
|
Окончание |
Приоритет |
Оператор |
Описание |
||
15 |
?: |
|
|
Тернарное условие |
|
= |
|
|
Прямое присваивание (предоставляемое по |
|
|
|
|
умолчанию для C++ классов) |
|
+= |
−= |
|
Присвоение с суммированием и разностью |
|
|
|
|
|
|
*= |
/= |
%= |
Присвоение с умножением, делением и |
|
|
|
|
остатком от деления |
|
<<= |
>>= |
Присвоение с побитовым сдвигом влево и |
|
|
|
|
|
вправо |
|
&= |
^= |
|= |
Присвоение с побитовыми логическими |
|
|
|
|
операциями (И, XOR, ИЛИ) |
16 |
throw |
|
Throw оператор (выброс исключений) |
|
17 |
, |
|
|
Запятая |
160
2. Библиотечные функции работы со строками
char* strcat(char * string1, char * string2);
Добавляет строку string2 в конец строки string1, записывая в конец строки результата нуль-символ, и возвращает указатель на сцепленную строку (string1).
char* strchr (char* string, int sim);
Возвращает указатель на первое местонахождение символа, имеющего код sim, в строке string. Символ sim может быть нулевым символом (‘\0’), тогда поиск ведется для нулевого символа. Функция возвращает NULL, если символ не найден.
int strcmp (char* string1, char* string2);
Сравнивает строки string1 и string2 лексикографически и возвращает значение:
меньше 0, если string1< string2, равное 0, если string1= string2, больше 0, если string1> string2.
char* strcpy (char* string1, char* string2);
Копирует строку string2, включая нуль-символ, в строку string1 и возвращает значение аргумента string1.
int strсspn (char* string1, char* string2);
Возвращает индекс первого символа в строке string1, который принадлежит набору символов строки string2. Завершающий нуль-символ не учитывается при поиске. Если строка string1 начинается с символа из строки string2, то возвращается значение 0.
int strlen (char* string);
Возвращает длину (в байтах) строки string. Нуль-символ не учитывается.
char* strncat (char* string1, char* string2, int n);
Добавляет первые n символов из строки string2 в строку string1, завершая результирующую строку нуль-символом. Если n больше длины строки string2, то длина строки string2 используется вместо n.
161
int strncmp (char* string1, char* string2, int n);
Сравнивает первые n символов в строках string1 и string2 лексикографически и возвращает результат:
значение < 0, если string1< string2,
=0, если string1= string2,
>0, если string1> string2.
char* strncpy (char* string1, char* string2, int n);
Копирует n символов строки string2 в строку string1. Если значение n меньше, чем длина строки string2, то нуль-символ не добавляется в новую строку. Если значение n больше, чем длина строки string2, то нуль-символ добавляется в конец строки string1.
char* strpbrk (char* string1, char* string2);
Находит первое вхождение в строке string1 любого символа из набора символов, содержащихся в строке string2. Завершающий нульсимвол не включается в поиск. Возвращаемое значение - указатель на первое местоположение любого символа из строки string2 в строку string1 или значение NULL, если нет общих символов.
int strspn (char* string1, char* string2);
Возвращает индекс первого символа строки string1, который не принадлежит набору символов, содержащихся в строке string2. Нульсимвол не рассматривается. Если строка string1 начинается с символа не из набора строки string2 , то функция возвращает значение 0.
char* strstr (char* string1, char* string2);
Возвращает указатель на первое вхождение подстроки, которая содержится в строке string2 в строке string1. Возвращает значение NULL, если вхождение не найдено.
char* strtok (char* string1, char* string2);
Символы из строки string1 группируются в слова строки string2 набор символов-разделителей для строки string1. При первом вызове strtok производит возврат адреса первого символа string1. Для того чтобы найти начало следующего слова в строке string1, необходимо вызвать strtok со значением равным NULL у аргумента string1. Набор разделителей может различаться от вызова к вызову. Возвращаемое значение - указатель на слово в строке. Все слова завершаются нульсимволом.
162