Opened 5 years ago
Closed 4 years ago
#429 closed ожидается проверка (задача сдана)
WW #5
Reported by: | pshek.maksim | Owned by: | Egor Suvorov |
---|---|---|---|
Component: | WW_c_io | Version: | 3.0 |
Keywords: | Cc: |
Description
Снова забыл создать тикет вовремя
Change History (10)
comment:1 Changed 5 years ago by
Component: | WW cpp_io → WW_c_io |
---|
comment:2 Changed 5 years ago by
Owner: | changed from Egor Suvorov to pshek.maksim |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:3 Changed 4 years ago by
Owner: | changed from pshek.maksim to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
Не финальная версия, просто то, что есть на текущий момент. На мой взгляд, осталось поправить:
- Write bin/txt через apply
- Утечки в моем же листе из 3 лабораторной
- Возможно стиль/структура (точно нужно убрать кучу комментов, вероятно, чтение/запись бинарных файлов можно сделать куда адекватнее)
comment:4 Changed 4 years ago by
Owner: | Egor Suvorov deleted |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Корректность:
- В
clist.h
есть и#pragma once
, и include guards. Оставьте что-то одно. При этом include guards должны идти первой/последней строчкой файле, ещё до include. - В
Makefile
не хватает зависимостей по#include
. Например,main.o
зависит только отclist.h
, хотя включает ещё иpoint_list.h
. Обратите внимание, что любой файл, включающийpoint_list.h
, ещё и автоматически включаетclist.h
. - Не тот порядок точек при выводе.
- Не работает считывание бинарных файлов. Кажется, вы несколько перепутали формат: сначала три байта
x
, потом три байтаy
(у вас сейчас везде наоборот). Внутри числа порядок от младших байтов к старшим (у вас сейчас наоборот при чтении). savetext
должен выводить точки по строчкам, а не через пробел.
Настоятельная рекомендация: сосредоточиться на корректности, а не стиле. Сейчас это основная проблема.
- Раз у вас есть утечки в списке, не мучайтесь и не лишайте себя баллов, а возьмите предоставленный. Тем более что по стилю в спике вам тоже надо будет много править.
- Исправьте корректность выше.
- Не пишите вложенные
if
для обработки команд. Сначала считали файл: одинif
, разбирающийloadtext
/loadbin
. Просто заполнилиlist
. А потом независимо от того, как именно заполнили, обработали остальные команды отдельными ифами. - Проверьте, что у вас в точности работает на примере с включённым Valgrind/sanitizer.
По стилю:
- Не используется функция
readLine
. Уберите её, она практически никогда не нужна, в Си обычно достаточноscanf
, в домашках — точно.
comment:5 Changed 4 years ago by
Owner: | set to pshek.maksim |
---|
comment:6 Changed 4 years ago by
Owner: | changed from pshek.maksim to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
Доделал, теперь, насколько мне известно, работает все.
comment:7 Changed 4 years ago by
Owner: | changed from Egor Suvorov to pshek.maksim |
---|---|
Type: | ожидается проверка → ожидаются исправления |
До корректности осталось (утечки исчезли):
- Во
write_text_node
неверныйassert
. - Всё ещё неверный порядок чтения-записи байт в бинарных файлах. Первые три байта в файле — это
x
-координата.
comment:8 Changed 4 years ago by
И ещё по корректности: иногда некорректно обрабатываются очень большие координаты. Например, при выводе бинарного файла в текстовый это хорошо видно.
comment:9 Changed 4 years ago by
Owner: | changed from pshek.maksim to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Поменял ввод/вывод, не заметил ранее потому что неправильный ввод неправильно выводился и вывод казался правильным... поправил assert'ы.
comment:10 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
По корректности 5/7:
- Корректный Makefile и структура папок +1
- Корректные заголовочные файлы +0.5
- Во всех исходных файлах подключены нужные заголовки и только они +0.5
- Корректное разделение по файлам, корректная реализация списка +1
- Корректно работает загрузка из текстовых файлов (в том числе отрицательные координаты) и команда print реализована при помощи apply (возможно, без параметра void *data) +1
- Корректно реализована команда count при помощи apply и без глобальных переменных +0.5
- Формат вывода в реализованной print строго соблюдается +0.5
Увы, запись в текстовые не работает: в write_text_node
неверно, что на выходе всегда ровно четыре символа. Может быть больше, если координата, например, 10
.
С бинарными тоже некоторая проблема: порядок байт внутри одного числа: от младших байт к старшим. То есть, например, во write_bin_node
надо писать то же самое, но индексы идут от 0 до 5 по возрастанию.
По стилю 1.5/3: можно сильно упрощать и причёсывать код, зато локально каждая строчка отформатирована идеально.
Если хотите дорешать — смело переоткрывайте тикет. Подробно расскажу про стиль и остальное.
Но глобально рекомендую скорее сосредоточиться на остальных домашках :)
Попытка засчитана, дедлайн продлён.
Корректность:
lab_05
отpoint_list.o
.point_list.c
, аapply
— вclist.c
.print
иloadtxt
.show_all_points
.apply
объявлен вclist.h
, а реализован вmain.c
.Баллы за корректность 1/7.
По стилю 1/3:
else
, а падать поassert
.point1
/node1
— уберите числа из имён.cur != NULL
— простоcur
.