Change History (5)

comment:1 Changed 5 years ago by Артур Гулецкий (huletski)

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

Ошибки при работе с памятью:

{lab_05}[2014]$ pwd && svn up && svn status
/home/hfx/dvl/cpp19/podoprigora.ivan/lab_05
Updating '.':
At revision 1648.
?       in-txt
{lab_05}[2015]$ make
mkdir obj
gcc -c -Wall -Wextra -Werror -Iinclude src/clist.c -o obj/clist.o
gcc -c -Wall -Wextra -Werror -Iinclude src/point_list.c -o obj/point_list.o
gcc -c -Wall -Wextra -Werror -Iinclude src/main.c -o obj/main.o
gcc obj/clist.o obj/point_list.o obj/main.o -o lab_05
{lab_05}[2016]$ cat in-txt 
1 2
3 4
{lab_05}[2017]$ valgrind ./lab_05 loadtext in-txt print "%d %d "
==5049== Memcheck, a memory error detector
==5049== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==5049== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==5049== Command: ./lab_05 loadtext in-txt print %d\ %d\ 
==5049== 
1 2 3 4 ==5049== 
==5049== HEAP SUMMARY:
==5049==     in use at exit: 48 bytes in 2 blocks
==5049==   total heap usage: 5 allocs, 3 frees, 5,720 bytes allocated
==5049== 
==5049== LEAK SUMMARY:
==5049==    definitely lost: 24 bytes in 1 blocks
==5049==    indirectly lost: 24 bytes in 1 blocks
==5049==      possibly lost: 0 bytes in 0 blocks
==5049==    still reachable: 0 bytes in 0 blocks
==5049==         suppressed: 0 bytes in 0 blocks
==5049== Rerun with --leak-check=full to see details of leaked memory
==5049== 
==5049== For counts of detected and suppressed errors, rerun with: -v
==5049== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Часть тестов пройдены успешно -> +7.

Замечания:

  • main.c:15. Используется буфер, а не непосредственная запись первых трех байт int при сохранении в файл -> -0.75;
  • main.c:28. Используется глобальная переменная count, хотя можно обойтись без нее (hint: используйте data) -> -1;
  • main.c:66. Считывание данных через буфер, а не непосредственно в переменные -> -0.75;
  • форматирование кода: лишние пробельные символы в концах строк (e.g. main.c:67), пустые строки в конце main.c.

--
Итог: 4.5, доделывайте.

comment:2 Changed 5 years ago by podoprigora.ivan

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

comment:3 Changed 5 years ago by Артур Гулецкий (huletski)

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

Ошибки при работе с памятью

Починили.

main.c:15. Используется буфер, а не непосредственная запись первых трех байт int при сохранении в файл -> -0.75;

Не починили.

main.c:28. Используется глобальная переменная count, хотя можно обойтись без нее (hint: используйте data) -> -1;

Починили.

main.c:66. Считывание данных через буфер, а не непосредственно в переменные -> -0.75;

Не починили.

форматирование кода: лишние пробельные символы в концах строк (e.g. main.c:67), пустые строки в конце main.c.

Починили.

--
Итог: 8.5

comment:4 Changed 5 years ago by podoprigora.ivan

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

comment:5 in reply to:  3 Changed 5 years ago by Артур Гулецкий (huletski)

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

main.c:15. Используется буфер, а не непосредственная запись первых трех байт int при сохранении в файл -> -0.75;

Не починили.

Ок, отдельные переменные можно было не заводить, а записывать сразу из полей структуры.

main.c:66. Считывание данных через буфер, а не непосредственно в переменные -> -0.75;

Не починили.

Ок. В данном случае выполнение нетривиальных операций в _условии_ циклa и строка кода (как результат) в 100+ символов ухудшают читабельность. Лучше было бы оформить тот же цикл следующим образом:

#define BYTES_PER_POINT 6 // этот define можно сделать и более "глобальным"
while (1) {
  int point_bytes_nm = fread(...) +
                       fread(...);
  if (point_bytes_nm != BYTES_PER_POINT) { break; }
  ...
}
#undef BYTES_PER_POINT

--
Итог: 10.

Note: See TracTickets for help on using tickets.