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

Почему вместо вектора 2х5 выходит 2х9 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Массив. Программа для определения максимального подъема 100-километровой автотрассы. http://www.cyberforum.ru/cpp-beginners/thread561874.html
Здравствуйте! Вот написал программу, но не устраивает меня тем, что нужно выдавать самый длинный подъем, так и есть, но вот как написать от какого элемента начался подъем и каким закончился именно в массиве, то есть его индекс. А в целом задача этой программы: Известна высота над уровнем моря каждого километра 100-километровой автотрассы. Определить, на каком расстоянии от начала автотрассы...
C++ Различия компиляции Degug и Release версий Всем доброго времени суток, написал парсер с использованием стека, компилирую в Degug версии - все работает корректно как и ожидается, компилирую в Release версии - выдает полный бред. Если кто-то сталкивался с этой проблеммой, будте добры объясните. Файл с проектом Visual Studio 2008 прилагаю http://www.cyberforum.ru/cpp-beginners/thread561859.html
C++ Как написать проверку на "циферность"
Хочу сделать такое: if (Переменная - не цифра) { cout << "Введите переменную еще раз"; } Знаю, есть функция isdigit(), но тут проблема - эта функция проверяет числа до 256, а это не годится, мне нужно больше :)
C++ Хэширование строк
Доброе время суток! Пользователь вводит строку, она записывается в массив (если он не переполнен); Вычисляется её хэш адрес по алгоритму свёртка 2; Если этот адрес в хэш таблице занят, выполняется повторное хэширование простым числом; Если и тут занято, то номер строки добавляется в массив для синонимов (для последующего линейного поиска) Привожу исходный код #include <iostream>...
C++ C++ декомпилляция и защита приложений http://www.cyberforum.ru/cpp-beginners/thread561844.html
Всем привет, очень удивлен, что нет такой темы, но все же: 1) Есть ли возможность декомпилляции приложений написанных на С++? или как минимум дизассембирования 2) Если в п.1 ответ да, то есть ли возможность защитить свои константы?
C++ Консольная РПГ. (MUD-подобная). Здравствуйте. Недавно я начал изучать C++. И для хорошего усвоения пройденного материала решил написать консольную MUD-подобную РПГ. Кто не знаком с таковыми, и лень читать на wiki, объясню На примере: Вы очнулись в страшной темной комнате. Что предпринять? 1. Выйти через дверь. 2. Вылезти через окно. Так вот, все это дело что написано курсивом отображается в консоли. Человек вводит... подробнее

Показать сообщение отдельно
Lopster92
3 / 3 / 0
Регистрация: 25.12.2009
Сообщений: 49
30.04.2012, 04:25  [ТС]     Почему вместо вектора 2х5 выходит 2х9
Написал функцию для поиска кротчайшего пути из вектора. Компилятор ругается на последнюю строчку:
return *(shortest->first);
"conversion from 'std::vector<point, std::allocator<point> >' to non-scalar type 'pathes_v' requested"

Попробовал даже приведение типов явное сделать, но нифига((

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
81
82
83
84
#include <iostream>
#include <cstdio>
#include <vector>
#include <numeric>
 
 
 
struct point {
    int dist, way;
};
 
typedef std::vector<point> path_v;
typedef std::vector<path_v> pathes_v;
 
pathes_v getShortest(pathes_v & psv);
 
int main() {
 
    const size_t LIMIT_P = 5;
    const size_t LIMIT_PS = 2;
 
    pathes_v psv;
    for(size_t j=0; j < LIMIT_PS; j++){
        path_v pv;
        for(size_t i=j; i < LIMIT_P; i++) {
            point p = {i, i+1};
            pv.push_back(p);
        }
        psv.push_back(pv);
    }
 
    path_v::iterator pv_it;
    pathes_v::iterator psv_it;
 
    for(psv_it = psv.begin(); psv_it != psv.end(); psv_it++) {
        for(pv_it = (*psv_it).begin(); pv_it != (*psv_it).end(); pv_it++) {
            std::cout << "Dist: " << (*pv_it).dist << "; Way: "<< (*pv_it).way << ";\n";
        }
    }
 
    pathes_v shortest = getShortest(psv);
 
    return 0;
}
 
 
pathes_v getShortest(pathes_v & psv) {
    //=====================Accumulate summ=========================
 
    size_t sum = 0;
    std::vector<std::pair<pathes_v::iterator, size_t > > summs;
    for(pathes_v::iterator its = psv.begin(); its != psv.end(); its++) {
        for(path_v::iterator it = its->begin(); it != its->end(); it++) {
            sum += (*it).dist;
            std::cout << sum << std::endl;
        }
        std::pair<pathes_v::iterator, size_t> pair(its, sum);
        summs.push_back(pair);
    }
 
    // or
 
    /*
    std::vector<std::pair<pathes_v::iterator, size_t > > summs;
    for(pathes_v::iterator its = psv.begin(); its != psv.end(); its++) {
        size_t sum = std::accumulate( (its->begin())->dist, (its->end())->dist, 0);
        std::cout << sum << std::endl;
        std::pair<pathes_v::iterator, size_t> pair(its, sum);
        summs.push_back(pair);
    }
    */
 
    //=====================Find shortest way=========================
 
    std::vector<std::pair<pathes_v::iterator, size_t > >::iterator shortest = summs.begin();
    for(std::vector<std::pair<pathes_v::iterator, size_t > >::iterator it = summs.begin();
            it != summs.end(); it++) {
        if(it->second < shortest->second) {
            shortest = it;
        }
    }
 
    return *(shortest->first); // returns  *(pathes_v::iterator) , it means "pathes_v"
}
 
Текущее время: 14:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru