#include <stdio.h>

void GetRawNumbers(int *cent, int *micro, int *kiln) {
  printf("  How many Centrifuges? ");
  scanf("%d", cent);  
  printf("           Microscopes? ");
  scanf("%d", micro);
  printf("           Kilns? ");
  scanf("%d", kiln);
}

void PrintHeader() {
  printf("\n\n\nKathleen's Sales:\n\n");
  printf("------------------------------------------------------------------\n");
  printf("| Item       |  Princeton |    Rutgers | Seton Hall |      Total |\n");
  printf("------------------------------------------------------------------\n");
}

float CalcTotal(int cen, int micro, int ki) {
  return cen * 3500.0 + micro * 235.0 + ki * 9000.0;
}

void CalcTotalNumbers(int *C_t, int *M_t, int *K_t,
                      int P_c, int P_m, int P_k,
                      int R_c, int R_m, int R_k,
                      int S_c, int S_m, int S_k) {

  /* the first three parameters here are passed by reference since *
   * we need to modify the values inside this function.            */

  *C_t = P_c + R_c + S_c;
  *M_t = P_m + R_m + S_m;
  *K_t = P_k + R_k + S_k;
}

void PrintTable(int P_c, int R_c, int S_c, int C_t,
                int P_m, int R_m, int S_m, int M_t,
                int P_k, int R_k, int S_k, int K_t) {

  printf("| Centrifuge | %10d | %10d | %10d | %10d |\n", P_c, R_c, S_c, C_t);
  printf("| Microscope | %10d | %10d | %10d | %10d |\n", P_m, R_m, S_m, M_t);
  printf("| Kiln       | %10d | %10d | %10d | %10d |\n", P_k, R_k, S_k, K_t);

  printf("------------------------------------------------------------------\n");

  /* directly print out the values that being returned from CalcTotal(); */
  printf("| Total      | $%9.2f | $%9.2f | $%9.2f | $%9.2f |\n",
         CalcTotal(P_c, P_m, P_k), CalcTotal(R_c, R_m, R_k), CalcTotal(S_c, S_m, S_k), CalcTotal(C_t, M_t, K_t));

  printf("------------------------------------------------------------------\n");
}

int main() {
  int P_cen, P_micro, P_ki;
  int R_cen, R_micro, R_ki;
  int S_cen, S_micro, S_ki;
  int C_total, M_total, K_total;

  printf("For Princeton University:\n");
  GetRawNumbers(&P_cen, &P_micro, &P_ki);

  printf("\nFor Rutgers University:\n");
  GetRawNumbers(&R_cen, &R_micro, &R_ki);

  printf("\nFor Seton Hall University:\n");
  GetRawNumbers(&S_cen, &S_micro, &S_ki);

  CalcTotalNumbers(&C_total, &M_total, &K_total, P_cen, P_micro, P_ki, R_cen, R_micro, R_ki, S_cen, S_micro, S_ki);

  PrintHeader();

  PrintTable(P_cen, R_cen, S_cen, C_total, P_micro, R_micro, S_micro, M_total, P_ki, R_ki, S_ki, K_total);

  printf("\nHit return to finish.");
  fflush(stdin);
  getchar();

  return 0;
}