開発環境
- OS X Lion - Apple(OS)
- Emacs、BBEdit - Bare Bones Software, Inc. (Text Editor)
- プログラミング言語: C
- Clang (コンパイラ)
プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)の第1章(やさしい入門)、1.6(配列)の演習 1-13、1-14を解いてみる。
その他参考書籍
- プログラミング言語Cアンサー・ブック 第2版 (クロビス・L.トンド、スコット・E.ギンペル(著)、矢吹 道郎(翻訳))
演習 1-13.
横書き
コード
sample.c
#include <stdio.h> #define IN 1 #define OUT 0 #define MAXLENGTH 11 main() { int c, i, nc, state; int other; /* 10文字以上の単語数 */ int len; /* 各柱状の長さ */ int wl[MAXLENGTH]; /* 各長さの単語数のカウンタ */ state = OUT; for (i = 0; i < MAXLENGTH; ++i) wl[i] = 0; while ((c = getchar()) != EOF) { if (c == ' ' || c == '\n' || c == '\t') { state = OUT; if (nc > 0) if (nc < MAXLENGTH) ++wl[nc]; else ++other; nc = 0; } else { ++nc; if (state == OUT) state = IN; } } for (i = 1; i < MAXLENGTH; ++i) { printf("%5d %5d ", i, wl[i]); len = wl[i]; while (len > 0) { putchar('*'); --len; } putchar('\n'); } if (other > 0) { printf("%5s %5d ", "other", other); while(other > 0) { putchar('*'); --other; } putchar('\n'); } }
入出力結果(Terminal)
$ cat sample.c|./a.out 1 39 *************************************** 2 37 ************************************* 3 15 *************** 4 11 *********** 5 8 ******** 6 7 ******* 7 5 ***** 8 4 **** 9 3 *** 10 4 **** other 11 *********** $ ./a.out a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaa a aaa aaaaa aaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a aa aaa aaaa aaaaa a a a a a a aaaaaaaaaaaaaaaaaaaaaaa 1 9 ********* 2 2 ** 3 3 *** 4 2 ** 5 3 *** 6 1 * 7 2 ** 8 1 * 9 2 ** 10 0 other 3 *** $
縦書き
コード
sample.c
#include <stdio.h> #define IN 1 #define OUT 0 #define MAXLENGTH 11 main() { int c, i, j, nc, state; int other; /* 10文字以上の単語数 */ int len; /* 各柱状の長さ */ int max; /* lenの最大値 */ int wl[MAXLENGTH]; /* 各長さの単語数のカウンタ */ state = OUT; for (i = 0; i < MAXLENGTH; ++i) wl[i] = 0; while ((c = getchar()) != EOF) { if (c == ' ' || c == '\n' || c == '\t') { state = OUT; if (nc > 0) if (nc < MAXLENGTH) ++wl[nc]; else ++other; nc = 0; } else { ++nc; if (state == OUT) state = IN; } } max = 0; for (i = 0; i < MAXLENGTH; ++i) { if (wl[i] > max) max = wl[i]; } for (i = max; i > 0; --i) { printf("%2d ", i); for (j = 0; j < MAXLENGTH; ++j) { if (wl[j] >= i) printf(" * "); else printf(" "); } if (other >= i) printf(" * "); putchar('\n'); } printf(" "); for (i = 0; i < MAXLENGTH; ++i) printf(" %2d ", i); printf("other\n"); }
入出力結果(Terminal)
$ cat sample.c | ./a.out 49 * 48 * 47 * * 46 * * 45 * * 44 * * 43 * * 42 * * 41 * * 40 * * 39 * * 38 * * 37 * * 36 * * 35 * * 34 * * 33 * * 32 * * 31 * * 30 * * 29 * * 28 * * 27 * * 26 * * 25 * * * 24 * * * 23 * * * 22 * * * 21 * * * 20 * * * 19 * * * 18 * * * 17 * * * * 16 * * * * 15 * * * * 14 * * * * 13 * * * * 12 * * * * 11 * * * * 10 * * * * 9 * * * * 8 * * * * * * 7 * * * * * * * * 6 * * * * * * * * * 5 * * * * * * * * * 4 * * * * * * * * * 3 * * * * * * * * * * * 2 * * * * * * * * * * * 1 * * * * * * * * * * * 0 1 2 3 4 5 6 7 8 9 10 other $ ./a.out 0 1 2 3 4 5 6 7 8 9 10 other $ ./a.out a 1 * 0 1 2 3 4 5 6 7 8 9 10 other $ ./a.out a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaa a aaa aaaaa aaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a aa aaa aaaa aaaaa a a a a a a aaaaaaaaaaaaaaaaaaaaaaa 9 * 8 * 7 * 6 * 5 * 4 * 3 * * * * 2 * * * * * * * * 1 * * * * * * * * * * 0 1 2 3 4 5 6 7 8 9 10 other $
演習 1-14.
コード
sample.c
#include <stdio.h> #define MAXORD 1024 main() { int c, i, j, max, other; int oc[MAXORD]; for (i = 0; i < MAXORD; ++i) oc[i] = 0; other = 0; while ((c = getchar()) != EOF) { if (c < MAXORD) ++oc[c]; else ++other; } max = 0; for (i = 0; i < MAXORD; ++i) { if (oc[i] > max) max = oc[i]; } for (i = max; i > 0; --i) { printf("%4d ", i); for (j = 0; j < MAXORD; ++j) { if (oc[j] > 0) { if(oc[j] >= i) printf(" * "); else printf(" "); } } if(other > 0) if(other >= i) printf(" * "); putchar('\n'); } printf(" "); for (i = 0; i < MAXORD; ++i) if (oc[i] > 0) printf("%4d ", i); if (other > 0) printf("other"); putchar('\n'); }
入出力結果(Terminal)
$ cat sample.c | ./a.out 435 * 434 * 433 * 432 * 431 * 430 * 429 * 428 * 427 * 426 * 425 * 424 * 423 * 422 * 421 * 420 * 419 * 418 * 417 * 416 * 415 * 414 * 413 * 412 * 411 * 410 * 409 * 408 * 407 * 406 * 405 * 404 * 403 * 402 * 401 * 400 * 399 * 398 * 397 * 396 * 395 * 394 * 393 * 392 * 391 * 390 * 389 * 388 * 387 * 386 * 385 * 384 * 383 * 382 * 381 * 380 * 379 * 378 * 377 * 376 * 375 * 374 * 373 * 372 * 371 * 370 * 369 * 368 * 367 * 366 * 365 * 364 * 363 * 362 * 361 * 360 * 359 * 358 * 357 * 356 * 355 * 354 * 353 * 352 * 351 * 350 * 349 * 348 * 347 * 346 * 345 * 344 * 343 * 342 * 341 * 340 * 339 * 338 * 337 * 336 * 335 * 334 * 333 * 332 * 331 * 330 * 329 * 328 * 327 * 326 * 325 * 324 * 323 * 322 * 321 * 320 * 319 * 318 * 317 * 316 * 315 * 314 * 313 * 312 * 311 * 310 * 309 * 308 * 307 * 306 * 305 * 304 * 303 * 302 * 301 * 300 * 299 * 298 * 297 * 296 * 295 * 294 * 293 * 292 * 291 * 290 * 289 * 288 * 287 * 286 * 285 * 284 * 283 * 282 * 281 * 280 * 279 * 278 * 277 * 276 * 275 * 274 * 273 * 272 * 271 * 270 * 269 * 268 * 267 * 266 * 265 * 264 * 263 * 262 * 261 * 260 * 259 * 258 * 257 * 256 * 255 * 254 * 253 * 252 * 251 * 250 * 249 * 248 * 247 * 246 * 245 * 244 * 243 * 242 * 241 * 240 * 239 * 238 * 237 * 236 * 235 * 234 * 233 * 232 * 231 * 230 * 229 * 228 * 227 * 226 * 225 * 224 * 223 * 222 * 221 * 220 * 219 * 218 * 217 * 216 * 215 * 214 * 213 * 212 * 211 * 210 * 209 * 208 * 207 * 206 * 205 * 204 * 203 * 202 * 201 * 200 * 199 * 198 * 197 * 196 * 195 * 194 * 193 * 192 * 191 * 190 * 189 * 188 * 187 * 186 * 185 * 184 * 183 * 182 * 181 * 180 * 179 * 178 * 177 * 176 * 175 * 174 * 173 * 172 * 171 * 170 * 169 * 168 * 167 * 166 * 165 * 164 * 163 * 162 * 161 * 160 * 159 * 158 * 157 * 156 * 155 * 154 * 153 * 152 * 151 * 150 * 149 * 148 * 147 * 146 * 145 * 144 * 143 * 142 * 141 * 140 * 139 * 138 * 137 * 136 * 135 * 134 * 133 * 132 * 131 * 130 * 129 * 128 * 127 * 126 * 125 * 124 * 123 * 122 * 121 * 120 * 119 * 118 * 117 * 116 * 115 * 114 * 113 * 112 * 111 * 110 * 109 * 108 * 107 * 106 * 105 * 104 * 103 * 102 * 101 * 100 * 99 * 98 * 97 * 96 * 95 * 94 * 93 * 92 * 91 * 90 * 89 * 88 * 87 * 86 * 85 * 84 * 83 * 82 * 81 * 80 * 79 * 78 * 77 * 76 * 75 * 74 * 73 * 72 * 71 * 70 * 69 * 68 * 67 * 66 * 65 * 64 * 63 * 62 * 61 * 60 * 59 * 58 * 57 * 56 * 55 * 54 * 53 * 52 * 51 * 50 * 49 * 48 * 47 * 46 * * 45 * * 44 * * 43 * * * 42 * * * 41 * * * 40 * * * 39 * * * 38 * * * 37 * * * 36 * * * 35 * * * 34 * * * 33 * * * 32 * * * 31 * * * 30 * * * 29 * * * 28 * * * 27 * * * * 26 * * * * * * 25 * * * * * * 24 * * * * * * 23 * * * * * * 22 * * * * * * * 21 * * * * * * * * * 20 * * * * * * * * * * 19 * * * * * * * * * * 18 * * * * * * * * * * 17 * * * * * * * * * * 16 * * * * * * * * * * * * 15 * * * * * * * * * * * * 14 * * * * * * * * * * * * * * 13 * * * * * * * * * * * * * * * * 12 * * * * * * * * * * * * * * * * * * 11 * * * * * * * * * * * * * * * * * * 10 * * * * * * * * * * * * * * * * * * 9 * * * * * * * * * * * * * * * * * * * * * 8 * * * * * * * * * * * * * * * * * * * * * * * * 7 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 6 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10 32 33 34 35 37 39 40 41 42 43 44 45 46 48 49 50 52 59 60 61 62 65 68 69 70 77 79 82 88 91 92 93 97 99 100 101 102 103 104 105 106 108 109 110 111 112 114 115 116 117 119 120 123 125 $ ./a.out $ ./a.out a 1 * 97 $ ./a.out a 1 * * 10 97 $ ./a.out abb 2 * 1 * * * 10 97 98 $
0 コメント:
コメントを投稿