Yes, I wanted to avoid 'new' which is time consuming. Jiri Radovan CHYTRACEK wrote: > > Here is my version which works: > > Int_t fun(const Int_t n, Int_t x) { > Int_t* arr = new Int_t[n]; > arr[n-1] = x; > Int_t ret = arr[n-1]; > delete [] arr; > return ret; > } > > void pass(Int_t k, Int_t x) { > for (Int_t i=1; i<=k ; i++) > cout << "fun(" <<i<<","<<x<<") = " << fun(i,x) << endl; > } > > I think that Masa Goto is now hard thinking about this problem. > > Radovan > > Jiri Bystricky wrote: > > > > Hi, > > is anything wrong with the script 'test.C' (see below)? > > It gives (ROOT version 3.00/02): > > > > root [0] .L test.C > > root [1] cout << fun(1,5) << endl; > > 5 > > root [2] cout << fun(2,5) << endl; > > 5 > > root [3] pass(2,5) > > fun(1,5) = 5 > > Error: Array index out of range arr -> [1] valid upto arr FILE:test.C LINE:8 > > fun(2,5) = 0 > > *** Interpreter error recovered *** > > root [4] cout << fun(2,5) << endl; > > Error: Array index out of range arr -> [1] valid upto arr FILE:/tmp/filevtC7Yq_cint > > LINE:2 > > Error: Illegal pointer operation (tovalue) FILE:/tmp/filevtC7Yq_cint LINE:1 > > *** Interpreter error recovered *** > > > > Cheers Jiri > > ----------------------------------------------------------------------------- > > test.C > > > > Int_t fun(const Int_t n, Int_t x) { > > Int_t arr[n]; > > arr[n-1] = x; > > return arr[n-1]; > > } > > void pass(Int_t k, Int_t x) { > > for (Int_t i=1; i<=k ; i++) > > cout << "fun(" <<i<<","<<x<<") = " << fun(i,x) << endl; > > } > > -----------------------------------------------------------------------------
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:39 MET