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

C++

Войти
Регистрация
Восстановить пароль
 
Winlll
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 12
#1

Помогите устранить ошибку: "Name lookup of 'i' changed for ISO 'for" - C++

14.12.2014, 23:57. Просмотров 661. Ответов 1
Метки нет (Все метки)

При компиляции выдает ошибку.

In function 'int main()':
[Error] name lookup of 'i' changed for ISO 'for' scoping [-fpermissive]
[Note] (if you use '-fpermissive' G++ will accept your code)

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
143
144
145
#include <iostream.h>
#include <stdlib.h>
 
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; // Первая вершина
 
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); cout<<v+1<<"   "; //выводим вершину  (у нас отсчет от 1, поэтому +1)
      }
     else
      {
u=gr[v]->inf; push(S,u);  //проходим в следующую вершину
del(gr[v],u); del(gr[u],v); //удаляем пройденное ребро
      }
   }
}
 
int main()
{
 
system("CLS");
cout<<"Количество вершин:  "; int n; cin>>n; // Количество вершин
   int zn;// Текущее значение
 
   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++)
{
    cin>>zn;
    if (zn) add(graph[i],j);
  }
 
cout<<"\n\nРЕЗУЛЬТАТ  ";
 
   if(eiler(graph,n))eiler_path(graph);
   else cout<<"Граф не является эйлеровым.";
 
   cout<<endl;
   cin.get();
   cin.get();
   return(0);
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2014, 23:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите устранить ошибку: "Name lookup of 'i' changed for ISO 'for" (C++):

Необработанное исключение в "0x77913ab3" в "x": 0xC0000005: Нарушение прав доступа при чтении "0xdddddddd" - C++
вот код, нужно найти 3 минимальных положительных числа в массиве. При размере массива больше 950 в конце заполнения рандомным способом...

Нужно исправить ошибку (перевернуть в строке самое длинное "слово") - C++
Добрый день Дела обстоят так: Дана задача - написать программу, в которой вводится какое-то количество ЦИФР с пробелами, считывается...

Компилятор g++ выдает ошибку: "Версия этого файла несовместима с используемой версией Windows" - C++
Когда запускаю программу с указателями, то виндовс ее сразу закрывает. Почему и как исправить? Все на скришоте

Игра "Жизнь" ( найти ошибку) - C++
Писал клеточный автомат &quot;Жизнь&quot;(описание можно посмотреть на википедии, либо в комментариях к коду ниже). Когда все вроде бы сделал,...

Найти в строке последовательность символов ("abcd") и заменить ее другой ("xyz") - C++
Найти в строке последовательность символов (&quot;abcd&quot;) и заменить ее другой (&quot;xyz&quot;).

Устранить в проекте ошибку "Action Volation" - C++ Builder
Всем привет. В общем написал программу, она в принципе работает, но когда кликаю на &quot;запустить&quot; выскакивает ошибка Action Volation...

1
Max Dark
шКодер самоучка
1851 / 1651 / 603
Регистрация: 09.10.2013
Сообщений: 3,678
Записей в блоге: 6
Завершенные тесты: 2
15.12.2014, 10:08 #2
126 строка: переменная i объявлена только для этого цикла
C++
1
2
int i=0;
for(;i<n;i++)graph[i]=NULL;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2014, 10:08
Привет! Вот еще темы с ответами:

Помогите найти ошибку: "Посчитать количество максимальных элементов в массиве". - C++ Builder
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; void vvod(int X, int n); int por(int A, int n, bool fl); void main() ...

Помогите исправить ошибку: "код недостижим" - C++ Builder
в двух if пишет, что код недостежим, помогите исправить ошибку class TVariable { protected: double FA, FB,FC; public: ...

Помогите устранить ошибку: Access violation at address - C++ Builder
for(int k = 0; k &lt; 10; k++) { for(int l = 0; l &lt; 30; l++) ...

MessageBox - чтобы вместо "Yes" и "No" показывало "Да" и "Нет" - C++ Builder
Доброе время суток, как переделать int Key= Application-&gt;MessageBox(L&quot;Text&quot;, L&quot;Caption&quot;, MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2); чтоб...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru