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

Задача поиска множественных путей в графе - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преобразование hwnd в int http://www.cyberforum.ru/cpp-beginners/thread1494031.html
Знаю что тема уже заезжена и полно подобных обсуждений, но не смог применить к своему либо не подошло. Требуется получить из edit и записать в другой модуль числа. Написал код, он работает в идеальных условиях, но если ввести что то подобное "-12е4", то на выходе получу число "12". Написал ещё проверку на ввод не числа, но она работает если ввести только не числа, при вводе чисел и букв...
C++ Int выходит за пределы Добрый день!Проблема в следующем. Работаю с числами аля 13045652312. И нахожу остаток от деления. Но int не в ходит в пределы. Если пишу допустим k=pow(x,c)%a; то пишет,что перегруженная функция. если пишу,что k=a%c; И пишу допустим тип double то выдаёт ошибку. Подскажите как сделать? http://www.cyberforum.ru/cpp-beginners/thread1494025.html
Флаг skipws C++
Как работает флаг cin.unsetf(ios::skipws), какие именно разделители он пропускает? Почему если я хочу считать строку с пробелами, то считает только до пробела?
C++ Вывести на экран таблицу символов в формате «ASCII-код – символ»
Не понимаю, как делать это задание, уже весь интернет перерыл.
C++ Решение матричного уравнения AX=B http://www.cyberforum.ru/cpp-beginners/thread1493992.html
Помогите пожалуйста! Нужна программа для решения матричного уравнения AX=B
C++ Слова, состоящие только из гласных или только из согласных латинских букв Разработать алгоритм и программу. Вводится тест из заглавных и строчных латинских букв, пробелов. Количество символов в тексте не должно превышать 200. Слова разделяются пробелами. Определить и вывести: - слова, состоящие только из гласных латинских букв (a, e, i, o, u); - слова, состоящие только из согласных латинских букв. подробнее

Показать сообщение отдельно
Iakov
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 8
09.07.2015, 12:49  [ТС]
Добрый день.
По сути решаемой мной задачи приходится динамически дополнять часть многомерного массива. Задача очень объемная и по времени счета и по памяти. Поэтому по подсказке форумчан решил использовать OpenMP в VS2010 для распараллеливания.
Упрощенная схема куска программы такая

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
struct Route {}
typedef Route stR
typedef vector<Route> v_Route;
 
…
vector<v_Route> R;
 
for(i=0; i<N; i++)
{
    v_Route tmpR;
    R.push_back(tmpR);
}
 
…
// цикл для распараллеливания
for(int i=0;    i<N; i++) 
{
…
…
    for (int j=0; j< Z; j++)
    {
        …
        stR Route;      
        R[i].push_back(Route)
        …
    }
 
}
Количество добавленных структур Route зависит от i: Z=Z(i) и заранее не известно. Внутренность цикла j работает только с одним i. Причем, если заранее определить некоторое Z0 >= max(Z(i)), чтобы инициализировать вектор R вне цикла, то потребуется безумное количество памяти.
Вопрос: как можно безопасно добавлять элементы в массив при условии, что цикл I распараллелен.
Я попробовал самые элементарные вещи типа:
C++
1
2
3
4
5
6
#pragma omp parallel num_threads(15) 
{
    #pragma omp parallel for shared(TRoutes, NodeLegA, OArr)
    for(int i=0; i<NofNodes; i++)
    {
        …
(В shared перечислены внешние указатели на вектора, которые используются только для чтения)
Однако постоянно натыкаюсь на ошибки, связанные с памятью.
Кто-нибудь может подсказать «куда смотреть, что искать»?
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru