SHARE
TWEET

Kernighan & Ritchie Solution 1-13

applehelpwriter Aug 25th, 2013 113 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2.  
  3. /*
  4. cAgain12.c
  5.  
  6. Solution for Kernighan & Ritchie, Exercise 1-13, p24.
  7.  
  8. Write a program to print a histogram of the lengths of words in its input
  9.  
  10. Requirements:
  11.     find the length of each word
  12.     count and store the number of words of each length using an array
  13.     print the histogram
  14.    
  15. */
  16.  
  17. main()
  18. {
  19.  
  20. //declare the variables
  21. int c, i, k, dots, counter;
  22.  
  23. // maximum word length =29 chars; that's a problem for another chapter!
  24. int wordLength[30];
  25.  
  26. //initialize the variables
  27. counter = i = k = dots = 0;
  28.  
  29. //initialize the array
  30. for(i = 0; i < 30; ++i){
  31.     wordLength[i]= 0;
  32. }//end for
  33.  
  34. //get the input:
  35. while ((c=getchar()) !=EOF){
  36.    
  37.     //the next line of code says 'if the input is none of these characters...'
  38.     //note: we have to escape the quotation character and backslash character
  39.     //note: we don't include the apostrophe, because if we did
  40.     //words like "don't" would get
  41.     //counted as only three characters, "don"
  42.    
  43.     if (!(c == ' ' || c == '\n' || c == '\t' || c == ',' || c == '.' || c == ';' || c == '!' || c == '\"' || c == ':' || c == '/' || c == '\\'))
  44.    
  45.     // then increment the character count +1'
  46.         ++counter;
  47.    
  48.     else {  //stop counting and increment the array for that length by +1
  49.    
  50.         ++wordLength[counter];
  51.  
  52.         //reset the counter for the next word
  53.         counter = 0;
  54.     }//end else
  55.    
  56. }//end while
  57.  
  58.  
  59. //print the histogram horizontally:
  60.  
  61. printf("\n");
  62. printf("No of characters per word\n");
  63.  
  64. for (i = 1; i < 30; ++i) {
  65.     printf("\n%3i: ", i);
  66.     dots = wordLength[i];
  67.         for (k = 1; k <= dots; ++k){
  68.         printf("=");
  69.        
  70.         }//end for
  71.        
  72.    
  73. }//end for
  74.  
  75.  
  76. printf("\n\n"); //create a space between the last line of output and the prompt
  77.  
  78. }//end main
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top