Opened 4 years ago

Closed 4 years ago

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

WW #11

Reported by: Денис Лочмелис Owned by: Дмитрий Свиридкин
Component: WW cpp_io Version: 2.0
Keywords: Cc:

Description

К сожалению, пока оно до конца не работает. Но у меня там порядка 600 строк уже есть, осталось только выловить пару ошибок и обработать проблемные места, там правда не много. У меня же есть возможность еще исправить?

Change History (4)

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

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

У вас еще есть возможность сдать с одной попытки, а эту мы проверять не будем:
С форматом что-то не так, выводятся лишние имена и просто падает.

1. Sales ManagerJoe
Name: Joe
Base Salary: 100
Sold Items: 20
Item Price: 300

2. DeveloperBilly
Name: Billy
Base Salary: 1000
Has Bonus: +

== Total salary: 2160

Unknown employee type
Critical error. Stopping

В репозитории мусор только не оставляйте. И внимательно проверьте текст печатаемых строк с тем, что требуется в задании.

Манипуляторы для сотрудников избыточны. И, возможно, мешают.

comment:2 Changed 4 years ago by Денис Лочмелис

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

Это была совсем неудачная версия, просто мне надо было послать что было до дедлайна.

Ошибки пофиксил, они были в основном глупые. Все привел к нормальному состоянию.

Знаю, что будет падать на числах от 9 до 13, потому что это пробельные символы, которые почему-то читаться не хотят даже в бинарном вводе.

Еще знаю, что нормально не обрабатываю ошибки, потому что у операторов возвращаемое значение занято. (Мне даже кажется, что если вообще в этой лабе не использовать операторы, то было бы удобнее...)

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

Owner: changed from Денис Лочмелис to Дмитрий Свиридкин

comment:4 in reply to:  2 Changed 4 years ago by Дмитрий Свиридкин

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

Replying to Денис Лочмелис:

Это была совсем неудачная версия, просто мне надо было послать что было до дедлайна.

Ошибки пофиксил, они были в основном глупые. Все привел к нормальному состоянию.

Знаю, что будет падать на числах от 9 до 13, потому что это пробельные символы, которые почему-то читаться не хотят даже в бинарном вводе.

Еще знаю, что нормально не обрабатываю ошибки, потому что у операторов возвращаемое значение занято. (Мне даже кажется, что если вообще в этой лабе не использовать операторы, то было бы удобнее...)

Починил ваше решение исправив 2 строчки :)
Читать и писать в бинарные файлы нужно с помощью read/write, а не при помощи операторов >> <<.
Они всегда работают как будто бы у вас текстовый поток.

Ошибки в операторах чтения и записи в поток обрабатываются выставлением флагов.

Магические константы типов у вас протекли в main.

  1. У вас есть enum
  2. Разбором типорв должен заниматься модуль, а не пользовательский код

Использование std::string::compare дял сравнения на точное равенство -- это, конечно, неожиданное решение. Вас, наверное, Java напугали. В C++ есть оператор == для строк. С C-строками тоже работает.

В манипуляторы изменяемый аргумент лучше передать по ссылке. Для единообразия с std-шными + ссылки не бывают нулевыми -> не нужно производить дополнительных проверок.
Манипуляторы в операторы ввода/вывод а лучше передавать по константной ссылке -- они могут быть некопируемыми.

 switch (e->get_type()) {
        case EmployeeType::DEVELOPER:
            ostr << "Developer" << std::endl;
            break;
        case EmployeeType::SALES_MANAGER:
            ostr << "Sales Manager" << std::endl;
            break;
        }

Этим должен заниматься сам объект.

Не очень понятно, зачем тут нужен конструктор копирования.

5.5/10

Note: See TracTickets for help on using tickets.