sort3 не был объявлен в этой области

0

Как я могу исправить свой код? Я не понимаю, что значение sort3 was not declared in this scope.

#include <iostream>

using namespace std;

int main ( )
{
   cout<<" Enter first value. "<<endl;
   int a;
   cin>> a;

   cout<<"Enter second value. "<<endl;
   int b;
   cin>>b;

   cout<<"Enter third value. "<<endl;
   int c;
   cin>>c;

   sort3(a,b,c);
   cout << a << " " << b << " " << c << endl;
   return 0;
}

void sort3(int& a, int& b, int&c )
{
    int temp;

    if (a < b )
    {
        temp = a;
        a = b;
        b = temp;
    }
    else if (a < c )
    {
        temp = a;
        a = c;
        c = temp;
    }
    else if ( b < c )
    {
        temp = b;
        b = c;
        c = temp;
    }
}
  • 2
    Предварительная декларация ... Компилятор не верит вам, что вы не допустили никаких ошибок (имя функции, параметры ... и т. Д.). Поэтому он должен сначала увидеть декларацию, чтобы поверить вам ...
Теги:

6 ответов

3

Вы можете "объявить" функцию sort3 перед main:

void sort3(int& a, int& b, int&c );

int main ()
{
...

Другой вариант - переместить определение sort3 перед main.

В C++ вам нужно, по крайней мере, объявление функции, прежде чем вы сможете ее использовать.

1

Вам нужно сначала поставить декларацию для использования функции:

#include <iostream>

using namespace std;

void sort3(int& a, int& b, int&c );    //declaration

int main ( )
{
1

декларировать

void sort3(int&, int&, int& );

Перед main функцией он будет работать.

0

Вы получаете эту ошибку, потому что компилятор анализирует ваш файл сверху вниз. Поэтому компилятор встречает ваш вызов sort3 но он никогда не был объявлен.

Чтобы решить эту проблему, вы можете использовать форвардную декларацию или переместить весь sort3 -function перед вашим main().

Решение с форвардной декларацией:

#include <iostream>

using namespace std;

void sort3(int& a, int& b, int&c );

int main ( )
{
   ... code ...
}

void sort3(int& a, int& b, int&c )
{
    ... code ...
}

Без прямого объявления, но sort3 перемещается перед main():

#include <iostream>

using namespace std;

void sort3(int& a, int& b, int&c )
{
    ... code ...
}

int main ( )
{
   ... code ...
}
0

Либо поставить декларацию перед функцией:

void sort3(int& a, int& b, int&c )
int main()

или попробуйте это:

#include <iostream>

using namespace std;

void sort3(int& a, int& b, int&c )
{
  int temp;

  if (a < b )
  {
    temp = a;
    a = b;
    b = temp;
  }
  else if (a < c )
  {
    temp = a;
    a = c;
    c = temp;
  }
  else if ( b < c )
  {
    temp = b;
    b = c;
    c = temp;
  }
}
int main ( )
{


 cout<<" Enter first value. "<<endl;
 int a;
 cin>> a;

 cout<<"Enter second value. "<<endl;
 int b;
 cin>>b;

 cout<<"Enter third value. "<<endl;
 int c;
 cin>>c;



 sort3(a,b,c);
 cout << a << " " << b << " " << c << endl;
 return 0;
}

Обратите внимание, что объявление функции должно быть до использования.

0

Попробуй это

#include <iostream>

using namespace std;

void sort3(int& a, int& b, int&c )
{
    int temp;

    if (a < b )
    {
        temp = a;
        a = b;
        b = temp;
    }
    else if (a < c )
    {
        temp = a;
        a = c;
        c = temp;
    }
    else if ( b < c )
    {
        temp = b;
        b = c;
        c = temp;
    }
}
int main ( )
{


   cout<<" Enter first value. "<<endl;
   int a;
   cin>> a;

   cout<<"Enter second value. "<<endl;
   int b;
   cin>>b;

   cout<<"Enter third value. "<<endl;
   int c;
   cin>>c;



  sort3(a,b,c);
   cout << a << " " << b << " " << c << endl;
   return 0;
}

или вы можете определить функцию в верхней части, после строки 'using namespace std;'

void sort3(int &, int &, int &);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню