Comment detail

ケブンッリジ関数 (Nested Flatten)
qsortにランダム関数をつっこんで大丈夫なのだろうか(無限ループになったりしないかな?)
 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
#include <stdio.h>
#include <stdlib.h>

#define IS_SPACE(c) ( (c) == ' ' || (c) == '\n' )
#define MBCLEN 2

/* ランダム比較関数 */
int compare_random(const void *a, const void *b) {
    return rand() - RAND_MAX / 2;
}

/* ケブンリッジ関数 */
void ciambrgde(char *buf) {
    char *p = buf;

    while (*p) {
        char *word_head;

        /* 空白を読み飛ばす */
        while (IS_SPACE(*p)) { p++; }
        if (! *p) { break; }
        /* 単語の末尾を探す */
        word_head = p;
        while (*p && ! IS_SPACE(*p)) { p += MBCLEN; }
        /* 4文字以上の単語なら入れ替えを行う */
        if ( (p - word_head) >= MBCLEN * 4 ) {
            qsort(word_head + MBCLEN, (p - word_head)/MBCLEN - 2, MBCLEN, compare_random);
        }
    }
    
    return;
}

int main() {
    char buf[] = "こんにちは みなさん おげんき ですか? わたしは げんき です。\n\
この ぶんしょう は いぎりす の ケンブリッジ だいがく の けんきゅう の けっか\n\
にんげん は もじ を にんしき する とき その さしいょ と さいご の もじさえ あっていれば\n\
じゅんばん は めちゃくちゃ でも ちゃんと よめる という けんきゅう に もとづいて\n\
わざと もじの じゅんばん を いれかえて あります。\n\
どうです? ちゃんと よめちゃう でしょ?\n\
ちゃんと よめたら はんのう よろしく";
    
    ciambrgde(buf);
    printf(buf);

    return 0;
}

Index

Feed

Other

Link

Pathtraq

loading...