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

Програма для диплома - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ random http://www.cyberforum.ru/cpp-beginners/thread888343.html
R=random(101)/100.; Это генератор случайных чисел (0;1)?
C++ Одномерные массивы (векторы): вычислить и напечатать значения функции Y= Ak2 + Ak - sin Ak, где элементы массива А вводятся с клавиатуры Вычислить и напечатать значения функции Y= Ak2 + Ak - sin Ak где элементы массива А вводятся с клавиатуры . http://www.cyberforum.ru/cpp-beginners/thread888341.html
C++ Цикл do while (вывести на печать значения функции z=sin(x)+cos(x),находящиеся в интервале)
Вывести на печать значения функции z=sin(x)+cos(x),находящиеся в интервале (-0,3 ; 0,7) для x изменяющегося на отрезке с шагом 0,5.
C++ Поиск отрицательных чисел
Добрый вечер, помогите с задачкой. Ввести с клавиатуры и напечатать модули N чисел; если введено отрицательное число, ввод и печать прекратить.
C++ Корректный ввод с cin http://www.cyberforum.ru/cpp-beginners/thread888333.html
Пусть в программе есть оператор cin >> n, где n типа int, а пользователь вводит набор символов Как отследить это, не выдавая ошибку, и не зацикливаясь?
C++ вывод слов в алфавитном порядке /*Написать программу, которая выполняет следующие действия: • вводит с клавиатуры данные в массив, состоящий из десяти структур; записи должны быть размещены по алфавиту; • выводит на дисплей фамилии работников, чей стаж работы в организации превышает значение, введенное с клавиатуры; • если таких работников нет, вывести на дисплей соответствующее сообщение.*/ #include <iostream>... подробнее

Показать сообщение отдельно
tekmzal
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 6
09.06.2013, 19:52  [ТС]     Програма для диплома
Цитата Сообщение от DiffEreD Посмотреть сообщение
tekmzal, не знаю какими именно методами вы воспользуетесь для своей программы, но вот я вам сделал на boost. Принцип такой же как и рекомендовали выше - закидываем все файлы с директории в массив, сортируем и выводим те которые нам надо. Код:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <functional>
#include <windows.h>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>
 
namespace fs = boost::filesystem;
 
typedef std::pair<fs::path, boost::uintmax_t> data;
 
void get_all_files(const fs::path& p, std::vector<data>& files)
{
    for (fs::directory_iterator pos(p); pos != fs::directory_iterator(); ++pos)
    {
        if (fs::is_directory(*pos)) get_all_files(*pos, files);
        else
            files.push_back(std::make_pair(*pos, fs::file_size(*pos)));
    }
}
 
int main(){
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
    
    fs::path directory_path("D://Temp");
    std::vector<data> files;
    get_all_files(directory_path, files);
    if (!files.empty())
    {
        std::cout<<"Список всех файлов в директории "<<directory_path<<"("<<files.size()<<" файлов):\n\n";
        for (const auto& file : files) 
        {
            std::cout<<std::setw(20)<<std::left<<file.first.filename().generic_string();
            std::cout<<std::left<<file.second<<" байт\n";
        }
    
        std::sort(files.begin(), files.end(), [](const data& p1, const data& p2)
        {
            if (p1.first.filename().generic_string() == p2.first.filename().generic_string())
                return p1.second < p2.second;
            else
                return p1.first.filename().generic_string() < p2.first.filename().generic_string();
        });
        
        std::cout<<"\n\nСписок одноименных файлов с одинаковым размером:\n\n";
        data check = files.front();
        bool match = false;
        std::for_each(files.begin()+1, files.end(), [&](const data& d)
        {
            if (check.first.filename() == d.first.filename() && check.second == d.second)
            {
                match = true;
                std::cout<<std::setw(20)<<std::left<<d.first.filename().generic_string();
                std::cout<<std::left<<d.second<<" байт ";
                std::cout<<std::setw(10)<<std::left<<d.first.generic_string()<<'\n';
            }
            else
            {
                if (match)
                {
                    std::cout<<std::setw(20)<<std::left<<check.first.filename().generic_string();
                    std::cout<<std::left<<check.second<<" байт ";
                    std::cout<<std::setw(10)<<std::left<<check.first.generic_string()<<"\n\n";
                    std::cout<<"##############################################################\n\n";
                }
                match = false;
                check = d;
            }
        });
    }
    else
        std::cout<<"Файлов в директории "<<directory_path<<" нет.";
    
    std::cout<<'\n';
    return 0;
}
Вывод:Возможны мелкие недочеты
выбивает ошибку [C++ Error] Unit1.cpp(14): E2209 Unable to open include file 'boost/filesystem/path.hpp'
[C++ Error] Unit1.cpp(29): E2090 Qualifier 'boost' is not a class or namespace name
[C++ Error] Unit1.cpp(29): E2282 Namespace name expected
[C++ Error] Unit1.cpp(31): E2316 'path' is not a member of 'fs'
 
Текущее время: 14:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru