Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This code may be fixed by replacing the floating point numbers with integers for the internal computationadditions. Floats are used only when printing results, and when doing the division to compute the mean.

Code Block
bgColor#ccccff
#include <stdio.h>

/* Returns the mean value of the array */
intfloat mean(int array[], int size) {
  int total = 0;
  int i;
  for (i = 0; i < size; i++) {
    total += array[i];
    printf("array[%d] = %f and total is %f\n", i, array[i] / 100.0, total / 100.0);
  }
  if (size != 0)
    return ((float) total) / size;
  else
    return 0.0;
}

enum {array_size = 10};
int array_value = 1010;

int main(void) {
  int array[array_size];
  intfloat avg;
  int i;
  for (i = 0; i < array_size; i++) {
    array[i] = array_value;
  }

  avg = mean( array, array_size);
  printf("mean is %f\n", avg / 100.0);
  if (avg == array[0]) {
    printf("array[0] is the mean\n");
  } else {
    printf("array[0] is not the mean\n");
  }
  return 0;
}

...