Решаем задачи Абрамян на Паскале. Array64

Array64. Даны три целочисленных массива $$A$$, $$B$$ и $$C$$ размера $$N_A$$, $$N_B$$, $$N_C$$ соответственно, элементы которых упорядочены по убыванию. Объединить эти массивы так, чтобы результирующий целочисленный массив $$D$$ (размера $$N_A + N_B + N_C$$) остался упорядоченным по убыванию.

Решение:

Решение olegst1975 рекурсия:

Решение olegst1975 указатели:

Ещё одно Решение в один проход :

Задачи из раздела Array  можно посмотреть здесь.

Комментарии:

Комментарии 9

  • С рекурсией без допмассива

    [/crayon]
    Ну и последний вариант(как по мне наиболее перспективный, может можно сделать лучше) — с указателями. Правда, чет не везде работало

    [/crayon]

  • В рекурсии:
    ia,ib,ic,id объявляется два раза исправил.
    И ещё добавил writeln, а то совсем уж не понятно, что вводишь.
    Про указатели, я думаю это нормально, что не везде рабоатет 🙂

    • Не удержался, написал ещё одно решение выполняющее слияние за один проход, но строчек больше получилось…

      • Спасибо за правки. Очень оперативное новое решение!

        • Нужно проверить, может и косяки компилятора(или что-то с повторами чисел??)
          Исходные данные
          NA = 6 A: 97 94 57 -10 -67 -69
          NB = 6 B: 73 58 18 10 6 -45
          NC = 5 C: 73 37 5 -31 -99
          Полученные результаты
          D: 97 94 73 57 37 5 -10 -31 -67 -69 -99 0 0 0 0 0 0
          Пример верного решения
          D: 97 94 73 73 58 57 37 18 10 6 5 -10 -31 -45 -67 -69 -99

          Исходные данные
          NA = 4 A: 43 32 14 -56
          NB = 3 B: 67 44 -24
          NC = 7 C: 98 61 61 46 28 24 -24
          Полученные результаты
          D: 98 67 61 44 43 32 14 -24 -56 0 0 0 0 0
          Пример верного решения
          D: 98 67 61 61 46 44 43 32 28 24 14 -24 -24 -56

          • free pascal — всё ок
            delphi 7 — всё ок
            pascalabc.net — всё плохо… (но я бы удивился если бы всё было хорошо, там даже вот это не работает)

  • Не согласен. У меня не получается). На работе лазарус — мимо, дома делфи7 тот же результат. Хорошая идея с заменой последнего числа в сливаемых массивах. Но при одинаковых числах, встречающихся в них, итоговый размер массива D получается меньше чем NA+NB+NC и дальше заполняется нулями(вернее он уже заполнен).
    A: 4
    B: 7, 1
    C: 3, 3, 1
    При «ловле» второй тройки срабатывает условие в строке 19, хотя должны были добраться до 20… Так, много текста, вот предложение

    [/crayon]

    • Я понял о каком решении говориться, только сейчас… я думал мы говорим про поинты…
      Действительно, всё так как вы говорите, поправил.
      Спасибо за настойчивость 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *