Форум программистов, компьютерный форум, киберфорум
Наши страницы

Обход вершин графа в глубину стеком - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка функции сложения http://www.cyberforum.ru/cpp-beginners/thread890441.html
Здравствуйте, помогите пожалуйста с задачей в C++ Builder Написать перегруженные функции и основную программу, которая их вызывает. а) для сложения целых чисел; б) для сложения комплексных чисел....
C++ Нужно перевести римские цифры в арабские Дан текст из заглавных латинских букв, за которым следует пробел. Определить, является ли этот текст правильной записью римскими цифрами целого числа от 1 до 999, и, если является, вывести на экран... http://www.cyberforum.ru/cpp-beginners/thread890440.html
C++ Дан двоичный фаил с целыми числами, все четные числа преобразовать в нули
есть двоичный фаил с целыми числами, все четные числа преобразовать в ноли
Не могу исправить ошибку в коде (функция должна в тексте заменять указанную последовательность символов на две любые цифры) C++
Функция должна в тексте заменять указанную последовательность символов на две любые цифры.А она заменяет первую букву последовательности и следующий символ за ней, даже если этот символ не из моей...
C++ Ввести последовательность символов, заканчивающуюся символом "@". Распечатать только те из них, которые не являются буквой "А" http://www.cyberforum.ru/cpp-beginners/thread890421.html
Ввести последовательность символов, заканчивающуюся символом "@". Распечатать только те из них, которые не являются буквой "А" (с учётом верхнего и нижнего регистров).
C++ составить блок-схемы по коду #include <iostream> #include <cstdlib> #include <cstring> #include <string> #include <cmath> #include <sstream> // Класс "Статистическая характеристика" class StatisticMethod { подробнее

Показать сообщение отдельно
MrGluck
Модератор
Эксперт CЭксперт С++
7496 / 4611 / 694
Регистрация: 29.11.2010
Сообщений: 12,620
05.06.2013, 07:40
Делал когда-то
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
#include <fstream>
#include <stack>
#include <vector>
#include <iostream>
#include <clocale>
#define N 10
using namespace std;
 
void designing(int* , int, int, ofstream&); // конструирование маршрута
 
int main()
{
    setlocale(LC_ALL, "Russian");
    ofstream o("result.txt");
    ifstream in("A.txt");
    if (!in) return 1;
    // ------------------------------инициализация------------------------------
    stack <int> st; // стек для хранения номеров вершин
    bool instack[N]; //false - вершина не в стеке, true - в стеке
    bool DUG[N][N]; // матрица смежности
    int start, end; // номер стартовой и конечной вершин
    int rang[N]; // длина пути
    int VON_PUNKT[N]; // номер вершины, из которой попали в текущую
    cout<< "Введите начальную вершину: ";
    do{ cin>> start;} while (start < 0 || start > 9);
    cout<< "Введите конечную вершину: ";
    do{ cin>> end;} while (end < 0 || end > 9 || end == start);
    for (int i = 0; i < N; i++)
    {
        VON_PUNKT[i] = start;
        rang[i] = 999;
        instack[i] = false;
        for (int j = 0; j < N; j++)
            in>> DUG[i][j];
    }
    // записываем начальную вершину в очередь
    st.push (start);
    instack[start] = true;
    VON_PUNKT[start] = -1;
    rang[start] = 0;
    // --------------------------------общий шаг--------------------------------
    while (!st.empty())
    {
          int besuch = st.top();
          st.pop();
          for (int i = 0; i < N; i++)
          {
              if (!instack[i] && DUG[besuch][i])
              {
                  st.push (i);
                  instack[i] = true;
                  rang[i] = rang[besuch] + 1;
                  VON_PUNKT[i] = besuch;
              }
          }
    }
    // --------------------------запись пути в файл ----------------------------
    designing(VON_PUNKT, rang[end], end, o);
    in.close();  o.close();
    return 0;
}
 
void designing(int *p, int rang, int end, ofstream &o)
{
    vector <int> v;
    vector <int>::iterator cur;
    for (int i = end; i != -1; i = p[i])
        v.push_back(i);
    o<< "Количество переходов: "<< rang<< endl;
    for (cur = v.end() - 1; cur >= v.begin(); cur--)
        o<< *cur<< " ";
}
Матрица смежности:
Код
0 0 0 1 0 1 0 0 0 0
0 0 1 0 1 0 0 0 0 0
0 1 0 0 0 0 1 0 1 0
1 0 0 0 0 1 0 1 0 0
0 1 0 0 0 1 1 0 0 0
1 0 0 1 1 0 0 0 0 0
0 0 1 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 1 0
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.