Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C/C++] Переписать код

43K
22 мая 2009 года
InterWay
17 / / 21.05.2009
Условие:
Для книг, хранящихся в библиотеке, задаются:
- регистрационный номер книги;
- автор;
- название;
- год издания;
- издательство;
- количество страниц.
Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года.

Помогите, пожалуйста, переписать из Visual С++ на Borland C++ 5.02

Код:
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream>
#include <locale>
#define BOOST_ASSIGN_MAX_PARAMS 6
#include <boost/assign/list_of.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
using namespace boost::assign;
namespace lm = boost::lambda;
struct lib_record
{
    lib_record(
        size_t id, const std::string& author, const std::string& title,
        size_t year, const std::string& publisher, size_t pages) :        
    id_(id), author_(author), title_(title),
    year_(year), publisher_(publisher), pages_(pages)
    {
    }
    size_t id_;
    std::string author_;
    std::string title_;
    size_t year_;
    std::string publisher_;
    size_t pages_;
};
typedef std::vector<lib_record> library;
int main()
{
    library lib = list_of<lib_record>
        (1, "Петя", "Title 1", 2000, "Publisher 1", 100)
        (1, "Маша", "Title 3", 2002, "Publisher 2", 300)
        (1, "Вася", "Title 2", 2001, "Publisher 3", 200)        
        (1, "Катя", "Title 4", 1999, "Publisher 1", 400)
        ;
   
    // Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года.
    const size_t year = 2000; // выводим всё изданное после 2000 года
    library oth;
    setlocale(LC_ALL, ".1251");
    std::remove_copy_if(
        lib.begin(), lib.end(), std::back_inserter(oth),
        &lm::_1 ->* &lib_record::year_ <= year
        );
    std::sort(oth.begin(), oth.end(),
        &lm::_1 ->* &lib_record::author_ < &lm::_2 ->* &lib_record::author_
        );
    std::for_each(oth.begin(), oth.end(),
        std::cout << &lm::_1 ->* &lib_record::author_ << ": " << &lm::_1 ->* &lib_record::title_ << "\n"
        );
    return 0;
}
9
23 мая 2009 года
Lerkin
3.0K / / 25.03.2003
На визуальнике, типа сам писал? ;) Как, работает?
43K
23 мая 2009 года
InterWay
17 / / 21.05.2009
Конечно же не сам...))) и без понятия как работает...( Это же я)

Используемые средства:
Visual Studio 2008
Boost C++ Library
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог