1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

Тема в разделе "Вопросы новичков и не только", создана пользователем AlexMcSeven, 25 дек 2010.

  1. AlexMcSeven

    AlexMcSeven Гость

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

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

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

    Rififi Гость

    Репутация:
    0
    Код:
    #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;
    }
     
Загрузка...

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