Не можете вернуть значение из функции? - PullRequest
2 голосов
/ 02 мая 2011

Я написал этот код, и есть проблема, которую я не могу решить.Предполагается, что функция должна возвращать T1 и вызывать его у основного, но всегда выдает ошибку «T1 - необъявленный идентификатор»Зачем?

#include<iostream>
#include<math.h>
#include<time.h>
using namespace std;
double factorial()
{
   int i;
   double T1,total=0;
   for(i=0;i<200;i++) 
   {
      clock_t start = clock();

      int a,N,f;
  N=99999;
      f=N;
  for(a=N-1;a>0;a--)
  {
         f=f*a;
      }

      clock_t end = clock();
      T1=double(end-start)/(double) CLOCKS_PER_SEC;
      total=total+T1;
   }
   T1=total/200;
   return T1;
}
int main()
{
   factorial();
   cout<<T1<<endl;

   return 0;
}

Ответы [ 3 ]

3 голосов
/ 02 мая 2011

Каждая функция знает только локальные переменные (и глобальные переменные, которые вы не определили). Вы должны создать переменную для результата из main:

int main()
{
   double answer = factorial();
   cout << answer << endl;

   return 0;
}

Не знаю, волнует ли вас это, но факториальное значение будет переполнено.

3 голосов
/ 02 мая 2011

Поскольку T1 не определен в области действия main (), он определяется только в области действия вашей функции factorial .

Вы должны сделать это вместо:

cout<<factorial()<<endl;

или определите T1 следующим образом в вашей main функции:

double T1 = factorial();
cout<<T1<<endl;
1 голос
/ 02 мая 2011

Сначала необходимо определить T1 локально или сделать его глобальной переменной (не рекомендуется).

int main()
{
double T1=factorial();

cout<<T1<<endl;

return 0;
}
...