Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 6

Програма для диплома

02.06.2013, 18:26. Показов 1184. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте, как видно по теме мне нужно зделать програму для диплома програма должна находить 2 файлы с одинаковым размером разширением и названием но я даже не представляю как зделать такой поиск =( если вас не затруднит кинуть похожий код или дать сылку где есть статья в каторая раскажут как зделать ету програму и кстате програму буду делать на с++ builder так что если знаете какие компоненты можна использовать для вывода файлов напишите=) Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2013, 18:26
Ответы с готовыми решениями:

консольная програма, но ка сделать чтоб програма выполнялась, а консоль не открывалась??
Есть консольная програма, что недо убрать что добавить? чтоб програма выполняла свою функцию но консоль бы не открывалась...

Литература для диплома
Здравствуйте, ищу литературу, которая написана в строгом стиле для использования ее в дипломе (грубо говоря, ищу то, что можно проще...

Тема для диплома
Добрый день коллеги и друзья. Прошу вашей помощи по выбору темы для дипломного проекта. Заканчиваю обучение в ИТ факультете,...

6
Хочу в Исландию
 Аватар для skaa
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
04.06.2013, 17:58
Надо считать имена всех файлов куда-нибудь (в массив или в файл), остортировать этот список и пройти по нему сравнивая текущее имя со следующим.
1
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 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

######################################## ######################
Возможны мелкие недочеты
1
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 6
05.06.2013, 04:08  [ТС]
большое спасибо за помош =)
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
05.06.2013, 11:32
Цитата Сообщение от DiffEreD Посмотреть сообщение
закидываем все файлы с директории в массив
Теоретически при использование массива/хеша/мапа может не хватить памяти, т. к. у той же NTFS максимальное количество файлов https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{32}-1
0
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'
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
09.06.2013, 19:56
tekmzal, а вы хоть библиотеку буст скачали?

Добавлено через 21 секунду
А пролинковали к проекту?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2013, 19:56
Помогаю со студенческими работами здесь

Тема для диплома
Не знаю в какой раздел написать, поэтому написал сюда. Собственно вопрос в следующем... Сам я веб-программист, в следующем году надо...

Тема для диплома
Здравствуйте, дорогие форумчане! В этом учебном году мне нужно будет защищать дипломный проект и хотел бы попросить о помощи. Не могу...

Подключение к БД для диплома!
Добрый день. Ребят у меня такая ситуация: мне скинули прогу на для диплома и готовую базу данных к ней. Программист из меня пока не очень,...

Сайт для диплома
Здравствуйте, форумчане! В попытках написать диплом, зашел в тупик и поэтому нужен консультант/помощник, который ответит на мои вопросы....

Тема для диплома
Специальность Информационная безопасность АС. Сказали уже на 4 курсе определиться в обязательном порядке. Главное, чтобы была программная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru