2D array as function argument

//global constants
const int candidates=3;
const int states=50;

//function to count the votes of a candidate
int candidate_sum (int votes[][states], int candidate){
  int i, sum=0;
  //loop over the states for this candidate
  for (i=0; i<states; i++)   
    sum += votes[candidate][i];
  return sum;

int candidate_sum (int [][states], int);

int polls[candidates][states];
//gather the votes...
//then count a candidate's total votes
cout << "Which candidate to count votes of: ";
cin >> candidate;
total = candidate_sum(polls,candidate);
cout << "Candidate " << candidate << " got " << total << " votes";

//sum votes for each candidate
for (cand=0; cand< candidates; cand++)
  cout << "Candidate " << cand << " got " 
       << candidate_sum(polls,cand);


//function to count the votes of a state
int state_sum (int votes[][states], int state) {
  int i, sum=0;
  //loop over the candidates for this state
  for (i=0; i<candidates; i++)
    sum += votes[i][state];  
  return sum;

int state_sum (int [][states], int);

//sum of each states votes, into array
int state_totals[states];
for (i=0; i<states; i++)
  state_totals[i] = state_sum(polls,i);


//function to count the votes of each candidate,
// into array argument.
void count_votes (int votes[][states], int sum[]) {
  int i, j;
  for (i=0; i<candidates; i++) //initialize candidate sums to 0
    sum[i] = 0;  
  for (i=0; i<candidates; i++) //loop over rows/candidates
    for (j=0; j<states; j++)    //loop over columns/states
      sum[i] += votes[i][j];   

void count_votes (int [][states], int []);

//sum of each states votes, into array
int totals[candidates];

for (i=0; i< candidates; i++)
  cout << "Candidate " << i << " got " << totals[i] << "votes" << endl;


//2D array of grades. 
//rows are students, columns are their grades

char grades[max_students][max_grades];   //sized by constants

//call function to input one grade for one student
get_grade(grades);         //2D array of chars whose 2nd dim.
                           // size is max_grades

//definition of the get_grade function:
void get_grade (char GR[][max_grades]) {
  int student, exam;   //row and col
  do {
    cout << "Enter student number: ";
    cin >> student; 
    if (student > max_students)
      cout << "Error. Must be <= " << max_students;
  } while (student > max_students);
  do {
    cout << "Enter exam number: ";
    cin >> exam;
    if (exam > max_grades)
      cout << "Error. Must be <= " << max_grades;
  } while (exam > max_grades);
  GR[student][exam] = get_valid_grade();  //returns valid grade

function to get all exams of a student
function to get all exams of all students
function to calculate gpa of a student
function to display grades of a student
function to read file of lines of grades, return #rows
Program to move a "mouse" around the screen. move_mouse.cpp

Next (row of a 2D array)

©David Wills