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

Эйлеров цикл

02.06.2022, 15:32. Показов 426. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как реализовать алгоритм построения Эйлерова цикла для теста:
-x^3+12sin(3x )-5x= 0.

Мой код:
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
136
137
138
139
140
141
142
#include <iostream>
#include <cstdio>
 
struct Node
{
   int inf;
   Node *next;
};
 
//============================Stack==============================
 
 
void push(Node *&st,int dat)
{  // Загрузка числа в стек
 
   Node *el = new Node;
   el->inf = dat;
   el->next = st;
   st=el;
}
 
int pop(Node *&st)
{       // Извлечение из стека
   int value = st->inf;
   Node *temp = st;
   st = st->next;
   delete temp;
 
   return value;
}
 
int peek(Node *st)
{     // Получение числа без его извлечения
   return st->inf;
}
 
//==============================================================
 
Node **graph;   // Массив списков смежности
const int vertex = 1; // Первая вершина
 
FILE* fi = fopen("e_graph.txt","r"); //Файл с матрицей смежности
FILE* fo = fopen("e_cycle.txt","w"); // Результирующий файл
 
void add(Node*& list,int data)
{  //Добавление смежной вершины
 
   if(!list){list=new Node;list->inf=data;list->next=0;return;}
   Node *temp=list;
 
   while(temp->next)  temp=temp->next;
 
   Node *elem=new Node;
   elem->inf=data;
   elem->next=NULL;
   temp->next=elem;
}
 
void del(Node* &l,int key)
{ // Удаление вершины key из списка
 
   if(l->inf==key)  {Node *tmp=l; l=l->next; delete tmp;}
   else
     {
         Node *tmp=l;
         while(tmp)
         {
               if(tmp->next) // есть следующая вершина
               if(tmp->next->inf==key)
               {  // и она искомая
                     Node *tmp2=tmp->next;
                     tmp->next=tmp->next->next;
                     delete tmp2;
               }
               tmp=tmp->next;
         }
   }
}
 
int eiler(Node **gr,int num)
{ // Определение эйлеровости графа
 
   int count;
 
   for(int i=0;i<num;i++)
   {  //проходим все вершины
 
      count=0;
      Node *tmp=gr[i];
 
         while(tmp)
        {       // считаем степень
             count++;
             tmp=tmp->next;
        }
      if(count%2==1)return 0; // степень нечетная
   }
   return 1;   // все степени четные
}
 
void eiler_path(Node **gr)
{ //Построение цикла
   Node *S = NULL;// Стек для  пройденных вершин
   int v=vertex;// 1я вершина (произвольная)
   int u;
 
   push(S,v); //сохраняем ее в стек
   while(S)
       {  //пока стек не пуст
 
         v = peek(S); // текущая вершина
         if(!gr[v]){ // если нет инцидентных ребер
         v=pop(S); fprintf(fo,"%d ",v); //выводим вершину
       }
       else
       {
         u=gr[v]->inf; push(S,u);  //проходим в следующую вершину
         del(gr[v],u); del(gr[u],v); //удаляем пройденное ребро
      }
   }
}
 
int main()
{
   int n; // Количество вершин
   int zn;// Текущее значение
 
   fscanf(fi,"%d",&n); graph=new Node*[n];
   for(int i=0;i<n;i++)graph[i]=NULL;
 
   for(int i=0;i<n;i++)   // заполняем массив списков
         for(int j=0;j<n;j++)
        {
             fscanf(fi,"%d",&zn);
             if(zn) add(graph[i],j);
        }
 
   if(eiler(graph,n))eiler_path(graph);
   else fprintf(fo,"Граф не является эйлеровым.");
 
   return(0);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2022, 15:32
Ответы с готовыми решениями:

Эйлеров цикл
Есть программа: def euler_circuit(G): EP= # Эйлеров цикл - массив вершин. #возвращает локальный замкнутый цикл ...

Эйлеров цикл и Граф
Всем доброго времени суток!!! Вот начал изучать Эйлеровы циклы, так вот там сказано что Эйлеров ПУТЬ существует только тогда когда в графе...

Найти эйлерову цепь или эйлеров цикл в графе
Найти эйлерову цепь или эйлеров цикл в графе

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2022, 15:32
Помогаю со студенческими работами здесь

Эйлеров путь
Если не трудно помогите с заданием::( по заданной матрице смежности построить эйлеров путь

Эйлеров путь
Я примерно написал програму, но мой вариант работает долго - 28(иногда меньше, иногда больше) минут.Подскажите пожалуйста есть ли какой-то...

Эйлеров путь. Не проходит по времени
Доброго времени суток! Хочу обратиться за помощью. Решаю сейчас задачу, и тестирование не проходит по времени. Идея, как я считаю,...

Цикл: Вычислить значение выражения. Как вывести формулу и сделать цикл while?
Последовательно вводятся N целых чисел. Найти минимальное из них. #include&lt;stdio.h&gt; #include&lt;locale.h&gt; #include...

Как реализовать бесконечный цикл While, но чтобы этот цикл не грузил процессор?
Допустим есть цикл: while (1) { ... } Как сделать так, чтобы бесконечный цикл не грузил процессор. Избавиться от...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru