2016-09-16 8 views
0

Я очень новичок в программировании, я изучаю C++, и я наткнулся на программу, которую я решил попробовать определенным образом, с несколькими функциями, чтобы я мог понять и получить больше практики.Каким образом идентификатор не найден? Может ли кто-нибудь объяснить?

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

вот что у меня есть.

#include<iostream> 
#include<string> 

using namespace std; 

float num1, num2, num3, num4, num5; 

float main() { 

    cout << "Basic Average Calculator" << endl; 
    cout << "Plaese Input your list of 5 numbers Please place a space after EACH number: " << endl; 
    cin >> num1 >> num2 >> num3 >> num4 >> num5; 
    cout << "Your Average is: " << average(num1, num2, num3, num4, num5); 
    return 0; 
} 

float average(float a, float b, float c, float d, float e) { 
    a = num1, num2 = b, num3 = c, num4 = d, num5 = e; 

    float total = (a + b + c + d + e)/5; 

    return total; 
} 

Этот код не работает, и я не знаю, почему не в том, что когда я напечатал это я синтаксические ошибки на зрительной Studios, я чувствую, что логика является правильной?

Я получаю ошибку «Идентификатор не найден» в средней() функции?

Может ли кто-нибудь с опытом, пожалуйста, помогите мне ??

+1

Ваш компилятор говорит вам *, который * идентификатор не найден. Все, что вам нужно сделать, это исправить это. Также 'main()' должен возвращать 'int', а не' float'. – Barry

+0

Это была средняя функция(), но я не знаю, как правильно ее идентифицировать? –

+2

Вы должны объявить идентификаторы перед их использованием. –

ответ

2

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

void f() { g(); } 
void g() {} 

является незаконным. Вы можете исправить это с упреждающим объявлением:

void g(); // note the ; 

void f() { g(); } // legal 
void g() {} 

В вашем случае, двигаться average к перед main или добавить

float average(float a, float b, float c, float d, float e); 

где-то до main.

--- Редактировать ---

Эта строка кода выглядит подозрительным:

a = num1, num2 = b, num3 = c, num4 = d, num5 = e; 
              ^^^^^^^^ 

Если предположить, что это должно быть

a = num1, num2 = b, num3 = c, num4 = d, e = num5; 

то кажется, нет никаких оснований если эта функция принимает аргументы в первую очередь.

Вы можете изменить свой код, чтобы быть:

float average() 
{ 
    return (num1 + num2 + num3 + num4 + num5)/5; 
} 

int main() 
{ 
    ... 
    cout << "Your Average is: " << average(); 
    ... 
} 

или

float average(float a, float b, float c, float d, float e) 
{ 
    return (a + b + c + d + e)/5; 
} 

int main() 
{ 
    ... 
    cout << "Your Average is: " << average(num1, num2, num3, num4, num5); 
    ... 
} 
+0

Wow !! Большое спасибо! Это сработало, спасибо за разъяснения. Я написал другие программы, в которых функции будут выполняться после main(), и они все еще работали?Это особый случай? –

+0

@ VictorMartins возможно они были программами C89 и/или вызвали неопределенное поведение, которое оставалось незамеченным –

+0

@VictorMartins Не специальный случай, возможно, вы компилировались с нестандартными параметрами. Также см. Мое редактирование с некоторыми дополнительными примечаниями к коду. – kfsone