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

Заполнение вектора данными с клавиатуры

08.12.2018, 13:58. Показов 1017. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, нашел в интернете вот такой код - реализация алгоритма Дейкстры.
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
#include <vector>
#include <queue>
#include <climits>
using namespace std;
 
// Data structure to store graph edges
struct Edge {
    int source, dest, weight;
};
 
// data structure to store heap nodes
struct Node {
    int vertex, weight;
};
 
// class to represent a graph object
class Graph
{
public:
    // construct a vector of vectors of Edge to represent an adjacency list
    vector<vector<Edge>> adjList;
 
    // Graph Constructor
    Graph(vector<Edge> const &edges, int N)
    {
        // resize the vector to N elements of type vector<Edge>
        adjList.resize(N);
 
        // add edges to the undirected graph
        for (Edge const &edge: edges)
        {
            // insert at end
            adjList[edge.source].push_back(edge);
        }
    }
};
 
void print_route(vector<int> const &prev, int i)
{
    if (i < 0)
        return;
 
    print_route(prev, prev[i]);
    cout << i << " ";
}
 
// Comparison object to be used to order the heap
struct comp
{
    bool operator()(const Node &lhs, const Node &rhs) const
    {
        return lhs.weight > rhs.weight;
    }
};
 
// Run Dijkstra's algorithm on given graph
void shortestPath(Graph const& graph, int source, int N)
{
    // create min heap and push source node having distance 0
    priority_queue<Node, vector<Node>, comp> min_heap;
    min_heap.push({source, 0});
 
    // set infinite distance from source to v initially
    vector<int> dist(N, INT_MAX);
 
    // distance from source to itself is zero
    dist[source] = 0;
 
    // boolean array to track vertices for which minimum
    // cost is already found
    vector<bool> done(N, false);
    done[0] = true;
 
    // stores predecessor of a vertex (to print path)
    vector<int> prev(N, -1);
 
    // run till min_heap is not empty
    while (!min_heap.empty())
    {
        // Remove and return best vertex
        Node node = min_heap.top();
        min_heap.pop();
 
        // get vertex number
        int u = node.vertex;
 
        // do for each neighbor v of u
        for (auto i : graph.adjList[u])
        {
            int v = i.dest;
            int weight = i.weight;
 
            // Relaxation step
            if (!done[v] && (dist[u] + weight) < dist[v])
            {
                dist[v] = dist[u] + weight;
                prev[v] = u;
                min_heap.push({v, dist[v]});
            }
        }
 
        // marked vertex u as done so it will not get picked up again
        done[u] = true;
    }
 
    for (int i = 1; i < N; ++i)
    {
        cout << "Path from vertex 0 to vertex " << i << " has minimum "
                "cost of " << dist[i] << " and the route is [ ";
        print_route(prev, i);
        cout << "]\n";
    }
}
 
// main function
int main()
{
    // initialize edges as per above diagram
    vector<Edge> edges =
    {
        {0, 1, 10}, {0, 4, 3}, {1, 2, 2}, {1, 4, 4}, {2, 3, 9},
        {3, 2, 7}, {4, 1, 1}, {4, 2, 8}, {4, 3, 2}
    };
 
    // Number of nodes in the graph
    int N = 5;
 
    // construct graph
    Graph graph(edges, N);
 
    shortestPath(graph, 0, N);
 
    return 0;
}
Здесь автор вручную инициализирует вектор значениями, как сделать так, чтобы это можно было делать с клавиатуры?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.12.2018, 13:58
Ответы с готовыми решениями:

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

Массив: Заполнение двумерного вектора с клавиатуры
Доброго времени суток. Хотелось бы узнать, возможно ли заполнение двумерного вектора с клавиатуры? Имеется ввиду ввод количества...

Рендомное заполнение вектора строковыми данными
Начал писать программу, остановился на самом начале. Надо заполнить вектор произвольными словами. написал вот это: var i:integer; ...

2
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
08.12.2018, 14:02
C++
1
void push_back (const value_type& val);
0
44 / 1 / 0
Регистрация: 26.04.2017
Сообщений: 54
08.12.2018, 14:32  [ТС]
SuperKir, если не сложно, можете написать пример?
C++
1
edges.push_back(Edge, (0,1,10))
Как-то так должно быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.12.2018, 14:32
Помогаю со студенческими работами здесь

Автоматическое заполнение ячеек данными, взятыми из одной ячейки с динамическими данными
Добрый день! Подскажите, есть ли решение моей задачи: В одной и той же ячейке постоянно (ежесекундно) меняется число (данные...

Заполнение двумерного вектора элементами из другого вектора
Приветствую. Есть пример заполнения двумерно вектора рандомным набором чисел, а как можно сделать заполнение этого двумерного вектора из...

Заполнить multimap данными вектора
#include &lt;iostream&gt; #include &lt;tuple&gt; #include &lt;vector&gt; #include &lt;map&gt; using namespace std;

Заполнение данными бд Клиенты
Есть две таблицы: Clients - со списком клиентов. (имя, телефон и т.п.) Orders - с заказами. Как сделать в таблице Orders внешний...

Проверка на заполнение данными...
Всем доброго времени суток. У меня вот такой вопрос, как правельней выполнить проверку на заполняемость данными полей ввода... т.е. если...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru