Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
June 23, 2002 accesing an array | ||||
---|---|---|---|---|
| ||||
This might sound stupid, but I can't access the elements of an array by using values in other array. This is the code: int [][]g=new int[8][]; int [8] cg=-1; for (int i=0;i<8;i++) { //store random numbers between 0 & 7 in cg bit r; do { r=true; cg[i]=rand()%8; for (int j=0;j<i;j++) if (cg[i]==cg[j]) r=false; //no repetition } while (!r); } int [] ord=new int[np]; //np is really bigger than 8 ... for (int i=0;i<8;i++) { g[i]=new int[4]; //is there another way to do it? //printf("%d ",cg[i]); //it was to check the values g[cg[i]][0]=ord[i]; //ERROR } in the line marked ERROR I get: Error: ArrayBoundsError Why?? I mean, g.length (I've checked) is 8, and cg only has values between 0 and 8. So what's wrong? Oh, and if I change cg[i] for just i, it goes ok, but the result is not what I want. ------------------------- Carlos 8294 http://carlos3.netfirms.com/ |
June 23, 2002 Re: accesing an array | ||||
---|---|---|---|---|
| ||||
Posted in reply to Carlos | On Sat, 22 Jun 2002 21:26:50 -0500 "Carlos" <carlos8294@msn.com> wrote: > g[i]=new int[4]; //is there another way to do it? This line should probably read g[cg[i]] = new int[4]; > //printf("%d ",cg[i]); //it was to check the values > g[cg[i]][0]=ord[i]; //ERROR > } Since you haven't allocated g[cg[i]] yet, [0] is not a valid subscript. |
June 23, 2002 Re: accesing an array | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pavel Minayev | "Pavel Minayev" <evilone@omen.ru> escribió en el mensaje news:CFN374305216151273@news.digitalmars.com... > On Sat, 22 Jun 2002 21:26:50 -0500 "Carlos" <carlos8294@msn.com> wrote: > > > g[i]=new int[4]; //is there another way to do it? > > This line should probably read g[cg[i]] = new int[4]; Why? I'm only trying to access the members of an array. They're indexed by integers, and cg[] are integers. I don't get it. > > > //printf("%d ",cg[i]); //it was to check the values > > g[cg[i]][0]=ord[i]; //ERROR > > } > > Since you haven't allocated g[cg[i]] yet, [0] is not a valid subscript. Then why does it work? void something(inout int[][]g) { bit [32] p; for (int i=0;i<8;i++) p[g[i][0]]=true; ... } It's the same case. |
June 23, 2002 Re: accesing an array | ||||
---|---|---|---|---|
| ||||
Posted in reply to Carlos | On Sun, 23 Jun 2002 13:21:36 -0500 "Carlos" <carlos8294@msn.com> wrote: >> > g[i]=new int[4]; //is there another way to do it? >> >> This line should probably read g[cg[i]] = new int[4]; > > Why? I'm only trying to access the members of an array. They're indexed by integers, and cg[] are integers. I don't get it. Further in your code, you use cg[i] to index g[]. Suppose i == 3, cg[3] == 6. When you do g[i] = new int[4], you create an array, storing it at g[3]. Then you do g[cg[i]], that is, g[6], which is an empty array: it will only be created be when i will reach value of 6... > Then why does it work? > > void something(inout int[][]g) > { > bit [32] p; > for (int i=0;i<8;i++) > p[g[i][0]]=true; > .... > } > > It's the same case. You mean, you do it on your array. |
June 24, 2002 Re: accesing an array | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pavel Minayev | "Pavel Minayev" <evilone@omen.ru> escribió en el mensaje news:CFN374310422767593@news.digitalmars.com... > On Sun, 23 Jun 2002 13:21:36 -0500 "Carlos" <carlos8294@msn.com> wrote: > > > > > Why? I'm only trying to access the members of an array. They're indexed by > > integers, and cg[] are integers. I don't get it. > > Further in your code, you use cg[i] to index g[]. Suppose i == 3, > cg[3] == 6. When you do g[i] = new int[4], you create an array, > storing it at g[3]. Then you do g[cg[i]], that is, g[6], which is > an empty array: it will only be created be when i will reach value of 6... > Thanks! It was a programming mistake. I hadn't notice that. Thanks. |
Copyright © 1999-2021 by the D Language Foundation