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

Ваш аккаунт

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

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

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

cи структуры, файлы

65K
11 января 2011 года
neiromagick
3 / / 11.01.2011
Ребята поготи решить задачи
1.Различные цеха завода выпускают продукцию нескольких наименований. Сведения о выпущенной продукции включают:
- наименование;
- количество;
- номер цеха.
Для заданного цеха необходимо вывести количество выпущенных изделий по каждому наименованию в порядке убывания количества.
2.Составить программу записи в файл GS всех чисел файла FS, кратных 5, а в файл HS – всех отрицательных чисел, кратных 3.
спасибо большое
32K
12 января 2011 года
Rififi
54 / / 04.06.2008
Цитата: neiromagick

2.Составить программу записи в файл GS всех чисел файла FS, кратных 5, а в файл HS – всех отрицательных чисел, кратных 3.
спасибо большое




Код:
#include <locale>
#include <string>
#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <functional>

struct divide : public std::unary_function<int, bool>
{
    divide(int n) : n_(n) {}

    bool operator()(int i) const
    {
        return i % n_ == 0;
    }

    int n_;
};

template <typename T, typename F1, typename F2>
struct and2_ : public std::unary_function<T, bool>
{
    and2_(F1 f1, F2 f2) : f1_(f1), f2_(f2) {}

    bool operator()(const T val) const
    {
        return f1_(val) && f2_(val);
    }

    F1 f1_;
    F2 f2_;
};

template <typename T, typename F1, typename F2>
and2_<T, F1, F2> and2(F1 f1, F2 f2)
{ return and2_<T, F1, F2>(f1, f2); }

template <typename F>
void copy(std::istream& is, std::ostream& os, F f)
{
    is.clear();
    is.seekg(0);

    typedef std::istream_iterator<int> I;
    typedef std::ostream_iterator<int> O;

    std::remove_copy_if(I(is), I(), O(os, " "), std::not1(f));
    os << std::endl;
}

int main()
{
    setlocale(LC_ALL, "");

    std::ifstream ifs("FS");
    std::ofstream ofs("GS");

    if (!ifs || !ofs)
        return 0;

    copy(ifs, ofs, divide(5));
    copy(ifs, ofs,
        and2<int>(divide(3), std::bind2nd(std::less<int>(), 0))
        );

    return 0;
}

для примера содержимое файла FS:

-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 0 1 2 3 4 5 6 7 8 9 10

результат в GS:

-5 -10 0 5 10
-3 -6 -9
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог