Форум программистов, компьютерный форум CyberForum.ru

Ошибки (в файле содержатся строки разной длины - записать их в выходной файл в порядке возрастания длины строки) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтение двумерного массива http://www.cyberforum.ru/cpp-beginners/thread896823.html
Нужно считать двумерный массив через scanf. Переменная через scanf считывается так: scanf ("%d", &n). Элемент одномерного массива можно считывать так: scanf ("%d", a); Элемент двумерного массива я попробовал считать так: scanf ("%d", a), но вылезла ошибка чтения. Изменил на такое scanf ("%d", &a) и все заработало. Почему так произошло? Как правильно считывать? От чего это зависит?
C++ Инициализация массива Есть массив: int d; Есть константа бесконечности (просто константа) inf, равная 2^30. Я попытался проинициализировать массив этой константой так: int d = {inf}; Проинициализировать не получилось, а массив заполнился нулями. Почему так? http://www.cyberforum.ru/cpp-beginners/thread896819.html
C++ исключительные ситуации
почему не работает?? как надо?? #include<iostream> #include<conio.h> using namespace std; template<class T> class Vector {
C++ Не работает цикл
Все время проблемы с заполнением строк символами, вот щас не работает цикл, в чем проблема? do { printf("Введите название 1-го файла:"); gets(name); fflush(stdin); }while(sizeof(name)>50 && printf("Error!max=50\n") || sizeof(name)<1 && printf("Error!\n")); Добавлено через 4 минуты
C++ Некорректный вывод http://www.cyberforum.ru/cpp-beginners/thread896784.html
Проблема очень странная, впервые с таким сталкиваюсь. Итак, вводятся сначала 3 числа через пробел (кол-во вводов, ширина открытки и высота) потом n-е кол-во раз вводятся ширина и высота конверта. Вывести нужно сначала кол-во конвертов, в которые влезет открытка, а потом их номера в порядке возрастания размера. #include <iostream> using namespace std; struct convert{ unsigned long long...
C++ Вычислить f(a) (2) Здравствуйте, форумчане! Помогите, пожалуйста, написать программы. Дано действительное а. Для функции f(a), график которой представлен на рисунке, вычислить f(a). Заранее спасибо. подробнее

Показать сообщение отдельно
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
10.06.2013, 01:52     Ошибки (в файле содержатся строки разной длины - записать их в выходной файл в порядке возрастания длины строки)
MGOU, переписал под C++03. Пробуйте...
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <set>
#include <iterator>
#include <fstream>
#include <string>
#include <algorithm>
 
struct comp 
{
    bool operator () (const std::string &a, const std::string &b)
    { return a.size() < b.size(); }
};
 
int main()
{
    std::fstream ifs("in.txt", std::ios::in), ofs("out.txt", std::ios::out);
    if (ifs.is_open() && ofs.is_open()) {
        std::multiset<std::string, comp> mset;
        std::string str;
        while(std::getline(ifs, str))
            mset.insert(str);
        std::copy(mset.begin(), mset.end(), std::ostream_iterator<std::string>(ofs, "\n"));
        ofs.close();
        ifs.close();
    } else
        std::cerr << "Unable to open file(s)\n";
    return 0;
}


Добавлено через 2 минуты
MGOU,
и строку
C++
1
std::multiset<std::string, bool(*)(std::string const&, std::string const&)> mset([](std::string const& str1, std::string const& str2){return str1.size() < str2.size();});
можно записать попроще, вот так:
C++
1
2
auto comp = [](std::string const& str1, std::string const& str2){return str1.size() < str2.size();};
std::multiset<std::string, decltype(comp)> mset(comp);
 
Текущее время: 14:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru