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: | ожидается проверка → ожидаются исправления |
comment:2 Changed 5 years ago by
Owner: | changed from luchinin.aleksey to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.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
Owner: | changed from luchinin.aleksey to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
Исправил все недочёты
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
- функция convert делает сдвиг влево знакового числа. До C++20 поведение ((int32_t)(1) << 31) вообще говоря не определено.
Манипуляции над битами всегда лучше выполнять в беззнаковых типах.
-
int32_t x = 257; int8_t y = x;
При приведении типов произойдет знаковое переполнение. Поскольку типы знаковые, это UB. С С++20 будет не undefined, но implementation-defined. Что тоже не особо здорово.
10/12
Тесты без бонусного пройдены.
Передавать форматную строку можно без указателя на указатель
Решение опирается на порядок байтов в int и будет работать только на little-endian архитектурах.
main нужно разбить на независимые функции и уменьшить дублирование кода: сейчас вызов манипуляций со списком скопипащен в двух ветках if
7.7/10