Skip to content

xChygyNx/push_swap_final

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Программа сортирует поданные в качестве аргументов числа в возрастающем порядке. Числа должны:

  1. Быть уникальными (не повторяться).
  2. являться целыми числами умещающимися в тип Int (-2147483648 ... 2147483647).
  3. являться числами. Программа должна отлавливать невалидные значения и выдавать ошибку.

Программа состоит из двух частей: push_swap - определяет алгоритм, позволяющий отсортировать заданый набор значений в возрастающем порядке за наименьшее количество доступных действий, и вывести использованный список действий. checker - после запуска принимает из стандартного ввода команды и выполняет полученные команды. После завершаения ввода (Ctrl + d) показывает, отсортированы ли значения в возрастающем порядке (ОК или КО).

Команды

sa - меняет местами первые 2 элементы в стеке а.
sb - меняет местами первые 2 элемента в стеке б.
ss - меняет местами первые 2 элемента в обоих стеках одновременно.
pa - перекладывает первый элемент из стека б на верх стека а.
pb - перекладывает первый элемент из стека а на верх стека б.
ra - пересещает все элементы стека а на 1 позицию вверх (первый элемент становится последним).
rb - пересещает все элементы стека б на 1 позицию вверх (первый элемент становится последним).
rr - пересещает все элементы обоих стеков на 1 позицию вверх (первый элемент становится последним).
rra - перемещает все элементы стека а на 1 позицию вниз (последний элмент становится первым).
rrb - перемещает все элементы стека б на 1 позицию вниз (последний элмент становится первым).
rrr -перемещает все элементы в обоих стеках на 1 позицию вниз (последний элемент становится первым).

Режим отладки.

-d[0..9] - включает режим отладки (выводит на стандартный вывод состояние стеков после каждого действия). Цифры после флага задают задержку вывода после каждого действия, чем больше цифра, тем больше задержка. При отсутствии цифры или при нуле вывод будет осуществлен без задержек между действиями.
-da[0..9] - то же самое, но в "анимированном" режиме. Красивее, но не сохряняется история действий, поэтому для отладки годится плохо.
оба флага корректно работают для checker. Пример команды для корректной работы: ./push_swap 4 5 7 2 -6 100 8 | ./checker -da2 4 5 7 2 -6 100 8

Работа с файлами (Danger!!! Use kolhoz programming)

Присутствует работа с файлами. В файле должно содержаться строка с аргументами и флаги. При отсутствии файла или если файл пуст выведется соответствующее сообщение об ошибке. Программа выводит в стандартный вывод считанную строку с аргументами (чтобы пользоатель видел, с чем собирается работать программа). Пример команды для работы с файлами: ./push_swap {test.txt}. Данная команда считает аргументы из файла и выведет в стандартный вывод команды для их сортировки. При добавлениифлага -r (./push_swap -r {test.txt}) запишет команды в файл (если вы думаете, что при наличии флага команды также дублируются в стандартном выводе ради удобства пользователя, чтобы он видел какие команды записываются в файл, то вы сильно ошибаетесь). Danger!! Kolhoz - при записи команд в файл, старые команды не стираются, т.е. при повторном запуске программы. на просто впишет полученную последовательность команд после усже существующе в файле.

Компиляция.

Присутствует Makefile. Для компиляции обеих программ введите make. Для компиляции одной из двух программ предусмотрены правила make checker и make pusher.

Тестер.

В репозитории есть честно сгитченный тестер. Инструкция по пользованию: https://github.com/ksnow-be/push_swap_checker

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published