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

Перевести vector во что-нибудь другое - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ программа высчитывания хода ферзя http://www.cyberforum.ru/cpp-beginners/thread289023.html
Помогите дописать программу ошибка в функции FindWays. Программа должна рассчитывать куда может ходить ферзь и создавать дерево уже на готовой и проигранной партии то есть есть 2 документа хода 1 откуда 2 куда . Ферзь должен знать при каком возможном или ходе он должен срубить другую фигуру. И я не знаю как написать поиск возможностей срубания ферзя то есть эти ходы надо вывости в итоге...
C++ Выходной exe файл Привет. собственно учусь на 1м курсе... пишем программки в компиляторах... значит когда-то там мы теоретически сможем создать какую-то программку. Хотелось бы узнать кое-что. Допустим я написал простенькую программу. Если нажать 1 выведет это, нажать то - выведет то. Как получить exe файл, чтобы я его смог запустить с любого другого компьютера? Как кароче получить конечную версию программы,... http://www.cyberforum.ru/cpp-beginners/thread289004.html
Найти среднее арифметическое каждого столбца матрицы C++
Доброго времени суток. Может кто-нибудь встречался с подобной задачей. Задача. Дана действительная матрица A размером n*m. Найти среднее арифметическое каждого столбца матрицы. Для нахождения суммы элементов и среднего арифметического использовать подпрограмму. Проблема у меня не столько с программированием сколько с пониманием сути самой задачи. Правильно ли я понимаю: здесь нужно...
C++ Повторение символа
Как сделать так чтобы при вводе с клавииатуры некоторые симовлы разрешено было повторять определенное количество раз? Т.е. : "I" разрешено повторять 3 раза "V" - 1 раз и если кол-во раз превышено выводить сообщение об ошибке
C++ Сумма целых чисел http://www.cyberforum.ru/cpp-beginners/thread288958.html
Есть некоторый набор целых чисел, нужно посчитать сумму. Формат входного файла: N1 – первое число … Nn – последнее число Формат выходного файла: S – одно целое число, являющееся суммой входных чисел.
C++ Проверрка ввода римских чисел Нужна проверка ввода римских чисел в калькуляторе Калькулятор готов, а вот как проверку ввода организовать не знаю подробнее

Показать сообщение отдельно
Wolfed
2 / 2 / 1
Регистрация: 15.02.2011
Сообщений: 70
05.05.2011, 03:01     Перевести vector во что-нибудь другое
Здравствуйте помогите в следующем, есть программа написанная через vector,может кто помочь переписать ее во что-нибудь другое там в какую-нибудь структуру,например list..Программа ищет мосты. Входные данные -
Первая цифра - кол-во вершин
Вторая цифра - кол-во ребер
Потом Двойки чисел, показывающие с какой вершины в какую есть ребро
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
#include <stdio.h> 
#include <vector> 
#include <algorithm> 
#include <conio.h>
struct list
{ list *next;}
using namespace std; 
      
    typedef vector<int> VInt; 
    typedef vector<VInt> VVInt; 
    typedef VInt::iterator VIter; 
    typedef pair<int, int> PInt; 
    typedef vector<PInt> VPInt; 
    typedef vector<VPInt> VVPInt; 
    typedef VPInt::iterator VPIter; 
      
    VVInt graph; 
    VInt colors, parents, enter, leave, low, bcc; 
    int myTime = 0; 
    int newIndex = 0; 
      
    /* 
     * Поиск в глубину, выполняющий вычисление enter, leave и low 
 */
    void visitLow(int u) { 
       colors[u] = 1; 
       low[u] = enter[u] = ++myTime; 
         
       for(VIter it = graph[u].begin(); it != graph[u].end(); it++) 
          if(colors[*it] == 0) { 
             parents[*it] = u; 
         visitLow(*it); 
             low[u] = min(low[u], low[*it]); 
          } else if(colors[*it] == 1 && *it != parents[u]) { 
             low[u] = min(low[u], enter[*it]); 
          } 
         
       colors[u] = 2; 
       leave[u] = ++myTime;       
    } 
      
/* 
     * Второй поиск в глубину, присвающий идентификаторы bcc 
     */
    void visitBCC(int u) { 
       for(VIter it = graph[u].begin(); it != graph[u].end(); it++) 
          if(parents[*it] == u) { 
             bcc[*it] = (low[*it] < enter[u]) ? bcc[u] :         // Дочернее ребро эквивалентно текущему 
                        (low[*it] > enter[u]) ? -1 :             // Дочернее ребро есть мост 
                    (newIndex++);                            // Дочернее ребро лежит в новой компоненте 
             visitBCC(*it);          
          } 
    } 
  
    /* 
     * Получение номера BCC, которому принадлежит ребро, или -1, если это мост 
     * (u, v) действительно должно быть ребром, иначе возвращенный результат не имеет смысла 
 */
     int getBCC(int u, int v) { 
        return bcc[(enter[u] > enter[v]) ? u : v]; 
     } 
      
    /* 
066  * На входе: числа n и m, затем m описаний ребер 
067  * На выходе: список мостов, затем списки ребер в каждой компоненте 
068  */
    int main() { 
       int n, m, i; 
     
       // Прочитаем граф 
       scanf("%d%d", &n, &m); 
       graph.resize(n); 
       while(m--) { 
      int from, to; 
          scanf("%d%d", &from, &to); 
          graph[from - 1].push_back(to - 1); 
          graph[to - 1].push_back(from - 1); 
       } 
         
       // Запустим первый поиск (вычислим enter и low) 
       colors.assign(n, 0); 
       parents.assign(n, -1); 
       enter.resize(n); 
       leave.resize(n); 
       low.resize(n); 
   for(i = 0; i < n; i++) 
          if(colors[i] == 0) 
             visitLow(i); 
               
       // Запустим второй поиск (определение идентификаторов bcc) 
       // Второй поиск запускается "по следам" первого, 
   // то есть проходит по уже найденному дереву 
       bcc.assign(n, -1); 
       for(i = 0; i < n; i++) 
          if(parents[i] == -1) 
             visitBCC(i);    
         
   // Выведем результат 
       VPInt bridges; 
       VVPInt comps(newIndex); 
       for(i = 0; i < n; i++) 
          for(VIter it = graph[i].begin(); it != graph[i].end(); it++) 
             if(i < *it) { 
                int id = getBCC(i, *it); 
                ((id == -1) ? bridges : comps[id]).push_back(PInt(i, *it)); 
             } 
         
       printf("Bridges: "); 
       for(VPIter bridge = bridges.begin(); bridge != bridges.end(); bridge++) 
          printf("(%d, %d) ", bridge->first + 1, bridge->second + 1); 
       printf("\n"); 
         
       for(i = 0; i < newIndex; i++) { 
          printf("Component %d: ", i); 
          for(VPIter edge = comps[i].begin(); edge != comps[i].end(); edge++) 
             printf("(%d, %d) ", edge->first + 1, edge->second + 1); 
          printf("\n");
         
}
       _getch();
}
Добавлено через 6 минут
Могу описать структуру лист:

C++
1
2
3
4
struct list
{ list *next,*prev;
int data;
};
Подпрограмма добавления в list:
C++
1
2
3
4
5
6
7
8
9
void add(list *l, int data)
{  list *tmp=l->next;
l->next=new list;
l->next->prev=l;
l->next->next=tmp;
l->next->data=data;
 
tmp->prev=l->next
}
Подпрограмма создания нового list:
C++
1
2
3
4
5
6
7
8
9
10
11
list *new_list()
{
list *l=new list;
l->data=0;
l->next=l;
l->prev=l;
 
return l;}
 
list *new_list();
void add(list *,int);
Добавлено через 1 час 11 минут
Помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru