Opened 5 years ago

Closed 5 years ago

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

WW #2

Reported by: Gleb Marin Owned by: Sokolov Viacheslav
Component: WW_strings Version: 2.0
Keywords: Cc:

Description


Change History (3)

comment:1 Changed 5 years ago by Sokolov Viacheslav

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

Makefile:
Цель all тоже стоит пометить как .PHONY. Лучше переименовать BIN -> OBJ.

Сигнатуры функций должны совпадать со стандартными, в частности, должно присутствовать ключевое слово restrict.

{}; - здесь ; не нужно.

В функциях my_strcpy и my_strcat одинаковая по смыслу пара переменных (dest, dest_ptr) используется по-разному, что затрудняет восприятие. Также название dest_ptr наводит на мысль, что это указатель на dest, но это не так.

Реализацию my_strcmp можно сократить, удалив несколько символов (не меняя именование) так, что поведение программы не поменяется.

Нужно не забывать инициализировать переменные, в частности, reset_seed_done.

При запуске тестов получаю Wrong implementation of my_strcmp.

Случайность в тестах это хорошо, но она влияет на их воспроизводимость. Воспроизводимость теста крайне важна. Поэтому лучше инициализировать rand() не текущим временем, а какой-то константой.

Можно дописать const в те места, где переменная не подразумевает дальнейшей модификации.

Обращаю внимание, что malloc может вернуть NULL. Это влияет на (формальную) корректность программы.

Было бы здорово так переписать программу, чтобы не приходилось дублировать код деаллокаций. Да и не только деаллокаций: участок кода

        int len1 = randint(MIN_LEN, MAX_LEN);
        int len2 = randint(MIN_LEN, MAX_LEN);
        char* str1 = malloc(sizeof(char) * (len1 + len2 + 1));
        char* str2 = malloc(sizeof(char) * (len2 + 1));
        get_rand_string(str1, len1);
        get_rand_string(str2, len2);
        char* str1_cp = malloc(sizeof(char) * (len1 + len2 + 1));
        char* str2_cp = malloc(sizeof(char) * (len2 + 1));
        strcpy(str1_cp, str1);
        strcpy(str2_cp, str2);

встречается не раз, и его можно было бы вынести в отдельную функцию.

Функция reset_seed не соответствует своему описанию. На самом деле она что-то вроде reset_seed_if_not_yet, и можно было бы не звать ее каждый раз из randint, а позвать set_seed один раз из main().

Вместо printf("%s\n", "Done!"); можно просто printf("Done!\n");

comment:2 Changed 5 years ago by Gleb Marin

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

comment:3 Changed 5 years ago by Sokolov Viacheslav

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

Все еще получаю

Wrong implementation of my_strcmp (-3 != -1)

Note: See TracTickets for help on using tickets.