Question 5: Fix a program [10]

The program below contains at least five syntax and/or logic errors. Assuming the comments are correct, modify the code so that it would compile cleanly and behave as specified in the comments.

// Given two arrays that are the same width, secretCode contains a code the
// user is trying to break and guess contains the user's guess at the code.
// The secret code is not necessarily in base 10, NUMBASE indicates which base
// it is in.  So if NUMBASE is 4 then only digits 0, 1, 2, and 3 are possible.

#include <cstdio>
const int WIDTH = 5;

// count and return the number of times the value target
//   appears in the array
int countOccurances(int array[], int target);

// This function counts how many of the digits in guess are a correct digit,
// whether or not they are in the right location, by taking the minimum of the
// number of times they occur in each of the two arrays.
int evaluateGuess(int secretCode[], int guess[]);

int main()
{
   int code[]  = { 1, 2, 3 };
   int guess[] = { 3, 1, 5 };
   printf("%d are correct\n", evaluateGuess(code, code);
}
int evaluateGuess(int secretCode[], int guess[])
{
   int result;
   int inGuess;
   int inAnswer;
   for (int i = 1; i <= NUMBASE; i++) {
      inGuess = countOccurances(guess, i);
      inAnswer = countOccurances(secretCode, i);
      if (inGuess > inAnswer) {
         result += inGuess;
      } else {
         result += inAnswer;
      }
   }
   return true;
}

int countOccurances(int array[], int target)
{
   int count = 0;
   for (int i = 0; i < WIDTH; i++) {
      if (array[i] != target) {
         count++;
      }
   }
   return count;
}