10.27 Память на куче

Форма для сдачи

Контрольная работа

Повторение:

Бывает по-разному, но обычно у запущенной программы в ОС:

Почему так? Так пошла эволюцияПотому что!!! (+потому что виртуальная память, а так удобнее)

{OK} strlen, strlcpy и strlcat: ввести число n и строку, сформировать и вывести строку, повторенную n раз

NB! Вот здесь начали сильно тормозить из-за отсутствия нормальных падаванок

Тип void * и двойные ссылки; malloc() и calloc()

:)) Был ли void * на лекциях? Для чего нужен?

:)) Тип int ** и ему подобные — для чего нужны?

Кто маллочит — тот и фрит!

NB! Это было только в режиме быстрой малопонятной падаванки

Ввод строки произвольного размера

Работа getline

  1. {OK} Ввод строки произвольного размера (для этого надо инициализировать приёмник NULL-ом)

(требуется free()):

NB! Досюда не дошли, но это хотя бы несложно

Массив строк

Д/З

  1. EJudge: SearchReplace 'Поиск с заменой'

    Ввести три cлова — s, a и b. Вывести строку s, в которой все вхождения a будут заменены на b. Повторную замену (в случае, когда после замены образуются новые вхождения) делать не надо.

    • Поиск и замену вести в один проход среди найденных вхождений a в s в порядке от начала к концу. Например, при s="11111", a="11", b="2" результатом замены должно быть "221".

    • Нет повторной замены: "aba" → "ca" в строке "ababa". Вхождение aba в ababa одно (за первым aba следует только ba) ⇒ результат поиска с заменой — "caba".

    Input:

    xqwedfqweasadsadfaqweqwesdf qwe RTYS
    Output:

    xRTYSdfRTYSasadsadfaRTYSRTYSsdf
  2. EJudge: MaxSubstr 'Наибольшая общая подстрока'

    Ввести две строки длиной не более 2000 символов, вывести их наиболее длинную общую подстроку. Если таких подстрок несколько, вывести ту, что следует раньше в первой строке. Если общих подстрок нет, вывести "FAIL".

    Input:

    01uj12qawsed23tgyhej34
    uj-tgyhej-qawsed
    Output:

    qawsed
  3. EJudge: PlusFrag 'Плюсфрагменты'

    Ввести последовательность «плюсфрагментов» — цепочек произвольных символов, разделённых символом '+'. Несколько символов-разделителей подряд в строке быть не может. Вывести только фрагменты, целиком состоящие из латинских гласных a, e, i, o, u. Внутри фрагмента могут встречаться пробелы и переводы строки.

    Input:

    qwe+aeuio+sd f+aeeug+ae
    Output:

    aeuio
    ae
  4. EJudge: CommaSort 'Сортировка строк'

    Ввести массив строк (не более 10000) и отсортировать их по количеству запятых любым алгоритмом устойчивой сортировки. Вывести отсортированные строки, каждую на своей строке экрана.

    • Алгоритм устойчивой сортировки сохраняет исходный порядок среди элементов, имеющих одинаковое значение критерия сортировки. Годится «пузырёк».
    Input:

        October 2026    
    Su Mo Tu We Th Fr Sa
                 1  2  ,
     4  5  6  7  8  9 10
    11 12 1, 14 15 16 17
    18 19 20 21 22 2, 24
    25 26 27 28 29 ,0 ,1
    󠀠
    Output:

        October 2026    
    Su Mo Tu We Th Fr Sa
     4  5  6  7  8  9 10
    󠀠
                 1  2  ,
    11 12 1, 14 15 16 17
    18 19 20 21 22 2, 24
    25 26 27 28 29 ,0 ,1

LecturesCMC/AL/Prac/16_Malloc (последним исправлял пользователь FrBrGeorge 2026-11-01 20:40:08)