Opened 3 years ago

Closed 3 years ago

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

WW #3

Reported by: kutyavin.denis Owned by: Святослав Власов
Component: WW_mergesort Version: 2.0
Keywords: Cc:

Description

Функции написаны, но в мейне пока нет консольного приложения.

Change History (3)

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

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

Валгринд возмущается -- это сразу 0/7 за корректность.

Стиль -- 0/3

  1. Используй синтаксис массивов там, где это возможно. В конструкциях вроде таких:
    *(dst + i) = *(src + i);
    
  2. Зачем разбивать это на две строчки?
    	char* work_array = NULL;
    	work_array =  (char*) malloc((left_size + right_size) * element_size);
    
  3. Длинные строки (>80 символов) нужно разбить.
  4. Это условие бессмысленно, можно от него избавиться:
    if(right == right_size){
    

У тебя после завершения цикла while (left < left_size && right < right_size) гарантированно либо left == left_size, либо right == right_size, поэтому выполнится только один из циклов: while(left != left_size) либо while(right != right_size). Дополнительное условие здесь не нужно.

  1. Эмм.. Как ты себе представляешь должна выполниться строчка с free?
    	return 0;
    	free(work_array);
    
    
  2. В рекурсивных вызовах mergesort не проверяется их возвращаемое значение. Если в них что-то пойдет не так, вызывающая функция об этом не узнает и продолжит работу, что чревато утечками.
  3. Снова, зачем разделять на две строчки?
    	int ans = strcmp(*x, *y);
    	return ans;
    
  4. Не нужно писать свою реализацию перевода строки в число. Есть библиотечная atoi. То же самое касается вывода строки на экран. Достаточно написать printf("%s", str), а не выводить посимвольно.
  5. Вместо выделения памяти под массив строк, можно просто передать в функцию argv.

comment:2 Changed 3 years ago by kutyavin.denis

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

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

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

Корректность -- 7/7
Стиль -- 3/3
Бонус -- 0.5/1

  1. Не нужно вызывать второй рекурсивный вызов если первый завершился неуспешно. Вероятнее всего он тоже упадет, а если не упадет, то проделает бессмысленную работу.

10.5/11

Note: See TracTickets for help on using tickets.