Можете ли вы помочь с этим языком программирования? .
Как и у Мистера Лэмба, у библиотекарей тоже есть свои проблемы с заемщиками. Люди не кладут книги на место.
должен. Вместо этого возвращенные книги хранятся на главном столе до тех пор, пока библиотекарь не освободится, чтобы заменить их в нужных местах
на полках. Даже для библиотекарей размещение нужной книги в нужном месте может занять очень много времени. Но с тех пор
многие библиотеки сейчас компьютеризированы, вы можете написать программу, чтобы помочь.
Когда заемщик берет или возвращает книгу, компьютер ведет запись названия. Периодически, библиотекари
запросит у вашей программы список книг, которые были возвращены, чтобы книги можно было вернуть в их правильное состояние.
места на полках. Прежде чем они будут возвращены на полки, возвращенные книги сортируются по автору, а затем
заголовок с использованием последовательности сортировки ASCII. Ваша программа должна выводить список возвращенных книг в том же порядке
как они должны появиться на полках магазинов. Для каждой книги ваша программа должна сообщить библиотекарю, какая книга (в том числе
те, что ранее были отложены) уже находится на полке, перед которой должна идти возвращенная книга.
Ввод
Во-первых, будет перечислен фонд библиотеки, по одной книге на строку, в произвольном порядке. Изначально они все находятся на
полки. Нет двух книг с одинаковым названием. Формат каждой строки будет следующим:
"название" по автору
Конец списка акций будет отмечен строкой, содержащей только слово:
КОНЕЦ
Вслед за биржевым списком появится серия записей о книгах, взятых взаймы и возвращенных, а также запросы от библиотекарей
за помощь в пополнении запасов на полках. Каждая запись будет отображаться в одной строке в одном из следующих форматов:
Заимствовать "название"
Вернуть "титул"
ОТКЛАДЫВАТЬ В ДОЛГИЙ ЯЩИК
Список будет закончен строкой, содержащей только слово:
КОНЕЦ
Выход
Каждый раз, когда появляется команда SHELVE, ваша программа должна выводить серию инструкций для библиотекаря,
по одному на строку, в формате:
Поставьте "title1" после "title2"
или, для особого случая, когда книга является первой в коллекции:
Поставьте "титул" первым
После набора инструкций для каждой полки выведите строку, содержащую только слово:
КОНЕЦ
Предположения &амп; ограничения
1. Заголовок более 80 символов.
2. Автор более 80 символов.
3. Название не будет содержать двойных кавычек (") характер.
Входной Сигнал Образца
"Кентерберийские рассказы" Чосера, г.
"Алгоритмы" Седжвика, Р.
"Язык программирования Си" Кернигана Б. и Ричи Д.
КОНЕЦ
Заимствование "алгоритмов"
Заимствование "языка программирования Си"
Алгоритмы возврата ""
RETURN "язык программирования C"
ОТКЛАДЫВАТЬ В ДОЛГИЙ ЯЩИК
КОНЕЦ
Выход для входного сигнала образца
Поставьте "язык программирования Си" после "Кентерберийских сказок"
Поставьте "алгоритмы" после "языка программирования Си"
КОНЕЦ
Что я уже пробовал:
#include <stdio.h> #include <iostream> #include <string.h> namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _CharT, typename _Traits> class basic_filebuf : public basic_streambuf<_CharT, _Traits> { public: typedef _CharT char_type; typedef _Traits traits_type; typedef typename traits_type::int_type int_type; typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; typedef basic_streambuf<char_type, traits_type> __streambuf_type; typedef basic_filebuf<char_type, traits_type> __filebuf_type; typedef basic_file<char>_file_type; typedef typename traits_type::state_type __state_type; typedef codecvt<char_type, char, __state_type> __codecvt_type; friend class ios_base; protected: __c_lock _M_lock; __file_type _M_file; ios_base::openmode _M_mode; __state_type _M_state_beg; __state_type _M_state_cur; __state_type _M_state_last; char_type* _M_buf; size_t _M_buf_size; bool _M_buf_allocated; bool _M_reading; bool _M_writing; char_type _M_pback; char_type* _M_pback_cur_save; char_type* _M_pback_end_save; bool _M_pback_init; const __codecvt_type* _M_codecvt; char* _M_ext_buf; streamsize _M_ext_buf_size; const char* _M_ext_next; char* _M_ext_end; void _M_create_pback() { if (!_M_pback_init) { _M_pback_cur_save = this->gptr(); _M_pback_end_save = this->egptr(); this->setg(&_M_pback, &_M_pback, &_M_pback + 1); _M_pback_init = true; } } void _M_destroy_pback() throw() { if (_M_pback_init) { _M_pback_cur_save += this->gptr() != this->eback(); this->setg(_M_buf, _M_pback_cur_save, _M_pback_end_save); _M_pback_init = false; } } public: basic_filebuf(); virtual ~basic_filebuf() { this->close(); } bool is_open() const throw() { return _M_file.is_open(); } __filebuf_type* open(const char* __s, ios_base::openmode __mode); #if __cplusplus >= 201103L __filebuf_type* open(const std::string& __s, ios_base::openmode __mode) { return open(__s.c_str(), __mode); } #endif __filebuf_type* close(); protected: void _M_allocate_internal_buffer(); void _M_destroy_internal_buffer() throw(); virtual streamsize showmanyc(); virtual int_type underflow(); virtual int_type pbackfail(int_type __c = _Traits::eof()); virtual int_type overflow(int_type __c = _Traits::eof()); bool _M_convert_to_external(char_type*, streamsize); virtual __streambuf_type* setbuf(char_type* __s, streamsize __n); virtual pos_type seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode = ios_base::in | ios_base::out); virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode = ios_base::in | ios_base::out); pos_type _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state); int _M_get_ext_pos(__state_type &__state); virtual int sync(); virtual void imbue(const locale& __loc); virtual streamsize xsgetn(char_type* __s, streamsize __n); virtual streamsize xsputn(const char_type* __s, streamsize __n); bool _M_terminate_output(); void _M_set_buffer(streamsize __off) { const bool __testin = _M_mode & ios_base::in; const bool __testout = (_M_mode & ios_base::out || _M_mode & ios_base::app); if (__testin && __off > 0) this->setg(_M_buf, _M_buf, _M_buf + __off); else this->setg(_M_buf, _M_buf, _M_buf); if (__testout && __off == 0 && _M_buf_size > 1 ) this->setp(_M_buf, _M_buf + _M_buf_size - 1); else this->setp(0, 0); } }; template<typename _CharT, typename _Traits> class basic_ifstream : public basic_istream<_CharT, _Traits> { public: typedef _CharT char_type; typedef _Traits traits_type; typedef typename traits_type::int_type int_type; typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; typedef basic_filebuf<char_type, traits_type> __filebuf_type; typedef basic_istream<char_type, traits_type> __istream_type; private: __filebuf_type _M_filebuf; public: basic_ifstream() : __istream_type(), _M_filebuf() { this->init(&_M_filebuf); } explicit basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) : __istream_type(), _M_filebuf() { this->init(&_M_filebuf); this->open(__s, __mode); } #if __cplusplus >= 201103L explicit basic_ifstream(const std::string& __s, ios_base::openmode __mode = ios_base::in) : __istream_type(), _M_filebuf() { this->init(&_M_filebuf); this->open(__s, __mode); } #endif ~basic_ifstream() { } __filebuf_type* rdbuf() const { return const_cast<__filebuf_type*>(&_M_filebuf); } bool is_open() { return _M_filebuf.is_open(); } bool is_open() const { return _M_filebuf.is_open(); } void open(const char* __s, ios_base::openmode __mode = ios_base::in) { if (!_M_filebuf.open(__s, __mode | ios_base::in)) this->setstate(ios_base::failbit); else this->clear(); } #if __cplusplus >= 201103L void open(const std::string& __s, ios_base::openmode __mode = ios_base::in) { if (!_M_filebuf.open(__s, __mode | ios_base::in)) this->setstate(ios_base::failbit); else this->clear(); } #endif void close() { if (!_M_filebuf.close()) this->setstate(ios_base::failbit); } }; template<typename _CharT, typename _Traits> class basic_ofstream : public basic_ostream<_CharT,_Traits> { public: typedef _CharT char_type; typedef _Traits traits_type; typedef typename traits_type::int_type int_type; typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; typedef basic_filebuf<char_type, traits_type> __filebuf_type; typedef basic_ostream<char_type, traits_type> __ostream_type; private: __filebuf_type _M_filebuf; public: basic_ofstream(): __ostream_type(), _M_filebuf() { this->init(&_M_filebuf); } explicit basic_ofstream(const char* __s, ios_base::openmode __mode = ios_base::out|ios_base::trunc) : __ostream_type(), _M_filebuf() { this->init(&_M_filebuf); this->open(__s, __mode); } #if __cplusplus >= 201103L explicit basic_ofstream(const std::string& __s, ios_base::openmode __mode = ios_base::out|ios_base::trunc) : __ostream_type(), _M_filebuf() { this->init(&_M_filebuf); this->open(__s, __mode); } #endif ~basic_ofstream() { } __filebuf_type* rdbuf() const { return const_cast<__filebuf_type*>(&_M_filebuf); } bool is_open() { return _M_filebuf.is_open(); } bool is_open() const { return _M_filebuf.is_open(); } void open(const char* __s, ios_base::openmode __mode = ios_base::out | ios_base::trunc) { if (!_M_filebuf.open(__s, __mode | ios_base::out)) this->setstate(ios_base::failbit); else this->clear(); } #if __cplusplus >= 201103L void open(const std::string& __s, ios_base::openmode __mode = ios_base::out | ios_base::trunc) { if (!_M_filebuf.open(__s, __mode | ios_base::out)) this->setstate(ios_base::failbit); else this->clear(); } #endif void close() { if (!_M_filebuf.close()) this->setstate(ios_base::failbit); } }; template<typename _CharT, typename _Traits> class basic_fstream : public basic_iostream<_CharT, _Traits> { public: typedef _CharT char_type; typedef _Traits traits_type; typedef typename traits_type::int_type int_type; typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; typedef basic_filebuf<char_type, traits_type> __filebuf_type; typedef basic_ios<char_type, traits_type> __ios_type; typedef basic_iostream<char_type, traits_type> __iostream_type; private: __filebuf_type _M_filebuf; public: basic_fstream() : __iostream_type(), _M_filebuf() { this->init(&_M_filebuf); } explicit basic_fstream(const char* __s, ios_base::openmode __mode = ios_base::in | ios_base::out) : __iostream_type(0), _M_filebuf() { this->init(&_M_filebuf); this->open(__s, __mode); } #if __cplusplus >= 201103L explicit basic_fstream(const std::string& __s, ios_base::openmode __mode = ios_base::in | ios_base::out) : __iostream_type(0), _M_filebuf() { this->init(&_M_filebuf); this->open(__s, __mode); } #endif ~basic_fstream() { } __filebuf_type* rdbuf() const { return const_cast<__filebuf_type*>(&_M_filebuf); } bool is_open() { return _M_filebuf.is_open(); } bool is_open() const { return _M_filebuf.is_open(); } void open(const char* __s, ios_base::openmode __mode = ios_base::in | ios_base::out) { if (!_M_filebuf.open(__s, __mode)) this->setstate(ios_base::failbit); else this->clear(); } #if __cplusplus >= 201103L void open(const std::string& __s, ios_base::openmode __mode = ios_base::in | ios_base::out) { if (!_M_filebuf.open(__s, __mode)) this->setstate(ios_base::failbit); else this->clear(); } #endif void close() { if (!_M_filebuf.close()) this->setstate(ios_base::failbit); } return 0; }
jeron1
Какое отношение к вашей проблеме имеет опубликованный вами код?