Анон, я тот кун, который спрашивал про метод Хоара. И у меня опять проблемы, на этот держи файл кода, если захочешь помочь, конечно.
https://pastebin.com/fp2PWh40Пишу на Pellec C
именно на нем т.к. он же стоит на пк в аудитории, где все это сдавать буду. И тут я просто не знаю как решить 2 проблемы. И так, пока что есть метод сортировки пузырьком и случайный массив, который надо им отсортировать. И в 1% случаев все идет нормально, но чаще всего программа не работает.
I проблема: не происходит возврат из функции сортировки.
надпись FUCK поставил выводить, чтобы проверить, до куда доходит выполнение программы. И, как видно, до ходит до оператора return в этой самой функции сортировки. После чего без ошибок или чего-либо ещё программа просто останавливается. НО. Как видно в комментарии там же, если поставить вот такой вот цикл из вывода цифр от 0 до 2 и дальше
от 0 до 3, от 0 до 4.. то проблема исчезнет. Но если поставить вывод цифр от 0 до 1, то она останется. И я не понимаю, как это вообще связано, и почему так происходит.
II и III проблемы, наверное, происходит по одной и той же причине, но я не понимаю, по какой именно. Программа выходит из функции сортировки, но при выводе отсортированного массива происходит ошибка. Потому, что при выводе массива сначала выводится индексы всех его элементов в строчку, потом все элементы
чтобы было удобно смотреть. И либо вывод индексов идет очень очень долго, либо не идет вообще. Потому, что по каким-то причинам N - количество элементов в массиве - становится очень большим положительным или очень большим отрицательным числом после функции сортировки. И я опять не могу понять, почему так происходит. N один раз получает свое значение через scanf, и больше никогда не изменяется, а в функцию сортировки передается через значение, а не адресс. Но все равно почему-то она изменяется.
НО НО НО, СМОТРИ СЮДА, АНОН, ЕСТЬ ЕЩЁ КОЕ-ЧТО. Последние аргументы к функции проверки prov(..), и переменные i и i2 в функции сортировки, это счетчики количества сравнений и присвоений
мне нужно отсортировать массив пузырьком и Хоаром, а потом сравнить все это. И если просто убрать их насовсем, а точнее будет достаточно убрать их из prov()
то есть определить, что в проверки только 2 параметра то все проблемы сразу исчезнут. Но опять же я не понимаю, почему. Серьезно. Это просто 2 переменные, не связанные вообще ни с чем. Но почему-то их присутствие ломает всю программу. Такие дела, надеюсь на помощь и объяснение.
Код как ссылка, т.к. когда пытался загрузить в пост как .c, Доброчан выдавал:
sr15.c: exception - 'utf-8' codec can't decode byte 0xea in position 410: invalid continuation byte
Пришлось сохранить в .txt с выбором кодировки UTF-8, но тогда Доброчан выдавал, что неизвестная кодировка. Пиздос.