fork download
  1. #include <stdio.h>
  2.  
  3. #define PRINTABLE 94
  4. #define OFFSET 32
  5. #define MAX 127
  6.  
  7. void main(){
  8. int c, i;
  9. int arr[PRINTABLE];
  10.  
  11. for (i = 0; i < PRINTABLE; i++) {
  12. arr[i] = 0;
  13. }
  14.  
  15. while ((c = getchar()) != EOF) {
  16. if (c >= OFFSET && c < MAX) {
  17. arr[c - OFFSET]++;
  18. }
  19. }
  20.  
  21. for (i = 0; i < PRINTABLE; i++) { //horizontal histogram
  22. if (arr[i] > 0) {
  23. printf("%c: ", i + OFFSET);
  24. for (int k = 0; k < arr[i]; k++) {
  25. putchar('|');
  26. }
  27. putchar('\n');
  28. }
  29. }
  30.  
  31. //vertical histogram
  32. int max = 0;
  33. int k;
  34.  
  35. for (i = 0; i < PRINTABLE; i++) {
  36. if (arr[i] > max) {
  37. max = arr[i];
  38. }
  39. }
  40.  
  41. for (;max > 0; max--) {
  42. for (k = 0; k < PRINTABLE; k++) {
  43. if (arr[k] == max) {
  44. arr[k]--;
  45. putchar('*');
  46. }
  47. else if (arr[k] > 0){
  48. putchar(' ');
  49. }
  50. }
  51. putchar('\n');
  52. }
  53. }
Success #stdin #stdout 0s 4328KB
stdin
Standard input is empty
stdout
Standard output is empty