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

Ошибка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объясните код программы http://www.cyberforum.ru/cpp-beginners/thread1128650.html
#include<stdio.h> //библиотека объявления функций и типов, //используемых для различных операций стандартного ввода и вывода #include<windows.h> // исходные тексты любого приложения Windows #include<conio.h> // для работы с консолью char buf; //буфер размера 256символов char *Rus(char *text) / / перекодировали из OEM в windows-1251 { CharToOem(text,buf); return buf; }...
C++ Ошибка: Невозможно преобразовать 'int' в 'nodeColor' Выпадает вот такая ошибка на 177 и 220 строчке( color = yPtr->color; ): error C2440: =: невозможно преобразовать 'int' в 'nodeColor' Как исправить? #include <stdio.h> #include <stdlib.h> enum nodeColor { RED, http://www.cyberforum.ru/cpp-beginners/thread1128643.html
Запись/чтение CSV C++
Приветствую всех. есть файл *.csv у него несколько особенностей 1. заранее неизвестно кол-во строк и столбцов. 2. разделитель(delimiter) может отличаться от ";" 3. плавающая точка "," в американском формате(".") а не в русском(",") 4. файл содержит только вещественные числа и выглядит примерно так:
C++ Найти наибольшее из рациональных чисел
В массивах K (n) и L (n) заданы соответственно числители и знаменатели рациональных чисел вида xi = ki / li, i = 1, 2, ..., n. Найти наибольшее из этих чисел, не используя операцию деления
C++ Подскажите, как можно упростить/укоротить код - мини-калькулятора? http://www.cyberforum.ru/cpp-beginners/thread1128620.html
Дорогие форумчане! Посоветуйте как можно укоротить, точнее упростить нижеследующий код: #include <iostream> using namespace std; void main() { char a, b, c, e, num; double first, second;
C++ Запись введённого пользователем текста в файл Нужно написать программку на С++ : один из пунктов меню программы позволяет текст, вводимый пользователем с клавиатуры , преобразовать в массив строк и ЗАПИСАТЬ В ТЕКСТОВЫЙ ФАЙЛ. Другой пункт меню позволяет считать текст из файла , подсчитать длину каждой строчки и вывести на экран результаты подсчета и нечетные строки массива. Всем кто уделил немного своего времени мне , большое... подробнее

Показать сообщение отдельно
sebornavi
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 4
24.03.2014, 20:23     Ошибка
После компиляции выдает сообщение об ошибке приложения, что не так?

В заданном графе необходимо определить, существует ли цикл, проходящий по каждому ребру графа только один раз.

Код программы:


C++ (Qt)
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
#include <iostream.h>
#include <stdio.h>
 
struct Node{
    int inf;
   Node *next;
};
 
//============================Stack==============================
 
Node *init(){     // Инициализация стека
    return NULL;
}
 
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;
    }
   }
}
 
bool 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 = init();// Стек для  пройденных вершин
   int v=vertex;// 1я вершина (произвольная)
   int u;
   printf("\n Rezult \n");
    push(S,v); //сохраняем ее в стек
   while(S){  //пока стек не пуст
    v = peek(S); // текущая вершина
        if(!gr[v]){ // если нет инцидентных ребер
        v=pop(S); fprintf(fo,"%d ",v); //выводим вершину в файл
            printf("%d ",v); //выводим вершину на экран
      }else {
        u=gr[v]->inf; push(S,u);  //проходим в следующую вершину
        del(gr[v],u); del(gr[u],v); //удаляем пройденное ребро
      }
   }
   printf("\n");
}
 
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( i=0;i<n;i++)   // заполняем массив списков
   {    for(int j=0;j<n;j++)
    {
         fscanf(fi,"%d",&zn);
         printf("%d ",zn);
            if(zn) add(graph[i],j);
      }
   printf("\n");
   }
 
   if(eiler(graph,n))eiler_path(graph);
   else fprintf(fo,"Граф не является эйлеровым.");
    return(0);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru