Advertisement
Guest User

Task 3. C-strings

a guest
Nov 7th, 2012
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.23 KB | None | 0 0
  1. Варианты к задаче 3 (строки).
  2.  
  3. 1. Есть строка, имеющая вид "par1 = val1, par2 = val2, par3 = val3"
  4. Нужно разбить ее на отдельные пары, а затем, разделив имена и значения,
  5. сохранить их в два массива (keys and values),
  6. после чего вывести их в виде:
  7. par1 -> val1
  8. par2 -> val2
  9.  
  10. Разделитель между парами --- запятая. Внутри пары --- "=".
  11. Пробелы нужно игнорировать. Если ключ или значение отсутствует, то следует брать пустую строку.
  12.  
  13. Рекомендую реализовать в виде функции, которая приниает строку,
  14. указатели на два массива для вывод результатов,
  15. а возвращает длину результата (количество пар).
  16. Можно использовать встроенную функцию strtok, впрочем, необязательно.
  17.  
  18.  
  19. 2. Написать функцию, подсчитывающую количество различных триплетов (подстрок длины 3) в строке. Например,
  20. "AAAABBBB" -> 4
  21. "ABCSEFG" -> 5
  22.  
  23. Можно использовать встроенную функцию strtok, впрочем, необязательно.
  24.  
  25. 3. Строка состоит из слов, разделенных пробелами. Посчитать количество различных слов в строке.
  26. "mama papa mama lama" -> 3
  27.  
  28. Можно использовать встроенную функцию strtok, впрочем, необязательно.
  29.  
  30. 4. На вход передается строка в виде CamelCase (т.е. все слова внутри написаны слитно,
  31. каждое новое с большой буквы). Нужно преобразовать ее в формат C-style, где все слова напиcаны
  32. с маленькой буквы через подчеркивание (CamelCase -> camel_case).
  33.  
  34. Рекомендую реализовать как функцию, принимающую строку и указатель char*, по указателю вывести новую строку, а возвращает пусть функция длину строки-результата.
  35.  
  36. 5. На входе строка, содержащая слова, разделенные пробелами. Преобразовать ее в массив отдельных слов.
  37. Пустые слова не учитывать (т.е. два пробела подряд считать одним).
  38.  
  39. Рекомендую реализовать как функцию, принимающую строку и указатель на массив. Пусть эта функция возвращает количество отдельных слов, а в массив складывает распознанные слова.
  40.  
  41. 6. На вход передается строка в виде C-style (т.е. все слова внутри написаны через подчеркивание,
  42. маленькими буквами). Нужно преобразовать ее в формат CamelCase, где все слова внутри написаны слитно,
  43. каждое новое с большой буквы.
  44.  
  45. Рекомендую реализовать как функцию, принимающую строку и указатель char*, по указателю вывести новую строку, а возвращает пусть функция длину строки-результата.
  46.  
  47. 7. На вход передаются две строки: основная строка и подстрока для поиска. Подсчитать количество различных вхождений подстроки в строку. ("ABBAKARABBAAB", "AB") -> 3
  48.  
  49. 8. Дана строка. Рассмотрим все возможные строки, образованные циклической перестановкой символов в данной строке, например, для строки "CABB":
  50. CABB
  51. ABBC
  52. BBCA
  53. BCAB
  54.  
  55. Среди всех таких строк найти лексикографически наименьшую. В качестве ответа вернуть номер начального символа новой строки в исходной, считая, разумеется, от нуля. "CABB" -> 1
  56.  
  57. 9. "RLE-кодирование". Дана строка, состоящая из латинских букв. Функция должна возвращать строку, полученную из исходной заменой всех последовательностей одинаковых букв, идущих подряд, на сочетание вида "###*", где * --- повторяющаяся буква, а ### --- количество повторений.
  58. "aaabccd" -> "3ab2cd"
  59.  
  60. 10. "RLE-декодирование". Задача, обратная предыдущей.
  61. "3ab2cd" -> "aaabccd"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement