Top.Mail.Ru
Ответы

Проблемы с C++.

Есть код на 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[i][j];
if(cost[i][j]==0)
cost[i][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[i][j]< min)
if(visited[i]!=0)
{
min=cost[i][j];
a=u=i;
b=v=j;
}
if(visited[u]==0 || visited[v]==0)
{
path[path_index]=b;
path_index++;
ne++;
mincost+=min;
visited[b]=1;

}
cost[a][b]=cost[b][a]=999;
}


cout<<"\n";

cout<<1<<" --> ";
for (int i=0;i<n-1;i++)
{
cout<<path[i];
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'.