prt_unit.c 849 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "global.h"
  2. int print_unit(int i, int ns, int nl)
  3. {
  4. char num[50];
  5. int k;
  6. double area;
  7. if (unit[i].type == CELL_COUNTS) {
  8. sprintf(num, "%*ld", unit[i].len, count_sum(&ns, nl));
  9. }
  10. else if (unit[i].type == PERCENT_COVER) {
  11. k = ns - 1;
  12. while (k >= 0 && same_cats(k, ns, nl - 1))
  13. k--;
  14. k++;
  15. area = area_sum(&k, nl - 1);
  16. if (unit[i].eformat)
  17. scient_format(100.0 * area_sum(&ns, nl) / area,
  18. num, unit[i].len, unit[i].dp);
  19. else
  20. format_double(100.0 * area_sum(&ns, nl) / area,
  21. num, unit[i].len, unit[i].dp);
  22. }
  23. else {
  24. if (unit[i].eformat)
  25. scient_format(area_sum(&ns, nl) * unit[i].factor,
  26. num, unit[i].len, unit[i].dp);
  27. else
  28. format_double(area_sum(&ns, nl) * unit[i].factor,
  29. num, unit[i].len, unit[i].dp);
  30. }
  31. fprintf(stdout, "|%s", num);
  32. return 0;
  33. }