Регистрация
16 Ноя 2012
Сообщения
81
Репутация
10
Спасибо
1
Монет
0
Пожалуйста имейте ввиду, что этот пользователь забанен
Есть код на C++.



#include<conio.h>

#include<iostream>

using namespace std;

int a,b,u,v,n,i,j,ne=1;

int visited[10]={0},min,mincost=0,cost[10][10];

int main()

{

int path[100]={0};

int path_index=0;



clrscr();

cout<<"Введи количество вершин "; cin>>n;

cout<<"Введи матрицу смежности\n";







for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{

cin>>cost[j];

if(cost[j]==0)

cost[j]=999;

}

visited[1]=1;

cout<<"\n";



while(ne < n)

{

for(i=1,min=999;i<=n;i++)

for(j=1;j<=n;j++)

if(cost[j]< min)

if(visited!=0)

{

min=cost[j];

a=u=i;

b=v=j;

}

if(visited==0 || visited[v]==0)

{

path[path_index]=b;

path_index++;

ne++;

mincost+=min;

visited=1;



}

cost[a]=cost[a]=999;

}





cout<<"\n";



cout<<1<<" --> ";

for (int i=0;i<n-1;i++)

{

cout<<path;

if (i<n-2) cout<<" --> ";

}



cout<<"\n Минимальная стоимость "<<mincost;





cin.get();

cin.get();

return 0;

}



Пишет: error: reference to ‘min’ is ambiguous. Что это за ошибка, как ее исправить?
 
В компиляторе от мелкомягких заголовок <iostream> помимо собственно потоков ввода-вывода содержит кучу функций из других библиотек, в частности min из <algorithm>
А так, как вы задали использование using namespace std, компилятор вначале проверяет есть ли встречаемое в программе имя в библиотеке, и если есть - старается использовать его с приставкой std::
Вот он и не знает, то ли вам нужна переменная min, то ли std::min из библиотеки.
 
Это означает, что ты функцию min() как переменную использовал, и компилятор не знает, что ты от него хочешь. Переименуй переменную min на что-то другое, и всё заработает.
 
Min - зарезервированная функция языка, вычисляющая минимальное значение из нескольких аргументов. Следует переименовать 'min' на что-то другое, например, 'minimal'.
 
Назад
Сверху