Opened 3 years ago

Closed 3 years ago

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

WW #3

Reported by: Georgiy Angeni Owned by: Святослав Власов
Component: WW_mergesort Version: 3.0
Keywords: Cc:

Description

Сказать честно, часть задания с сортировкой str меня посадила в лужу. Вроде бы тот же алогритм должен работать, а компаратор я взял из предыдущего задания (или так нельзя было делать?). Как я понял, при работе на строках мой код не меняет местами ничего.

Change History (5)

comment:1 Changed 3 years ago by Святослав Власов

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

Корректность -- 4/7

  1. Не работает сортировка строк.
  2. В выводе не должно быть лишнего пробела в конце выводимой строки

Сортировка строк не работает, потому что compare_str на вход подается char**, а трактует она их как char*

Стиль -- 0/3

  1. До и после инклюд-гардов ничего не должно находиться. Инклюд тоже должен быть внутри гардов. Плюс в mergesort.h тебе malloc.h не нужен, достаточно stddef.h
  2. Длинные строки (>80 символов) нужно разбивать на несколько. Примеры того, как строки должны разбиваться для условий, вызовов функций, объявлений функций и т.д. можешь посмотреть вот тут -- https://google.github.io/styleguide/cppguide.html#Formatting
  3. Не нужно писать код одним сплошным потоком, разбей его пустыми строками на логические блоки.
  4. В функции merge можно ограничиться одним вызовом malloc вместо двух.
  5. Так лучше не писать if (elements <= 1) return; Тело функции лучше вынести на отдельную строку.
  6. Вот так тоже обычно не пишут:
    }
    else {
    

Лучше писать

} else {
  1. Почему mergesort.h не включен в mergesort.c?
  2. Не нужно писать свой компаратор strcmp, можно использовать библиотечный
  3. Ты выделяешь динамический массив на стеке (arr[argc]). При большом количестве входных данных ты получишь stack overflow.
  4. Не проверяешь выделенную malloc'ом память ассертами.
  5. Если аргументов меньше необходимого, то производишь чтение за пределами своей памяти.

comment:2 Changed 3 years ago by Georgiy Angeni

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

comment:3 Changed 3 years ago by Святослав Власов

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

Корректность -- 7/7.

Стиль -- 2/3

  1. Инклюды от объявления mergesort в заголовочном файле стоило бы отделить парой пустых строк.
  2. В copy лучше использовать синтаксис массивов
  3. Вместо того, чтобы в кажой ветке main писать
    if (argc > 2)
      printf("%s", arr[0]);
    

можно ведь просто в самом начале расширить условие до if (argc < 3)

  1. Зачем для строк создавать отдельный массив, если можно просто передать в сортировку argv?
  2. Неверные зависимости в Makefile

Бонус -- 1/1

comment:4 Changed 3 years ago by Georgiy Angeni

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

comment:5 Changed 3 years ago by Святослав Власов

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

11/11

Note: See TracTickets for help on using tickets.