Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Si_2sem.doc
Скачиваний:
61
Добавлен:
20.03.2015
Размер:
677.89 Кб
Скачать

Работа 3. Символьный и строковый типы данных

Цель работы:

– изучить приемы работы с символьными и строковыми типами данных;

– изучить подпрограммы для работы с символьными и строковыми данными;

– освоить приёмы работы с перечисляемым типом данных.

  1. Теоретический раздел

1.1. Символьный тип данных

Любой текст состоит из символов. Для хранения одного символа предназначен тип данных char. Переменную типа char можно рассматривать двояко: как целое число, занимающее 1 байт и способное принимать значения от 0 до 255 (тип unsigned char) или от -128 до 127 (тип signed char) и как один текстовый символ. Сам же тип char может оказаться как знаковым, так и беззнаковым, в зависимости от операционной системы и компилятора. Поэтому использовать тип char не рекомендуется, лучше явно указывать будет ли он знаковым (signed) или беззнаковым (unsigned).

Как и целые числа, данные типа char можно складывать, вычитать, умножать, делить, а можно выводить на экран в виде одного символа. Именно это и происходит при выводе символа через объект cout. Если же нужно вывести числовое значение символа (также называемый ASCII-кодом), то значение символа необходимо преобразовать к типу int. Например:

#include<iostream>

using namespace std;

int main()

{

unsigned char c='A'; // Константы char заключаются в одинарные кавычки

cout<<c<<" "<<(int)c<<endl;

c=126; // char можно присвоить и числовое значение

cout<<c<<" "<<(int)c<<endl;

return 0;

}

В этом примере переменной с типа char присваивается значение, равное символу 'A' (константы типа char записываются как символы в одинарных кавычках), затем на экран выводится значение c, как символа и его ASCII-код, потом переменной c присваивается значение 126 (то есть символ с ASCII-кодом 126) и снова выводится на экран символ и его ASCII-код.

Организовать последовательное посимвольное считывание всего входного потока можно при помощи цикла while:

#include<iostream>

using namespace std;

int main()

{

unsigned char c;

while(cin>>c) // Цикл пока считывание успешно

{ // Делаем необходимые действия

}

return 0;

}

В этом примере программа будет посимвольно считывать входной поток (по умолчанию — ввод с клавиатуры), пока не встретит признак конца файла. Для того, чтобы сообщить программе о завершении файла при вводе с клавиатуры необходимо нажать клавиши Ctrl-d в системе Linux и Ctrl-z в системе Windows.

Эта программа при считывании данных будет игнорировать символы–разделители: пробелы, символы новой строки и табуляции. Если нужно, чтобы в переменную c считывались все символы, в том числе и разделители, то необходимо для потока ввода cin установить манипулятор noskipws при помощи инструкции cin>>noskipws;.

    1. Строковый тип данных

Строка представляет собой массив значений типа char, завершающийся нулевым байтом. Каждый символ в строке — это на самом деле целое битовое значение кода ASCII, соответствующее отображаемому символу или операции, например возврату каретки или переводу строки.

Однако массивы типа char - символьные массивы - занимают в языке особое место. Во многих языках есть специальный тип данных - строка символов (string). В языке С отдельного типа строки символов нет, а реализована работа со строками путем использования одномерных массивов типа char.

В языке С символьная строка - это одномерный массив типа char, заканчивающийся нулевым байтом. Нулевой байт - это байт, каждый бит которого равен нулю. Для нулевого байта определена специальная символьная константа '\0'. Это следует учитывать при описании соответствующего массива символов. Так, если строка должна содержать N символов, то в описании массива следует указать N+1 элемент.

Например, описание char str[11] предполагает, что строка содержит 10 символов, а последний байт зарезервирован под нулевой байт. Конечно, был задан обычный одномерный массив, но если трактовать его как строку символов, то это будет строка максимум из 10 элементов.

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

"Borland СИ", "Это строковая константа".

Есть два простых способа ввести строку с клавиатуры. Первый способ -воспользоваться функцией scanfO со спецификатором ввода %s. Надо помнить, что функция scanf() вводит символы до первого пробельного символа. Второй способ - воспользоваться специальной библиотечной функцией gets(), объявленной в файле stdio.h. Функция gets() позволяет вводить строки, содержащие пробелы. Ввод оканчивается нажатием клавиши Enter. Обе функции автоматически ставят в конец строки нулевой байт. Не забудьте зарезервировать для него место. В качестве параметра в этих функциях используется просто имя массива.

Вывод строк производится функциями printfO или puts(). Обе функции выводят содержание массива до первого нулевого байта. Функция puts() добавляет в конце выводимой строки символ новой строки. В функции printf() переход на новую строку надо предусматривать в строке формата самим.

Для работы со строками в С имеется богатая библиотека строковых функций (все они начинаются с букв str) string.h. Рассмотрим основные из них.

Функция strlen(s) возвращает длину строки, выраженную в символах.

Функции копирования:

  • char *strcpy (char* s1, const char* s2) строку s2 копирует в s1;

  • char *strncpy (char* s1,const char* s2, size_t count) копирует не более count символов из строки s2 в s1;

  • char *strdup (const char *s) выделяет память для хранения копии строки, на которую указывает s, копирует эту строку в выделенную область и возвращает указатель на неё.

Функции соединения строк:

  • char *strcat (char* s1, const char* s2) строку s2 присоединяет к строке s1;

  • char *strncat (char* s1, const char* s2, size_t count) не более count символов из строки s2 присоединяет к строке s1.

Функции поиска:

  • char * strchr ( const char* s, char c) находит первое вхождение символа с в строку s. Возвращает указатель на найденный символ или NULL, если символ не обнаружен;

  • char * strrchr ( const char* s, char c) находит последнее вхождение символа с в строку s. Возвращает указатель на найденный символ или NULL, если символ не обнаружен;

  • char * strstr ( const char* s, const char* substr) ищет в s первое вхождение подстроки substr. Возвращает указатель на первый символ найденной подстроки или NULL, если такая подстрока не найдена;

  • char *strpbrk ( const char *s1, const char *s2) — возвращает указатель на первый символ в строке s1, совпадающий с каким-нибудь из символов строки s2. При этом нулевые символы в конце строки в рассмотрение не включаются;

  • char * strtok ( const char* s1, const char* s2) возвращает указатель на следующую лексему (часть строки) в строке s1. Символы строки s2 используются как ограничители, определяющие лексему. Как и в других функциях поиска, если лексема не найдена, возвращается NULL.

Функции преобразования строк:

  • char * strupr ( char* s) английские буквы нижнего регистра (“маленькие”) строки, на которую указывает s, преобразует в соответствующие буквы верхнего регистра (в “большие”). Остальные символы не меняются;

  • char * strlwr ( char* s) английские буквы верхнего регистра (прописные) строки, на которую указывает s, преобразует в соответствующие буквы ниж-него регистра (в “маленькие”). Остальные символы не меняются.

    1. Перечисляемый тип данных

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

enum имя_типа (список_названий) список переменных:

Список переменных может быть пустым. Пример определения перечислимого типа и переменной данного типа:

enum seasons { win, spr, sum, aut };

enum seasons s;

Ключом к пониманию сущности перечислимого типа является то, что каждое из имен win, spr, sum и aut представляет собой целую величину. Если эти величины не определены по-другому, то по умолчанию они соответственно равны нулю, единице, двум и трем. Оператор

printf ("%d %d", win, aut);

выдаст на экран числа 0 и 3. Во время объявления типа можно одному или нескольким символам присвоить другие значения, например:

enum value {one=l, two, three, ten=10, thousand=1000, next};

Если теперь напечатать значения

prinlf ("%d %d %d %d %d\n", one, two, ten, thouthend, next);

то на экране появятся числа 1 2 10 1000 1001, т. е. каждый следующий символ увеличивается на единицу по сравнению с предыдущим, если нет другого присваивания.

С переменными перечислимого типа можно производить следующие операции:

  • присвоить переменную типа enum другой переменной того же типа;

  • провести сравнение с целью выяснения равенства или неравенства;

  • арифметические операции с константами типа enum (i = win - aut).

Нельзя использовать арифметические операции и операции ++ и -- к переменных типа enum.

Основная причина использования перечислимого тина - это улучшение читаемости программ.

  1. Экспериментальный раздел.

Пример 1. Вывод алфавита на экран.

#include <iostream.h>

void main(void)

{

char alphabet [34]; // 33 буквы плюс NULL char letter;

int index;

for (letter = 'A', index = 0; letter <= 'Я'; letter++, index++) alphabet[index] = letter;

alphabet[index] = NULL;

cout << "Буквы " << alphabet;

}

Пример 2. Переворот строки.

void swap(char c[])

{ int i,j;

for (i=0; c[i] !='\0'; i++);

for (j=0,i--; i>j; i--,j++)

{ char s; s=c[i]; c[i]=c[j]; c[j]=s; }

}

Пример 3. Преобразование целого char[] в int

int StringToInt(char c[ ]){

int n,i;

for (i=0; !(c[i]>='0' && c[i]<='9'); i++)

if (c[i]=='\0') return 0;

for (n=0; c[i]>='0' && c[i]<='9'; i++)

n = n * 10 + c[i] - '0';

return n;

}

Поэкспериментируйте с предложенным примером и составьте функцию IntToString, реализующую преобразование целого int в char[].

Пример 4. Поиск самой внутренней скобки.

int find(char c[]){

int i, k, max, b;

for (i=0, max=0, b=-1; c[i]!=0; i++){

if (c[i]== '}' ) k--;

if (c[i]== '{' ) {

k++;

if (k>max) { max=k; b=i; }}

}

if (k!=0) return 0;

return b; }

  1. Задания для самостоятельной работы.

А.

1. Составить программу:

  1. которая запрашивает имя человека и повторяет его на экране;

  2. которая запрашивает имя человека и повторяет его на экране с приветствием;

  3. которая запрашивает название футбольной команды и повторяет его на экране со словами: "Это чемпион!".

2. Дано название футбольного клуба. Определить количество символов в нем.

3. Дано название города. Определить, четно или нет количество символов в нем.

4. Даны две фамилии. Определить, какая из них длиннее.

5. Дано слово.

  1. Вывести на экран его третий символ.

  2. Вывести на экран его последний символ.

  3. Вывести на экран его k символ.

  4. Определить, одинаковы ли второй и четвертый символы в нем.

  5. Верно ли, что оно начинается и окан­чивается на одну и ту же букву?

  6. Получить и вывести на экран буквосочетание, состоящее из его второго и четвертого сим­волов.

  7. Получить и вывести на экран буквосочетание, состоящее из его третьего и последнего сим­волов.

  8. Получить его часть, образованную второй, третьей и четвертой буквами.

  9. Получить его часть, образованную идущими подряд буквами, начиная с т-й и кончая n-й.

6. Даны два слова. Верно ли, что первое слово начинается на ту же букву, которой оканчивается вто­рое слово?

7. Составить программу, которая запрашивает отдельно имя и отдельно фамилию, а затем выводит их как одну символьную строку.

8. Из слова "яблоко" путем вырезок его букв по­лучить слова "блок" и "око”.

9. Из слова "информатика" путем вырезок его букв получить слова "форма" и "тик".

10. Из слова "вертикаль" путем вырезок и склеек его букв получить слова "тир" и "ветка".

11. Из слова "программа" путем вырезок и склеек его букв получить слова "ром" и "рампа".

12. Из слова "трос" путем вырезок и склеек его букв получить слова "сорт", "рост" и "торс".

13. Из слова "клоун" путем вырезок и склеек его букв получить слова "уклон", "кулон" и "колун".

14. Из слова "апельсин" путем вырезок и склеек его букв получить слово "спаниель".

15. Из слова "вирус" путем замены его букв полу­чить слово "фокус".

16. Из слова "курсор" путем замены его букв получить слово "танцор".

17. Из слова "пробел" путем замены его букв по­лучить слово "продел".

18. Из слова "строка" путем замены его букв получить слово "строфа".

19. Из слова "муха" путем замены его букв полу­чить слово "слон".

20. Из слова "тетрадь" путем замены его букв получить слово "дневник".

21. Дано название футбольного клуба. Напечатать его на экран столбиком.

22. Получить строку, состоящую из пяти звездо­чек, т.е. символов "*".

23. Получить строку, состоящую из восьми симво­лов "_".

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

25. Дано слово. Добавить к нему в начале 4 симво­ла "+" и в конце 5 символов "—".

26. Дано предложение. Напечатать все его буквы "и".

27. Дано предложение. Составить программу, ко­торая печатает столбиком все вхождения в предложе­ние некоторого символа.

28. Дано слово из четного числа букв. Поменять местами его половины. Задачу решить двумя способами: без использования оператора цикла; с использованием оператора цикла.

29. Составить программу, которая печатает задан­ное слово, начиная с последней буквы.

30. Дано предложение. Вывести столбиков все его символы.

В.

1. Дано слово из 12 букв. Поменять местами его трети следующим образом:

  1. первую треть слова разместить на месте третьей, вторую треть — на месте первой, третью треть — на месте второй;

  2. первую треть слова разместить на месте второй, вторую треть — на месте третьей, третью треть — на месте первой.

2. Дано слово. Переставить первые три и послед­ние три буквы, сохранив порядок их следования. Зада­чу решить двумя способами: без использования оператора цикла; с использованием оператора цикла.

3. Дано слово. Перенести первые k его букв в конец.

4. Дано слово s1. Получить слово s2, образован­ное нечетными буквами слова s1.

5. Дано слово s. Получить слово t, получаемое пу­тем прочтения слова s, начиная с его конца.

6. Дано слово. Добавить к нему в начале и в кон­це столько звездочек, сколько букв в этом слове.

7. Дано предложение.

  1. Вывести столбиком его тре­тий, шестой и т.д. символы.

  2. Вывести все буквы "м" и "н" в нем.

  3. Составить программу, ко­торая выводит все вхождения в предложение двух за­данных символов.

  4. Вывести все имеющиеся в нем буквосочетания "нн".

  5. Вывести столбиком все его буквы "и", стоящие на четных местах.

  6. Вывести столбиком его пер­вый, второй, пятый, шестой, девятый, десятый и т.д. символы.

  7. Определить число букв "о" в нем.

  8. Определить число пробе­лов в нем.

  9. Определить число вхожде­ний в него некоторого символа.

  10. Определить долю (в %) букв "а" в нем.

8. Дано предложение. Определить:

  1. число вхождений в него буквосочетания "ро";

  2. число вхождений в него некоторого буквосочета­ния из двух букв;

  3. число вхождений в него некоторого буквосочетания.

9. Дан текст. Подсчитать общее число вхождений в него символов "+" и "—".

10. Дана фраза. Определить, сколько в ней предло­жений.

11. Дано предложение.

  1. Определить, сколько в нем гласных букв.

  2. Все буквы "е" в нем заме­нить на букву "и".

  3. Все пробелы в нем заменить на символ "_".

  4. Все его символы, стоящие на четных местах, заменить на букву "ы".

  5. Все его символы, стоящие на третьем, шестом, девятом и т.д. местах, заменить на букву "А".

  6. Заменить в нем все вхож­дения буквосочетания "ах" на "ух".

  7. Заменить в нем все вхож­дения буквосочетания "да" на "не".

  8. Заменить в нем все вхож­дения буквосочетания "про" на "нет”.

  9. Заменить в нем все вхож­дения буквосочетания "бит" на "рог".

  10. Заменить в нем все вхож­дения подстроки Strl на подстроку Str2.

12. Дан символ. Выяснить, является ли он цифрой.

13. Дан текст. Напечатать все имеющиеся в нем цифры. Определить количество цифр в нем.

14. Дан текст. Определить, является ли он пра­вильной десятичной записью целого числа.

15. Дано предложение. Определить, каких букв в нем больше: "м" или "н".

16. Дано предложение. В нем слова разделены одним пробелом (символ " — " в предложении отсутствует). Вер­но ли, что число слов в предложении больше трех.

17. Дано предложение, в котором имеются буквы "с" и "т". Определить, какая из них встречается позже (при просмотре слова слева направо). Если таких букв несколько, то должны учитываться последние из них. Оператор цикла с условием не использовать.

18. Дан текст. Верно ли, что в нем есть пять иду­щих подряд одинаковых символов?

19. Дано предложение. Напечатать все его симво­лы, предшествующие первой запятой. Рассмотреть два случая: известно, что в предложении запятые имеются; в предложении запятых может не быть.

20. Дано предложение, в котором имеется несколь­ко букв "е". Найти:

  1. порядковый номер первой из них;

  2. порядковый номер последней из них.

21. Дано предложение. Определить, есть ли в нем буква "а". В случае положительного ответа найти так­же порядковый номер первой из них.

22. Дано слово. Проверить, является ли оно пере­вертышем (перевертышем называется слово, читаемое одинаково как с начала, так и с конца).

23. Дан текст. Определить количество букв "и" в первом предложении. Рассмотреть два случая:

  1. известно, что буквы "и" в этом предложении есть;

  2. букв "и" в тексте может не быть.

24. Дано предложение, в котором нет символа "—". Определить количество букв "о" в первом слове. Учесть, что в начале предложения могут быть пробелы.

25. Дано предложение. Определить количество букв "н", предшествующих первой запятой предложе­ния. Рассмотреть два случая:

  1. известно, что запятые в предложении есть;

  2. запятых в предложении может не быть.

26. Дана последовательность слов. Проверить, правильно ли в ней записаны сочетания "жи" и "ши". Проверить, правильно ли в ней записаны сочетания "ча" и "ща". Исправить ошибки.

27. Дано предложение. Напечатать все символы, расположенные между первой и второй запятой. Если второй запятой нет, то должны быть напечатаны все символы, расположенные после единственной имею­щейся запятой.

28. Дано предложение, в котором имеются одна буква "с" и одна буква "т". Определить, какая из них встречается раньше (при просмотре слова слева направо).

29. Символьной строке по ошибке вместо "опе­чатка" присвоено значение "очепатка". Изменить зна­чение s так, чтобы ошибки не было.

30. Дано слово. Поменять местами его m-ю и п-ю буквы. Поменять местами первую из букв "а" и последнюю из букв "о". Учесть возможность того, что таких букв в слове может не быть.

31. Дано слово из четного числа букв. Поменять местами первую букву со второй, третью — с четвер­той и т.д. Поменять местами его половины следующим способом: первую букву поменять с последней, вторую — с предпослед­ней и т.д.

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

33. Дано слово из 15 букв. Переставить в обрат­ном порядке буквы, расположенные между k-й и s-й буквами (т.е. с (k + 1)-й по (s -1)-ю). Значения k и s вводятся с клавиатуры, k < s.

34. Устранить имеющуюся в заданном слове ошибку:

а) дано слово "глинянный";

б) дано слово "граффика".

35. Дано слово:

  1. Удалить из него третью букву;

  2. Удалить из него k-ю букву.

  3. Удалить из него первую из букв “о”, если такая буква есть;

  4. Удалить из него последнюю из букв "т", если такая буква есть.

  5. Если его длина нечетная, то уда­лить среднюю букву, в противном случае — две сред­них буквы.

  6. Удалить из него все повторяющиеся буквы, оставив их первые вхождения, то есть в сло­ве должны остаться только различные буквы.

36. Дано слово, оканчивающееся символом "_". Вставить заданную букву после первой буквы "и".

37. Дано предложение, оканчивающееся симво­лом “__". Вставить заданную букву перед последней бук­вой “и”.

38. Путем вставок и удаления символов испра­вить ошибки:

  1. в слове "прроцесор";

  2. во фразе "текстовыйфайл";

  3. во фразе "програма и аллгоритм";

  4. во фразе "процесор и паммять".

39. Дано ошибочно написанное слово "рпроцессo". Путем перемещения его букв получить слово "процессор". Аналогично для слов:

  1. "иинформаця" - "информация";

  2. "алигортм" - "алго­ритм";

  3. "роцессорп” - "процессор".

  4. "ИТЕРНЕТН" - "ИНТЕРНЕТ".

  5. "килбайот" - "ки­лобайт".

С.

1. Дано предложение. В нем слова разделены од­ним пробелом (начальные и конечные пробелы и сим­вол "—" в предложении отсутствуют). Определить ко­личество слов в предложении.

2. Дано предложение. В нем слова разделены од­ним или несколькими пробелами (символ "—" в пред­ложении отсутствует). Определить количество слов в предложении. Рассмотреть два случая:

  1. начальные и конечные пробелы в предложении отсутствуют;

  2. начальные и конечные пробелы в предложении имеются.

3. Дано предложение. Найти наибольшее количе­ство идущих подряд пробелов.

4. Дан текст. Найти наибольшее количество иду­щих подряд одинаковых символов.

5. Дан текст, в котором имеются цифры.

  1. Найти их сумму.

  2. Найти максимальную цифру.

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

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

8. Дан текст, имеющий вид: d1+d2+…+dn, где di — цифры (n > 1). Вычислить записанную в тексте сумму.

9. Дан текст, имеющий вид: d1–d2+d3–…, где di — цифры (n > 1). Вычислить записанную в тексте алгебраическую сумму.

10. Дан текст, имеющий вид: d1 ± d2 ±...± dn, где di цифры (n > 1). Вычислить записанную в тексте алгебраическую сумму.

11. Дан текст. Найти наибольшее количество иду­щих подряд цифр.

  1. Найти сумму всех имеющихся в нем чисел.

  2. Найти максимальное из имеющих­ся в нем чисел.

12. Дан текст, в котором имеется несколько иду­щих подряд цифр. Получить число, образованное этими цифрами.

13. Дана последовательность символов, в начале ко­торой имеется некоторое количество одинаковых симво­лов. Определить это количество. Рассмотреть два случая:

  1. известно, что не все символы последовательности одинаковые;

  2. все символы последовательности могут быть оди­наковыми.

14. Даны два слова. Определить, сколько началь­ных букв первого слова совпадает с начальными бук­вами второго слова. Рассмотреть два случая:

  1. известно, что слова разные;

  2. слова могут быть одинаковыми.

15. Дано предложение. Определить порядковые номера первой пары одинаковых "соседних" симво­лов. Если таких символов нет, то должно быть напеча­тано соответствующее сообщение. Определить, есть ли в нем сочетания "чу" или "щу". В случае положительного ответа найти также порядковый номер первой буквы первого из них.

16. Дано предложение.

  1. Удалить из него все символы с nl-го по n2-й (n1 < n2).

  2. Удалить из него все бук­вы "с".

  3. Удалить из него все буквы "о", стоящие на нечетных местах.

17. Проверить, является ли некоторая сим­вольная строка перевертышем после удаления из нее всех пробелов Последние символы "__", полученные после удаления пробелов, не учитывать.

18. Дано слово.

  1. Переставить его s-ю букву на место k (s < k). При этом (s + 1)-ю, (s+ 2)-ю, . ., k-ю буквы сдвинуть влево на одну позицию.

  2. Переставить его первую букву на место последней. При этом вторую, третью, ..., послед­нюю буквы сдвинуть влево на одну позицию.

  3. Переставить его первую букву на место k-й. При этом вторую, третью, ..., k-ю буквы сдвинуть влево на одну позицию.

  4. Переставить его последнюю бук­ву на место первой. При этом первую, вторую, ... , пред­последнюю буквы сдвинуть вправо на одну позицию.

  5. Переставить его последнюю бук­ву на место k-й. При этом k-ю, (k + 1)-ю, . ., предпоследнюю буквы сдвинуть вправо на одну позицию.

  6. Определить, сколько различных букв в нем.

19. В слове имеются только две одинаковых бук­вы. Найти их.

20. Даны два слова.

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

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

  3. Напечатать только те буквы слов, которые есть только в одном из них (в том чис­ле повторяющиеся). Например, если заданные слова "процессор" и "информация", то ответом должно быть:

  4. "п е с с и ф м а и я".

  5. Напечатать только те буквы слов, которые встречаются в обоих словах только один раз. Например, если заданные слова "процессор" и "информация", то ответом должно быть: "п е ф м л я".

  6. Определить, можно ли из букв первого из них получить второе. Рассмотреть два варианта:

    1. повторяющиеся буквы второго слова могут в пер­вом слове не повторяться;

    2. каждая буква второго слова должна входить в первое слово столько же раз, сколько и во второе.

21. Даны три слова.

  1. Напечатать их общие бук­вы. Повторяющиеся буквы каждого слова не рассмат­ривать.

  2. Напечатать только те буквы слов, которые есть только в одном из слов. Рассмотреть два варианта: повторяющиеся буквы каждого слова рассматри­ваются; не рассмат­риваются.

  3. Напечатать неповторяющие­ся в них буквы.

22. Дано предложение из 10 слов. Заполнить ими массив из 10 элементов.

23. Дано предложение.

  1. Напечатать его в обратном порядке слов, например, предложение "мама мыла раму" должно быть напечатано в виде "раму мыла мама".

  2. Поменять местами его первое и последнее слова.

  3. Напечатать все его слова, отличные от слова "привет".

  4. Определить: количество слов, начинающихся с буквы "н"; количество слов, оканчивающихся буквой "т".

  5. Вывести на экран: его слова, начинающиеся и оканчивающиеся на одну и ту же букву; его слова, которые содержат ровно три буквы "е"; его слова, которые содержат хотя бы одну букву "о".

  6. Найти какое-нибудь его слово, начинающееся на букву "к".

  7. Найти длину его самого короткого слова.

  8. Напечатать его самое длин­ное слово (принять, что такое слово — единственное).

  9. Верно ли, что его самое длинное слово имеет больше 10 символов?

  10. Напечатать все его слова в порядке неубывания их длин.

  11. Напечатать все слова, ко­торые встречаются в нем по одному разу.

  12. Напечатать все его раз­личные слова.

  13. В нем только два слова одинаковые. Найти эти слова.

24. Напечатать все слова предложения, предварительно преобразовав каждое из них по следу­ющему правилу:

  1. заменить первую встреченную букву "а" на "о";

  2. удалить из слова все вхождения последней буквы (кроме нее самой);

  3. оставить в слове только первые вхождения каж­дой буквы;

  4. в самом длинном слове удалить среднюю (сред­ние) буквы. Принять, что такое слово — единственное.

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

а) в слове нет повторяющихся букв;

b) слово симметрично.

26. Даны два предложения.

  1. Для каждого слова первого предложения (в том числе для повторяющих­ся в этом предложении слов) определить, входит ли оно во второе предложение.

  2. Для каждого слова первого предложения определить, входит ли оно во вто­рое предложение. Повторяющиеся слова первого пред­ложения не рассматривать.

  3. Напечатать слова, которые есть только в одном из них (в том числе по­вторяющиеся).

  4. Напечатать слова, кото­рые встречаются в двух предложениях только один раз.

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

Ответом должны служить слова "да" или "нет".

В случае "неправильности" расстановки скобок:

— если имеются лишние правые (закрывающие) скобки, то выдать сообщение с указанием позиции пер­вой такой скобки;

— если имеются лишние левые (открывающие) скоб­ки, то выдать сообщение с указанием количества таких скобок.

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

Ответом должны служить слова "да" или "нет".

В случае "неправильности" расстановки скобок:

— если имеются лишние правые (закрывающие) скобки, то выдать сообщение с указанием позиции пер­вой такой скобки;

— если имеются лишние левые (открывающие) скоб­ки, то выдать сообщение с указанием количества таких скобок.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]