Форум программистов, компьютерный форум 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>... подробнее

Показать сообщение отдельно
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
04.06.2013, 22:51     Програма для диплома
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;
}
Вывод:
Список всех файлов в директории "D://Temp"(35 файлов):

desktop.ini 90 байт
error_demo.cpp 5187 байт
file_size.cpp 1065 байт
file_status.cpp 3474 байт
Jamfile.v2 729 байт
mbcopy.cpp 2624 байт
mbpath.cpp 2956 байт
mbpath.hpp 1221 байт
path_info.cpp 3486 байт
simple_ls.cpp 2485 байт
stems.cpp 795 байт
tchar.cpp 944 байт
xxx.txt 5 байт
bld.bat 192 байт
bld.sh 190 байт
Jamfile.v2 879 байт
setup.bat 344 байт
setup.sh 364 байт
xxx 5 байт
xxx.txt 5 байт
tut0.cpp 566 байт
tut1.cpp 592 байт
tut2.cpp 1043 байт
tut3.cpp 1597 байт
tut4.cpp 1796 байт
tut5.cpp 1600 байт
tut6a.cpp 1056 байт
tut6b.cpp 1169 байт
tut6c.cpp 906 байт
xxx 5 байт
xxx.txt 5 байт
xxx 5 байт
xxx.com 5 байт
xxx.txt 221 байт
xxx.txt 5 байт


Список одноименных файлов с одинаковым размером:

xxx 5 байт D://Temp/example/xxx
xxx 5 байт D://Temp/example/test/xxx
xxx 5 байт D://Temp/xxx

##############################################################

xxx.txt 5 байт D://Temp/Новая папка/xxx.txt
xxx.txt 5 байт D://Temp/example/xxx.txt
xxx.txt 5 байт D://Temp/example/test/xxx.txt
xxx.txt 5 байт D://Temp/example/test/1/xxx.txt

##############################################################
Возможны мелкие недочеты
 
Текущее время: 04:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru