2D arrays

rows and columns (like a rectangular table of data)
int votes[3][50];     //3 rows (candidates), 50 columns (states)

// initialize the votes array   Nested for loops is typical processing of 2D array
for (row=0; row<3; row++)      // each row
  for (col=0; col<50; col++)      // each column, of that row
    votes[row][col] = 0;


// get votes of a candidate in a state from user
cout << "Enter state number: ";
cin >> state;
cout << "Enter candidate number: ";
cin >> candidate;
// should error check these values to be sure within bounds of sizes
cout << "Enter votes rececived: ";
cin >> votes[candidate][state];



// sum of candidate 1
sum_cand1 = 0;
for (i=0; i<50; i++)     // each state (each column of row 1)
  sum_cand1 += votes[1][i];

Array sizes should use symbolic constants (consts).


const int states=50, candidates=3;

int votes[candidates][states];

// initialize all elements to 0
for (i=0; i< candidates; i++)    //common to use i for row
  for (j=0; j< states; j++)       //common to use j for column
    votes[i][j] = 0;


// sum of state 9
sum_state9 = 0;
for (i=0; i< candidates; i++)
  sum_state9 += votes[i][9];

// sum of state 9, alternate version, not as good  
sum_state9 = votes[0][9] + votes[1][9] + votes[2][9];


// sum of votes for each candidate
int sum[candidates];
for (i=0; i< candidates; i++)   //init sums to 0
  sum[i] = 0;
for (i=0; i< candidates; i++)
  for (j=0; j< states; j++)
    sum[i] += votes[i][j];
 
// the winner is...
if (sum[0]>sum[1] && sum[0]>sum[2])
  cout << "Winner is 0";
else if (sum[1]>sum[0] && sum[1]>sum[2])
  cout << "Winner is 1";
else    
  cout << "Winner is 2";
// What if there is a tie for winner?
// What is the order of the 3 candidates?
Program to (start) to play checkers. checkers.cpp
Exercises:
function to count the #reds, #blacks
function to count the four surrounding neighbors
make rectangular areas intialized to some value

Next (2D array arguments)


©David Wills