Opened 3 years ago

Closed 3 years ago

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

WW_cpp_io Kozyrev Andrei lab_10

Reported by: Andrei Kozyrev Owned by: Антон Филатов
Component: WW cpp_io Version: 2.0
Keywords: Cc:

Description


Change History (3)

comment:1 Changed 3 years ago by Антон Филатов

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

Тесты падают, поскольку:
1) Вы забыли выводить на экран слова "Total salary"
2) у вас почему-то при записи в файл всё записывается два раза (проверьте через hexdump -C)

Стиль:

  • вот уже 4 человека, кто пишет тело метода salary в заголовочном файле. Кто с кого списывает?
  • константы надо делать не глобальными, а класть в соответствующие классы
  • мне не очень нравится ваша архитектура. По-хорошему операторы << и >> должны быть только у родителя. Внутри этих операторов надо вызвать виртуальные функции, которые переопределять уже у потомков. Ну и избегать копипасты (в out << Name и out << Base Salary)
  • В продолжение прошлого комментария, я предлагаю в операторе << вызывать виртуальную функцию, а не наоборот
  • вот этот код у вас копипастится
             if(type == 1) {
                auto* d = new Developer;
                std::cin >> *d;
                employees.add(d);
            }
            else {
                auto* s = new SalesManager;
                std::cin >> *s;
                employees.add(s);
            }

его можно вынести в функцию

  • f.write((char*)&_emp_count, 4) и в подобных. Чтоб не писать какие-то константы, полльзуйтесь sizeof

Пока 3/10, но в целом работа почти правильная

comment:2 Changed 3 years ago by Andrei Kozyrev

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

Дадада, все поправил. На тему двойного вывода, это я случайно забыл ключ app убрать, после того как поэксперементировал с ними

comment:3 Changed 3 years ago by Антон Филатов

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

тесты пройдены.
Стиль:

  • осталось замечание

    вот этот код у вас копипастится

                 if(type == 1) {
                    auto* d = new Developer;
                    std::cin >> *d;
                    employees.add(d);
                }
                else {
                    auto* s = new SalesManager;
                    std::cin >> *s;
                    employees.add(s);
                }
    

f.write((char*)&_emp_count, 4) и в подобных. Чтоб не писать какие-то константы, полльзуйтесь sizeof

(не везде выпилили)

  • присутствует копипаста в print_to_stream у разных наследников. По-хорошему надо было в общую функцию вынести

Лайк за read_from_file, но кажется, что не хватает write_to_file

8.5/10

Note: See TracTickets for help on using tickets.