2013年6月22日土曜日

開発環境

プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)の第1章(やさしい入門)、1.6(配列)の演習1-13を解いてみる。

その他参考書籍

演習 1-13.

コード

sample.c

#include <stdio.h>

#define IN 1
#define OUT 0
#define MAXWORDLENGTH 11
#define MAXHIST 51

int main()
{
    int c, i, count, state, overflow, len;
    
    int wl[MAXWORDLENGTH];
    
    for(i = 0; i < MAXWORDLENGTH; i++) {
        wl[i] = 0;
    }
    
    count = 0;
    state = OUT;
    
    while ((c = getchar()) != EOF) {
        if (c == ' ' || c == '\t' || c == '\n') {
            state = OUT;
            if (count > 0) {
                if (count < MAXWORDLENGTH) {
                    wl[count]++;
                } else {
                    overflow++;
                }
            }
            count = 0;
        } else {
            count++;
            if (state == OUT) {
                state = IN;
            }
        }
    }
    
    printf("length\\hist");
    for (i = 1; i < MAXHIST; i++) {
        printf(" %2d", i);
    }
    putchar('\n');
    
    for (i = 1; i < MAXWORDLENGTH; i++) {
        printf("%11d", i);
        len = wl[i] > 0 ? wl[i] : 0;
        while (len > 0) {
          printf("  *");
          len--;
        }
        putchar('\n');
    }
    printf("%11s %d\n", "overflow", overflow);
    return 0;
}

入出力結果(Terminal)

$ ./a.out < sample.c
length\hist  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
          1  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
          2  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
          3  *  *  *  *  *  *  *  *  *  *  *
          4  *  *  *  *  *  *  *  *  *  *  *  *  *
          5  *  *  *  *  *  *  *  *  *  *  *  *  *
          6  *  *  *  *  *  *  *  *  *
          7  *  *  *  *  *
          8  *  *  *  *  *
          9  *  *
         10  *  *
   overflow 13
$ ./a.out < sample.txt
length\hist  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
          1  *  *  *  *
          2  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
          3  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
          4  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
          5  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
          6  *  *  *  *  *  *  *  *  *  *  *  *
          7  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
          8  *  *  *  *  *  *
          9
         10  *  *
   overflow 2
$ cat sample.txt
Ah Love! could you and I with Fate conspire
To grasp this sorry Scheme of Things entire,
Would not we shatter it to bits -- and then
Re-mould it nearer to the Heart's Desire!
ah love! could you and i with fate conspire
to grasp this sorry scheme of things entire,
would not we shatter it to bits -- and then
re-mould it nearer to the heart's desire!
!@#$%Ah Love! could you and I with Fate conspire
!@#$%To grasp this sorry Scheme of Things entire,
!@#$%Would not we shatter it to bits -- and then
!@#$%Re-mould it nearer to the Heart's Desire!
!@#$%ah love! could you and i with fate conspire
!@#$%to grasp this sorry scheme of things entire,
!@#$%would not we shatter it to bits -- and then
!@#$%re-mould it nearer to the heart's desire!
$

0 コメント:

コメントを投稿