parallel-programming/2/openmp/linux/openmp2linux.cpp

60 lines
1.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <omp.h>
using namespace std;
// Функция поиска файла
string find_file_with_string(const string& directory) {
string filename;
string search_string = "zxcv"; // Строка, которую нужно найти
// Получение списка файлов в каталоге
#pragma omp parallel
{
#pragma omp for
for (int i = 1; i <= 500; ++i) {
string filedir = directory + '/' + to_string(i) + ".txt";
// Поиск строки в файле
ifstream file(filedir);
if (file.is_open()) {
string line;
while (getline(file, line)) {
// line.find(search_string) - здесь мы ищем подстроку search_string в строке line
// Если подстрока не найдена, string::npos обозначает отсутствие позиции в строке. Значит, надо проверять
if (line.find(search_string) != string::npos) {
#pragma omp critical
{
filename = filedir;
}
break;
}
}
file.close();
}
}
}
// Возвращение первого найденного файла
if (filename != "") {
return "Файл найден!\n" + filename;
}
else {
return "Файл с искомой строкой не найден.";
}
}
int main() {
string directory = "/home/danila/500f/"; // Заменить на реальный путь к каталогу
string result = find_file_with_string(directory);
cout << result << endl;
return 0;
}