#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;
}
cи структуры, файлы
1.Различные цеха завода выпускают продукцию нескольких наименований. Сведения о выпущенной продукции включают:
- наименование;
- количество;
- номер цеха.
Для заданного цеха необходимо вывести количество выпущенных изделий по каждому наименованию в порядке убывания количества.
2.Составить программу записи в файл GS всех чисел файла FS, кратных 5, а в файл HS – всех отрицательных чисел, кратных 3.
спасибо большое
Цитата: neiromagick
2.Составить программу записи в файл GS всех чисел файла FS, кратных 5, а в файл HS – всех отрицательных чисел, кратных 3.
спасибо большое
Код:
для примера содержимое файла 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