I want to ask question bout  double *S () this function.
It's will wrong in Online Judge, But both work on VS or Dev, I don't know why.
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<iostream>
#include<cmath>
using namespace std;
class F {
private:
    double a,r;
public:
    F(double x, double y) {
    a = x;
    r = y;
    }
  
    double at (int x) {
        return a * pow(r, x); 
    }
  
    double *S () {
      if (r >= 1 || r<= -1) 
        return nullptr;
        double* x;
        double b= double(a / (1 - r));
        x = &b;
        return x;
}
};
int main()
{
    int j, k;
    double a, r;
    cin>>a>>r;
    F f(a, r);
    for(k = 0;k < 3;k ++)
        printf("%.2lf\n", f.at(k));
    double *s = f.S();
    if(s == NULL)
      printf("NULL\n");
  else
    printf("%.2lf\n", *s);
}
    double *S () {
      if (r >= 1 || r<= -1) 
        return nullptr;
      double* z= new double(a / (1 - r));
        return z;
}
It's will AC on OJ.
    double *S () {
      if (r >= 1 || r<= -1) 
        return nullptr;
        double* x;
        double b= double(a / (1 - r));
        x = &b;
        return x;
}
It's wrong on Oj.
 
    