Задания для подготовки к работе

 

1. Рассмотреть библиотечные функции для работы со строками, представленные в файле <string.h> и описать аналогичные им, сохранив название, списки параметров и назначение.

2. Описать функцию char *get_word (int n), которая возвращает слово, введенное с клавиатуры, длиной не более n или пустой указатель, если длина слова больше n.

3. Разработать алгоритм и составить программу для решения задачи соответствующего варианта. Вводимый текст не хранить. Необходимую информацию хранить в свободном массиве строк.

4. Подобрать тестовые данные.

 

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

 

1. Из данного текста удалить пары слов, таких, что одно из них может быть получено циклическим сдвигом символов другого.

2. Из данного текста удалить слова, множества символов которых равны.

3. Для каждого слова w данного текста вывести слова этого же текста, множества символов которых являются подмножествами множества символов слова w.

4. Для каждого из слов данного текста указать, сколько раз оно встречается в предложении.

5. Отредактировать заданный текст, удаляя из него слова, которые встречаются в тексте заданное число раз.

6. Из каждой группы слов одинаковой длины данного текста оставить лексикографически наименьшее.

7. Найти самое длинное общее слово двух заданных текстов.

8. Даны два текста. Найти самое короткое из слов первого текста, которых нет во втором.

9. Найти множество общих слов двух данных текстов.

10. Найти самое длинное слово из слов данного текста, у которых разность между длиной слова и мощностью множества его символов наименьшая.

11. Задано два текста. Каждый текст состоит из попарно различных слов. Определить, можно ли получить второй текст из первого удалением некоторых его слов.

12. Отредактировать данный текст, удаляя из него слова-серии*, а также слова, которые уже встречались в тексте раньше.

13. Характеристикой слова назовем длину содержащейся в нем максимальной серии*. Упорядочить множество слов данного текста в соответствии с ростом их характеристик.

14. Расстояние между двумя словами равной длины – это количество позиций, в которых различаются эти слова. В заданном тексте найти пары наиболее удаленных слов для каждой группы слов одинаковой длины.

15. Определить, есть ли в данном тексте слово, которое может быть получено конкатенацией двух других слов этого же текста.

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

17. Заданы два текста. Определить, можно ли получить первый текст перестановкой слов второго текста.

18. Даны два текста. Определить, не получен ли второй текст перестановкой в обратном порядке слов первого текста.

19. Даны два текста. Определить, совпадают ли множества слов этих текстов.

20. Среди слов данного текста найти слова, не являющиеся сериями*, которые наибольшее число раз входят в текст.

21. Дан текст. Упорядочить слова этого текста по неубыванию их длин. Слова равной длины упорядочить лексикографически.

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

23. Вывести данный текст, оставив в нем только последнее вхождение каждого слова.

24. Даны два текста s1 и s2. Пусть w – первое из слов текста s1, которое есть и в тексте s2. Найти слово, следующее за первым вхождением w в s1.

25. Из данного текста удалить пары таких слов, что одно из них совпадает с другим, если читать его справа налево.

26. Сохранить только те слова данного текста, которые встречаются в нем только один раз.

27. Расстояние между двумя словами равной длины – это количество позиций, в которых различаются эти слова. В заданном тексте найти пару наиболее удаленных слов.

28. Найти самое короткое из слов данного текста, у которых разность между длиной слова и мощностью множества его символов наибольшая.

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

30. Определить, есть ли в данном тексте слово, которое является частью другого слова этого же текста.

 

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

 

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

2. С клавиатуры вводится текст. Как можно организовать считывание каждого слова в отдельную переменную?

3. Имеются описания:

char *names1 [ ] ={"Ann","Kate", "Nick"},

*names2 [ ] [5]={"Mike","Steve", Peter"}.

a) Определите, какие из следующих операторов допустимы:

names1[1] = "Аlex";

names2[1] = "Ann";

names1[2] = names2[0];

names2[2] = names1[0];

names1[2][0] = 'М';

name2[0][0] = 'N' ?

б) Исправьте недопустимые операторы, приведенные в п. a.

в) Напишите фрагмент программы перестановки двух первых строк в каждом из массивов namesnames2.

ЛАБОРАТОРНАЯ РАБОТА № 17

Файлы в языке Си

 

Цель работы: освоить работу с данными на дисках.