Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторный практикум

.pdf
Скачиваний:
62
Добавлен:
15.06.2021
Размер:
3 Mб
Скачать

Порядок выполнения работы

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