Opened 3 years ago

Closed 3 years ago

#86 closed ожидается проверка (задача сдана)

WW_mergesort, Garaev Timur, lab_03

Reported by: Garaev Timur Owned by: Антон Филатов
Component: WW_mergesort Version: 2.0
Keywords: Cc:

Description


Change History (4)

comment:1 Changed 3 years ago by Антон Филатов

Summary: WW_mergesort, Garaev Timur, lab_02WW_mergesort, Garaev Timur, lab_03

comment:2 Changed 3 years ago by Антон Филатов

Type: ожидается проверкаожидаются исправления

make что-то пересобирает, когда ничего не изменилось

Тэкс, что-то падает у вас
вот такой тест, например
int 4 5 -5 0 14 23 -3 1 0 -5

С интами как-то плохо у вас 2 из 4 тестов на инты падают, причём я не могу в наскока сказать, чем таким принципиальным эти тесты друг от друга отличаются
(например, для теста int -1 0 2 0 3 у вас всё проходит)

И падает тест на char, когда их там 9 штук и они расположены в обратном порядке

Кроме того в задании указано, что в файле mergesort.h должна быть указана только одна функция. Если вам нужны дополнительные функции, объявите их в mergesort.c

корректность: 4/7

Стиль:

  • в этой лабе можно вместо *(end + i) пользоваться end[i] для читабельности
  • в файле mergesort.h не хватает include guards

2/3

итого 6/7
бонусное задание буду смотреть, когда будет 10/10

comment:3 Changed 3 years ago by Garaev Timur

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

Я, честно, так и не осилил проблему с пересборкой Makefile. Наверное, даже рискну попросить помощи с этим, потому что искренне не понимаю, почему эта таска вновь и вновь запускается, даже если никаких изменений нет. Я пробовал заменять .o файлы на исодники (main.c, mergesort.c и другие) в рамках зависимостей цели link, он все равно упорно запускает ее даже если ничего не происходит. Возможно, это какая-то особенность make при работе с C, или я не понимаю чего-то фундаментального относительно ситуации.

По поводу остального:
Тесты теперь должны работать, проблема была в не совсем корректном разделении массива на кусочки в случае нечетной длины. Наверное, именно этот критерий объединял все непрошедшие тесты)

Замечания по стилю все исправлены. Единственное, мне, все-таки больше нравится обращение вида *(end + i) в функции swap. Оно все-таки подчеркивает, что мы работаем с какими-то неделимыми однобайтовыми участками памяти, явно меняя их друг с другом. И какого-то полноценного элемента (с точки зрения того, как мы привыкли видеть массивы), там в явном виде нет. Но наверное придерживаться одного стиля более правильно, чем видеть в том, какой вид обращения к элементу мы выбираем какой-то смысл, так что я все-таки просто молча исправил (ну или почти молча).

Include guards в том виде, в котором я понял его на паре присутсвует. Надеюсь, понял правильно.

comment:4 Changed 3 years ago by Антон Филатов

Resolution: задача сдана
Status: assignedclosed

Я, честно, так и не осилил проблему с пересборкой Makefile. Наверное, даже рискну попросить помощи с этим, потому что искренне не понимаю, почему эта таска вновь и вновь запускается, даже если никаких изменений нет. Я пробовал заменять .o файлы на исодники (main.c, mergesort.c и другие) в рамках зависимостей цели link, он все равно упорно запускает ее даже если ничего не происходит. Возможно, это какая-то особенность make при работе с C, или я не понимаю чего-то фундаментального относительно ситуации.

Всё просто: ваши цели в мэйкфайле должны называться также, как и файлы, которые они генерируют. То есть вместо prepape цель должна называться obj, вместо link - lab_03

По бонусному заданию: ваш mergesort вернёт наружу только результат одного из merge (кстати, подумайте - первого или последнего?). А остальные проблемы функции merge, если она где-то (но не везде) выплюнула -1, потеряются.

Ошибка сборки makefile является ошибкой за стиль. Поэтому корректность: 7/7
Стиль: 2,5/3

Итого: 9,5/10

Note: See TracTickets for help on using tickets.