Opened 5 years ago

Closed 5 years ago

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

WW #5 chistyakova.polina

Reported by: chistyakova.polina Owned by: Дмитрий Лапшин (lapshin)
Component: WW_c_io Version:
Keywords: Cc:

Description


Change History (5)

comment:1 Changed 5 years ago by Дмитрий Лапшин (lapshin)

Owner: changed from Дмитрий Лапшин (lapshin) to chistyakova.polina
Summary: WW #5WW #5 chistyakova.polina
Type: ожидается проверкаожидаются исправления

А оригинал был вовремя. Проверяем!

Ну ведь предупреждение просто феноменального масштаба лажи!

И чтение до feof это плохо. EOF это значит файл кончился и ты уже пару раз постучала по нему лбом.

Так что плохо работает, надо чинить.

comment:2 Changed 5 years ago by chistyakova.polina

Исправила)
Извини, что так поздно...(не бей >.<)
Да, нам что-то такое на лекции говорили, но как читать было только так...
Но сейчас вроде как всё хорошо
Надеюсь)

comment:3 Changed 5 years ago by chistyakova.polina

Owner: changed from chistyakova.polina to Дмитрий Лапшин (lapshin)
Type: ожидаются исправленияожидается проверка

comment:4 Changed 5 years ago by chistyakova.polina

Запуталась в тикетах....
Надеюсь, он до тебя дошёл...

comment:5 Changed 5 years ago by Дмитрий Лапшин (lapshin)

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

Ну эх)

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

  1. Читаешь ты всё ещё плохо. Смотри, давай возьмём твой код:
    while ((fscanf(fLoad, "%d %d", &a, &b) != EOF) && (!feof(fLoad))) {
        add_point(l, a, b);
    }
    add_point(l, a, b);
    
    Мне кажется, что он очень много где некорректен. У него сложные инварианты проверки, что чтение не удалось. И зачем-то ещё раз добавляется точка (видимо, в попытках починить инвариант). Сходу возникает вопрос, а что если fscanf вернёт, ну, 0? Как следствие, ни один текстовый тест не прошёл.

Но смотри, я в стиле Чилинтано чиню машину, выкидывая детали, и о чудо:

while (fscanf(fLoad, "%d %d", &a, &b) == 2) {
    add_point(l, a, b);
}

Вот это проходит все тесты и очевидно, что работает.

  1. Аналогично с бинарными файлами. Читаем, пока говорят, что читается.

Стиль:

  1. Выделять структурки на кучи ради кучи вредно. Если она переживёт код использования прямо на стеке и маленькая, пусть и будет маленькой на стеке.
  2. Я тебе уже много раз рассказывал, но полезнее по стилю ответвлять ошибки, а не «прямое» исполнение.
    if ((strcmp(argv[1], "loadtext")) != 0 && (strcmp(argv[1], "loadbin") != 0)) {
        printf(…);
        return 1;
    }
    
    // continue here!
    
    }}}
  3. Структурка объявлена дважды. Может её в заголовок?

Суммарно это 7, к сожалению.

Note: See TracTickets for help on using tickets.