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 Egor Suvorov

Component: WW cpp_ioWW_c_io

comment:2 Changed 5 years ago by Egor Suvorov

Owner: changed from Egor Suvorov to pshek.maksim
Type: ожидается проверкаожидаются исправления

Попытка засчитана, дедлайн продлён.

Корректность:

  1. Не прописаны зависимости lab_05 от point_list.o.
  2. Некорректное разделение по файлам: управдение точками должно быть в point_list.c, а apply — в clist.c.
  3. Работает только print и loadtxt.
  4. Зачем-то вызывается show_all_points.
  5. Точки выводятся не в том порядке.
  6. apply объявлен в clist.h, а реализован в main.c.

Баллы за корректность 1/7.

По стилю 1/3:

  1. Пройдитесь автоформаттером для пробелов и скобочек.
  2. Уберите неиспользуемые функции.
  3. Лучше не заглушать ошибки вроде "мало аргументов" отсутствием ветки else, а падать по assert.
  4. point1/node1 — уберите числа из имён.
  5. cur != NULL — просто cur.

comment:3 Changed 4 years ago by pshek.maksim

Owner: changed from pshek.maksim to Egor Suvorov
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

Не финальная версия, просто то, что есть на текущий момент. На мой взгляд, осталось поправить:

  • Write bin/txt через apply
  • Утечки в моем же листе из 3 лабораторной
  • Возможно стиль/структура (точно нужно убрать кучу комментов, вероятно, чтение/запись бинарных файлов можно сделать куда адекватнее)

comment:4 Changed 4 years ago by Egor Suvorov

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

Корректность:

  1. В clist.h есть и #pragma once, и include guards. Оставьте что-то одно. При этом include guards должны идти первой/последней строчкой файле, ещё до include.
  2. В Makefile не хватает зависимостей по #include. Например, main.o зависит только от clist.h, хотя включает ещё и point_list.h. Обратите внимание, что любой файл, включающий point_list.h, ещё и автоматически включает clist.h.
  3. Не тот порядок точек при выводе.
  4. Не работает считывание бинарных файлов. Кажется, вы несколько перепутали формат: сначала три байта x, потом три байта y (у вас сейчас везде наоборот). Внутри числа порядок от младших байтов к старшим (у вас сейчас наоборот при чтении).
  5. savetext должен выводить точки по строчкам, а не через пробел.

Настоятельная рекомендация: сосредоточиться на корректности, а не стиле. Сейчас это основная проблема.

  1. Раз у вас есть утечки в списке, не мучайтесь и не лишайте себя баллов, а возьмите предоставленный. Тем более что по стилю в спике вам тоже надо будет много править.
  2. Исправьте корректность выше.
  3. Не пишите вложенные if для обработки команд. Сначала считали файл: один if, разбирающий loadtext/loadbin. Просто заполнили list. А потом независимо от того, как именно заполнили, обработали остальные команды отдельными ифами.
  4. Проверьте, что у вас в точности работает на примере с включённым Valgrind/sanitizer.

По стилю:

  1. Не используется функция readLine. Уберите её, она практически никогда не нужна, в Си обычно достаточно scanf, в домашках — точно.

comment:5 Changed 4 years ago by Egor Suvorov

Owner: set to pshek.maksim

comment:6 Changed 4 years ago by pshek.maksim

Owner: changed from pshek.maksim to Egor Suvorov
Type: ожидаются исправленияожидается проверка
Version: 2.03.0

Доделал, теперь, насколько мне известно, работает все.

comment:7 Changed 4 years ago by Egor Suvorov

Owner: changed from Egor Suvorov to pshek.maksim
Type: ожидается проверкаожидаются исправления

До корректности осталось (утечки исчезли):

  1. Во write_text_node неверный assert.
  2. Всё ещё неверный порядок чтения-записи байт в бинарных файлах. Первые три байта в файле — это x-координата.

comment:8 Changed 4 years ago by Egor Suvorov

И ещё по корректности: иногда некорректно обрабатываются очень большие координаты. Например, при выводе бинарного файла в текстовый это хорошо видно.

comment:9 Changed 4 years ago by pshek.maksim

Owner: changed from pshek.maksim to Egor Suvorov
Type: ожидаются исправленияожидается проверка

Поменял ввод/вывод, не заметил ранее потому что неправильный ввод неправильно выводился и вывод казался правильным... поправил assert'ы.

comment:10 Changed 4 years ago by Egor Suvorov

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

По корректности 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: можно сильно упрощать и причёсывать код, зато локально каждая строчка отформатирована идеально.

Если хотите дорешать — смело переоткрывайте тикет. Подробно расскажу про стиль и остальное.

Но глобально рекомендую скорее сосредоточиться на остальных домашках :)

Note: See TracTickets for help on using tickets.