Go Down

Topic: I'm stuck trying 2d arrays. (Read 2293 times) previous topic - next topic

9fingers

Ok I will stick with
Code: [Select]
const int numPorts=2;

I've cut the code down to one function and one call in set up and nothing in loop()

to keep it simple.

It may now be more a case of me not understanding function calls properly?

we now have
Code: [Select]

//-----------------
//set up the global variables
const int numReadings =10;
const int numPorts =2;
long numberofReadings=numReadings;
int readings[numReadings][numPorts];      // the readings from the analog input ports
int readIndex[numPorts];// the index of the current reading
float total[numPorts];                  // the running totals for each port
float average[numPorts];                // the average for each port


void setup() {
  // initialize serial:
  Serial.begin(9600);
  analogReference(EXTERNAL);
  InitArray(readings,numReadings,numPorts); //call function to pre-fill the arrays
}

void loop() {
}
void InitArray(int readings[][numPorts],numReadings,numPorts){
  // initialize all the readings to an initial read value from each port
  for (int j=0; j< numPorts; j++){
    int initReading=analogRead(j);
    for (int i = 0; i < numReadings; i++) readings[i][j] = initReading;
    total[j]=numberofReadings*initReading;
    average[j]=initReading;
  }
}


and Errors:

Func9_2_dimensional_array:7: error: 'numPorts' was not declared in this scope
Func9_2_dimensional_array:7: error: 'numReadings' has not been declared
Func9_2_dimensional_array:7: error: 'numPorts' has not been declared
Func9_2_dimensional_array.ino: In function 'void setup()':
Func9_2_dimensional_array:17: error: invalid conversion from 'int (*)[2]' to 'int'
Func9_2_dimensional_array:7: error: too many arguments to function 'void InitArray(int, int)'
Func9_2_dimensional_array:17: error: at this point in file
Func9_2_dimensional_array.ino: At global scope:
Func9_2_dimensional_array:22: error: 'numReadings' is not a type
Func9_2_dimensional_array:22: error: 'numPorts' is not a type

AWOL

Which version of the IDE are you using and what board are you compiling for?

AWOL

Code: [Select]
void InitArray(int readings[][numPorts],int numReadings, int numPorts){

econjack

The compiler shouldn't allow that, and will give an invalid lvalue assignment error
Which is why I said most compilers won't like that. It's trying to replace a constant lvalue. To a beginner, which is easier to understand: The compiler won't like that, or You're trying to reassign a constant lvalue? A beginner probably doesn't even know what an lvalue is.

9fingers

Which version of the IDE are you using and what board are you compiling for?
I am using ver 1.0.5 and the target is the UNO board

econjack

I am using ver 1.0.5 and the target is the UNO board
Good grief...you're way behind. I'd update your IDE to 1.8.1.

9fingers

Good grief...you're way behind. I'd update your IDE to 1.8.1.
Sounds a bit like suggesting I need to change the engine when the headlamps are not bright enough!

I'm not using any of the latest hardware and only using quite basic features of the language.

AWOL

Quote
Sounds a bit like suggesting I need to change the engine when the headlamps are not bright enough!
Different IDEs will give different error messages, which is why I asked; I couldn't match the error messages with what I was seeing.

Quote
only using quite basic features of the language.
sp. "misusing"

9fingers

Different IDEs will give different error messages, which is why I asked; I couldn't match the error messages with what I was seeing.
 sp. "misusing"
No problem. My reply was directed to Econjack.

I could set up a fresh version of IDE on another machine if it helps you to help me. Let me know your preference.

Yup "Misusing" is probably more correct but I'm hoping to improve! I've not done any serious programming since the mid 70s using Algol 60 but that is long forgotten I'm afraid.

AWOL

I'm not saying an update will cause the code to compile, but at least we'll be singing from the same hymn-sheet.

9fingers

OK Awol, Which version would you suggest I install 1.8.1 in the interest of musical harmony or something else?

Go Up