Opened 5 years ago

Closed 4 years ago

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

WW #5

Reported by: luchinin.aleksey Owned by: Дмитрий Свиридкин
Component: WW_c_io Version: 3.0
Keywords: Cc:

Description

Пока написал без бонусного задания

Change History (5)

comment:1 Changed 5 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to luchinin.aleksey
Type: ожидается проверкаожидаются исправления

Тесты без бонусного пройдены.

Передавать форматную строку можно без указателя на указатель

Решение опирается на порядок байтов в int и будет работать только на little-endian архитектурах.

main нужно разбить на независимые функции и уменьшить дублирование кода: сейчас вызов манипуляций со списком скопипащен в двух ветках if

7.7/10

comment:2 Changed 5 years ago by luchinin.aleksey

Owner: changed from luchinin.aleksey to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

Попытался исправить недочёты + выполнить доп задание

comment:3 Changed 5 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to luchinin.aleksey
Type: ожидается проверкаожидаются исправления

У вас обращение у неинициализированной памяти, если подать пустой бинарный файл.

feof ничего не может сказать про только что открытый файл.

Алгиритм преобразования чисел как минимум нужно вынести в отдельную функцию. А вообще подумайте, как можно сделать его проще. У вас, пожалуй, сейчас самая длинная и сложная реализация из всех, что пытались сдавать :)

Буфферы на три байта можно выдалять статически, а не динамически

Зависимость от порядка байт осталась при записи.

Используйте типы с фиксированной длиной (int32_t, int8_t, uint8_t и т.д.)

8/12

comment:4 Changed 4 years ago by luchinin.aleksey

Owner: changed from luchinin.aleksey to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 2.03.0

Исправил все недочёты

comment:5 Changed 4 years ago by Дмитрий Свиридкин

Resolution: задача сдана
Status: assignedclosed
  1. функция convert делает сдвиг влево знакового числа. До C++20 поведение ((int32_t)(1) << 31) вообще говоря не определено.

Манипуляции над битами всегда лучше выполнять в беззнаковых типах.

  1.    int32_t x = 257;
       int8_t y = x;
    

При приведении типов произойдет знаковое переполнение. Поскольку типы знаковые, это UB. С С++20 будет не undefined, но implementation-defined. Что тоже не особо здорово.


10/12

Note: See TracTickets for help on using tickets.