Написать программу, которая читает строки из файла в массив строк

Тема в разделе "C/C++/C#", создана пользователем AlexMcSeven, 25 дек 2010.

  1. AlexMcSeven

    AlexMcSeven Гость

    В файле хранятся названия блюд. Каждая строка отдельное название. Написать программу, которая читает строки из файла в массив строк, и выводит на экран названия блюд, отсортировав их: а) по убыванию их длины, б) в алфавитном порядке, в) в порядке, обратном алфавитному.

    вот собственно и сама задача...

    помогите кто может...
     
  2. Rififi

    Rififi Гость

    Код (C++):
    #include <string>
    #include <vector>
    #include <algorithm>
    #include <functional>
    #include <locale>
    #include <iostream>
    #include <fstream>
    #include <iterator>
    #include <sstream>

    /*
    В файле хранятся названия блюд. Каждая строка отдельное название.
    Написать программу, которая читает строки из файла в массив строк, и выводит на экран названия блюд, отсортировав их:
    а) по убыванию их длины, б) в алфавитном порядке, в) в порядке, обратном алфавитному.
    */


    template <typename T>
    struct length : public std::binary_function<T, T, bool>
    {
    bool operator()(const T& s1, const T& s2) const
    {
    return s2.size() < s1.size();
    }
    };

    template <template <typename> class _Comparer>
    void print(std::vector<std::string> v)
    {
    std::sort(v.begin(), v.end(), _Comparer<std::string>());

    typedef std::ostream_iterator<std::string> O;
    std::copy(v.begin(), v.end(), O(std::cout, "\n"));

    std::cout << std::endl;
    }

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

    std::ifstream ifs("dishes.txt");

    std::vector<std::string> v;
    std::string s;

    while (std::getline(ifs, s))
    v.push_back(s);

    print<length>(v);
    print<std::less>(v);
    print<std::greater>(v);

    return 0;
    }
     
Загрузка...

Поделиться этой страницей