Thread: Twelve categories of input?

  1. #1
    Registered User
    Join Date
    Feb 2010
    Posts
    30

    Twelve categories of input?

    I'm learning C from the book C Programming Language by Kernighan & Ritchie. I was told that this is the best book.

    In the chapter about Arrays they said :

    Let is write a program to count the number of occurrences of each digit, of white space characters (blank, tab, newline), and of all other characters. This is artificial, but it permits us to illustrate several aspects of C in one program.

    There are twelve categories of input, so it is convenient to use an array to hold the number of occurrences of each digit, rather than ten individual variables. Here is one version of the program:
    I don't understand! How come 12 categories of input can be put into 10 variables??
    Also, what are these categories?

    digits are 0-9 + white space characters + all other characters it should exceed 12 inputs. Much less 10!

    This is the code example :

    Code:
    #include <stdio.h>
    
    // count digits, white space, others
    int main()
    {
     int c, i, nwhite, nother;
     int ndigit[10];
    
     nwhite = nother = 0;
     for (i = 0; i < 10; i = i + 1)
    	 ndigit[i] = 0;
    
     while ((c = getchar()) != EOF)
     {
      if (c >= '0' && c <= '9')
    	  ++ndigit[c-'0'];
      else if (c == ' ' || c == '\n' || c == '\t')
    	  ++nwhite;
      else
    	  ++nother;
     }
     printf("digits = ");
    	 for (i = 0; i < 10; ++i)
    		 printf(" %d", ndigit[i]);
     printf(" , white space = %d, other = %d \n", nwhite, nother);
    }

    Any help is much appreciated
    Last edited by vsovereign; 06-04-2010 at 03:01 PM.

  2. #2
    C++まいる!Cをこわせ!
    Join Date
    Oct 2007
    Location
    Inside my computer
    Posts
    24,654
    I admit that might have been a little poorly worded.
    Anyhow, here is what I understand it as:
    Each of the digits 0-9 are a different category. We want to count how many occurrences of these these we find.
    Whitespace is another category. We don't care what kind of whitespace it is. Tabs, spaces, etc, it's all the same. We count them as whitespace by keeping track of much whitespace you've inputted.
    Same story with non-whitespace and non-digit characters.
    Quote Originally Posted by Adak View Post
    io.h certainly IS included in some modern compilers. It is no longer part of the standard for C, but it is nevertheless, included in the very latest Pelles C versions.
    Quote Originally Posted by Salem View Post
    You mean it's included as a crutch to help ancient programmers limp along without them having to relearn too much.

    Outside of your DOS world, your header file is meaningless.

  3. #3
    Registered User
    Join Date
    Feb 2010
    Posts
    30
    Aahh okay

    So 10 digits + whitespace + other, so yeah; 12 inputs.

    thanks!!

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Allocating input to an array
    By ij.cohen in forum C Programming
    Replies: 2
    Last Post: 10-12-2009, 10:48 AM
  2. Problem grabbing k/b input
    By falcon9 in forum C Programming
    Replies: 2
    Last Post: 10-28-2007, 11:47 AM
  3. Input statement problem
    By une in forum C Programming
    Replies: 3
    Last Post: 05-29-2007, 11:16 PM
  4. For loop problems, input please.
    By xIcyx in forum C Programming
    Replies: 2
    Last Post: 04-22-2007, 03:54 AM
  5. Simple Console Input for Beginners
    By jlou in forum C++ Programming
    Replies: 0
    Last Post: 06-21-2005, 01:50 PM