回答編集履歴
29
バグ修正
test
CHANGED
@@ -82,7 +82,7 @@
|
|
82
82
|
gets(a); //入力
|
83
83
|
#endif
|
84
84
|
char *p=a, *q=p+1, c; //(配列以外の)変数
|
85
|
-
for(; *p&&*q
|
85
|
+
for(; *p&&(*q||(*p==' '&&(*p='-')&&0)); *++q||(q=++p+1)) *p>*q&&(c=*q,*q=*p,*p=c); //処理
|
86
86
|
printf("%s\n", a); //出力
|
87
87
|
}
|
88
88
|
```
|
28
修正
test
CHANGED
@@ -82,7 +82,7 @@
|
|
82
82
|
gets(a); //入力
|
83
83
|
#endif
|
84
84
|
char *p=a, *q=p+1, c; //(配列以外の)変数
|
85
|
-
for(; *p&&*q; *++q||(*p==' '&&(*p='-'),
|
85
|
+
for(; *p&&*q; *++q||(*p==' '&&(*p='-'),q=++p+1)) *p>*q&&(c=*q,*q=*p,*p=c); //処理
|
86
86
|
printf("%s\n", a); //出力
|
87
87
|
}
|
88
88
|
```
|
27
追加
test
CHANGED
@@ -68,3 +68,21 @@
|
|
68
68
|
printf("%s\n", b); //出力
|
69
69
|
}
|
70
70
|
```
|
71
|
+
---
|
72
|
+
選択ソート(コード依存)。
|
73
|
+
```c
|
74
|
+
#define __STDC_WANT_LIB_EXT1__ 1
|
75
|
+
#include <stdio.h>
|
76
|
+
#define M 50 //処理可能最大文字列長
|
77
|
+
int main(void) {
|
78
|
+
char a[M+1]; //配列
|
79
|
+
#ifdef __STDC_LIB_EXT1__
|
80
|
+
gets_s(a, M+1); //入力
|
81
|
+
#else
|
82
|
+
gets(a); //入力
|
83
|
+
#endif
|
84
|
+
char *p=a, *q=p+1, c; //(配列以外の)変数
|
85
|
+
for(; *p&&*q; *++q||(*p==' '&&(*p='-'),p++,q=p+1)) *p>*q&&(c=*q,*q=*p,*p=c); //処理
|
86
|
+
printf("%s\n", a); //出力
|
87
|
+
}
|
88
|
+
```
|
26
修正
test
CHANGED
@@ -56,7 +56,7 @@
|
|
56
56
|
#include <stdio.h>
|
57
57
|
#define M 50 //処理可能最大文字列長
|
58
58
|
int main(void) {
|
59
|
-
char a[M+1], b[M+1]
|
59
|
+
char a[M+1], b[M+1]; //配列
|
60
60
|
#ifdef __STDC_LIB_EXT1__
|
61
61
|
gets_s(a, M+1); //入力
|
62
62
|
#else
|
@@ -64,7 +64,7 @@
|
|
64
64
|
#endif
|
65
65
|
//(配列以外の)変数: i=入力文字, p=並び順文字+転記文字, o=出力先
|
66
66
|
char *i=a, *p=" -aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz", *o=b;
|
67
|
-
for(; *p; *++i||(i=a,p+=2)) *p==*i&&(*o++=p[1]); //処理
|
67
|
+
for(; *p; *++i||(i=a,p+=2)) *p==*i&&(*o++=p[1]); *o='\0'; //処理
|
68
68
|
printf("%s\n", b); //出力
|
69
69
|
}
|
70
70
|
```
|
25
修正
test
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
#else
|
44
44
|
gets(a); //入力
|
45
45
|
#endif
|
46
|
-
for(t=a, p=b; *p;
|
46
|
+
for(t=a, p=b; *p; *++t||(t=a,p++)) p[N+1]+=(*t==*p); //処理
|
47
47
|
for(t=a, p=b, b[0]='-'; *p; p++) while(p[N+1]--) *t++=*p; *t='\0'; printf("%s\n", a); //a に展開して出力
|
48
48
|
//for(p=b, b[0]='-'; *p; p++) while(p[N+1]--) putchar(*p); putchar('\n'); //直接出力(こっちの方が出力のためのループっぽい)
|
49
49
|
}
|
@@ -64,7 +64,7 @@
|
|
64
64
|
#endif
|
65
65
|
//(配列以外の)変数: i=入力文字, p=並び順文字+転記文字, o=出力先
|
66
66
|
char *i=a, *p=" -aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz", *o=b;
|
67
|
-
for(; *p; *++i
|
67
|
+
for(; *p; *++i||(i=a,p+=2)) *p==*i&&(*o++=p[1]); //処理
|
68
68
|
printf("%s\n", b); //出力
|
69
69
|
}
|
70
70
|
```
|
24
修正
test
CHANGED
@@ -64,7 +64,7 @@
|
|
64
64
|
#endif
|
65
65
|
//(配列以外の)変数: i=入力文字, p=並び順文字+転記文字, o=出力先
|
66
66
|
char *i=a, *p=" -aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz", *o=b;
|
67
|
-
for(; *p;
|
67
|
+
for(; *p; *++i?1:(i=a,p+=2)) *p==*i?*o++=p[1]:0; //処理
|
68
68
|
printf("%s\n", b); //出力
|
69
69
|
}
|
70
70
|
```
|
23
修正
test
CHANGED
@@ -62,8 +62,9 @@
|
|
62
62
|
#else
|
63
63
|
gets(a); //入力
|
64
64
|
#endif
|
65
|
+
//(配列以外の)変数: i=入力文字, p=並び順文字+転記文字, o=出力先
|
65
|
-
char *i=a, *p=" abcdefghijklmnopqrstuvwxyz", *o=b;
|
66
|
+
char *i=a, *p=" -aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz", *o=b;
|
66
|
-
for(; *p; (i=*++i?i:a)==a&&p+
|
67
|
+
for(; *p; (i=*++i?i:a)==a&&(p+=2), o+=*o!=0) *o=(*p==*i)*p[1]; //処理
|
67
68
|
printf("%s\n", b); //出力
|
68
69
|
}
|
69
70
|
```
|
22
修正
test
CHANGED
@@ -28,27 +28,29 @@
|
|
28
28
|
matukeso さんの『 0x1f で AND 』を用いれば、処理の行は ```a[c & 0x1f]++;``` だけになるので、ループの制限は問題無さそうで、そしたらいっそ b も無くして出力も```for(i=0; i<N; i++) for(j=0; j<a[i]; j++) putchar(i+(i?0x60:0x2d)); putchar('\n');``` ですかねぇ。
|
29
29
|
|
30
30
|
---
|
31
|
+
分布数えソート。
|
31
|
-
|
32
|
+
a に入力して b の後半にカウントして a に並べて(もしくは直接)出力。並べる部分が処理だと言われそう。
|
32
33
|
```c
|
33
34
|
#define __STDC_WANT_LIB_EXT1__ 1
|
34
35
|
#include <stdio.h>
|
35
|
-
#include <string.h>
|
36
36
|
#define M 50 //処理可能最大文字列長
|
37
37
|
#define N 27 //ソート対象文字(b)の文字数
|
38
|
-
int main(void){
|
38
|
+
int main(void) {
|
39
|
-
|
39
|
+
char *t, *p; //(配列以外の)変数
|
40
|
-
char a[
|
40
|
+
char a[M+1], b[N+1+N]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
41
41
|
#ifdef __STDC_LIB_EXT1__
|
42
|
-
gets_s(
|
42
|
+
gets_s(a, M+1); //入力
|
43
43
|
#else
|
44
|
-
gets(
|
44
|
+
gets(a); //入力
|
45
45
|
#endif
|
46
|
-
for(
|
46
|
+
for(t=a, p=b; *p; (t=*++t?t:a)==a&&p++) p[N+1]+=(*t==*p); //処理
|
47
|
-
for(
|
47
|
+
for(t=a, p=b, b[0]='-'; *p; p++) while(p[N+1]--) *t++=*p; *t='\0'; printf("%s\n", a); //a に展開して出力
|
48
|
+
//for(p=b, b[0]='-'; *p; p++) while(p[N+1]--) putchar(*p); putchar('\n'); //直接出力(こっちの方が出力のためのループっぽい)
|
48
49
|
}
|
49
50
|
```
|
50
51
|
---
|
52
|
+
選択(外部)ソート(?)。
|
51
|
-
a に入力して並び順に選んで b に溜め
|
53
|
+
a に入力して並び順に選んで b に溜めて出力。
|
52
54
|
```c
|
53
55
|
#define __STDC_WANT_LIB_EXT1__ 1
|
54
56
|
#include <stdio.h>
|
21
コード修正
test
CHANGED
@@ -61,7 +61,7 @@
|
|
61
61
|
gets(a); //入力
|
62
62
|
#endif
|
63
63
|
char *i=a, *p=" abcdefghijklmnopqrstuvwxyz", *o=b; //(配列以外の)変数: i=入力文字, p=並び順文字, o=出力先
|
64
|
-
for(; *p; (i=*++i?i:a)
|
64
|
+
for(; *p; (i=*++i?i:a)==a&&p++, o+=*o!=0) *o=(*p==*i)*(*p==' '?'-':*p); //処理
|
65
65
|
printf("%s\n", b); //出力
|
66
66
|
}
|
67
67
|
```
|
20
コード修正
test
CHANGED
@@ -48,20 +48,20 @@
|
|
48
48
|
}
|
49
49
|
```
|
50
50
|
---
|
51
|
-
a
|
51
|
+
a に入力して並び順に選んで b に溜めます。短絡評価でカウント制御。
|
52
52
|
```c
|
53
53
|
#define __STDC_WANT_LIB_EXT1__ 1
|
54
54
|
#include <stdio.h>
|
55
55
|
#define M 50 //処理可能最大文字列長
|
56
56
|
int main(void) {
|
57
|
-
char a[
|
57
|
+
char a[M+1], b[M+1]={0}; //配列
|
58
58
|
#ifdef __STDC_LIB_EXT1__
|
59
59
|
gets_s(a, M+1); //入力
|
60
60
|
#else
|
61
61
|
gets(a); //入力
|
62
62
|
#endif
|
63
|
-
char *i=a, *p=" abcdefghijklmnopqrstuvwxyz", *o=
|
63
|
+
char *i=a, *p=" abcdefghijklmnopqrstuvwxyz", *o=b; //(配列以外の)変数: i=入力文字, p=並び順文字, o=出力先
|
64
64
|
for(; *p; (i=*++i?i:a)!=a||p++, o+=*o!=0) *o=(*p==*i)*(*p==' '?'-':*p); //処理
|
65
|
-
printf("%s\n",
|
65
|
+
printf("%s\n", b); //出力
|
66
66
|
}
|
67
67
|
```
|
19
コード修正
test
CHANGED
@@ -48,21 +48,20 @@
|
|
48
48
|
}
|
49
49
|
```
|
50
50
|
---
|
51
|
-
a 前半に入力して
|
51
|
+
a 前半に入力して並び順に選んで a 後半に溜めます。短絡評価でカウント制御。
|
52
52
|
```c
|
53
53
|
#define __STDC_WANT_LIB_EXT1__ 1
|
54
54
|
#include <stdio.h>
|
55
55
|
#define M 50 //処理可能最大文字列長
|
56
|
-
#define N 27 //ソート対象文字(b)の文字数
|
57
56
|
int main(void) {
|
58
|
-
char a[(M+1)*2]={0}
|
57
|
+
char a[(M+1)*2]={0}; //配列
|
59
58
|
#ifdef __STDC_LIB_EXT1__
|
60
59
|
gets_s(a, M+1); //入力
|
61
60
|
#else
|
62
61
|
gets(a); //入力
|
63
62
|
#endif
|
64
|
-
//(配列以外の)変数: i=
|
63
|
+
char *i=a, *p=" abcdefghijklmnopqrstuvwxyz", *o=&a[M+1]; //(配列以外の)変数: i=入力文字, p=並び順文字, o=出力先
|
65
|
-
for(
|
64
|
+
for(; *p; (i=*++i?i:a)!=a||p++, o+=*o!=0) *o=(*p==*i)*(*p==' '?'-':*p); //処理
|
66
65
|
printf("%s\n", &a[M+1]); //出力
|
67
66
|
}
|
68
67
|
```
|
18
コード修正(難読化?)
test
CHANGED
@@ -48,22 +48,21 @@
|
|
48
48
|
}
|
49
49
|
```
|
50
50
|
---
|
51
|
-
a
|
51
|
+
a 前半に入力して b の順に選んで a 後半に溜めます。短絡評価でカウント制御。
|
52
|
-
a を 1 次元にしたり、 j や k をポインタにしたりも可です。
|
53
52
|
```c
|
54
53
|
#define __STDC_WANT_LIB_EXT1__ 1
|
55
54
|
#include <stdio.h>
|
56
55
|
#define M 50 //処理可能最大文字列長
|
57
56
|
#define N 27 //ソート対象文字(b)の文字数
|
58
|
-
int main(void){
|
57
|
+
int main(void) {
|
59
|
-
int i, j, k; //(配列以外の)変数
|
60
|
-
char a[
|
58
|
+
char a[(M+1)*2]={0}, b[N+1]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
61
59
|
#ifdef __STDC_LIB_EXT1__
|
62
60
|
gets_s(a, M+1); //入力
|
63
61
|
#else
|
64
62
|
gets(a); //入力
|
65
63
|
#endif
|
64
|
+
//(配列以外の)変数: i=a内入力文字, p=b内検索中文字, o=a内出力先
|
66
|
-
for(i=
|
65
|
+
for(char *i=a, *p=b, *o=&a[M+1]; *p; (i=*++i?i:a)!=a||p++, o+=*o!=0) *o=(*p==*i)*(*p==' '?'-':*p); //処理
|
67
|
-
printf("%s\n", a[1]); //出力
|
66
|
+
printf("%s\n", &a[M+1]); //出力
|
68
67
|
}
|
69
68
|
```
|
17
追記
test
CHANGED
@@ -49,6 +49,7 @@
|
|
49
49
|
```
|
50
50
|
---
|
51
51
|
a[0] に入力して b の順に選んで a[1] に溜めます。短絡評価でカウント制御。
|
52
|
+
a を 1 次元にしたり、 j や k をポインタにしたりも可です。
|
52
53
|
```c
|
53
54
|
#define __STDC_WANT_LIB_EXT1__ 1
|
54
55
|
#include <stdio.h>
|
16
strlen 外し等
test
CHANGED
@@ -48,22 +48,21 @@
|
|
48
48
|
}
|
49
49
|
```
|
50
50
|
---
|
51
|
-
選
|
51
|
+
a[0] に入力して b の順に選んで a[1] に溜めます。短絡評価でカウント制御。
|
52
52
|
```c
|
53
53
|
#define __STDC_WANT_LIB_EXT1__ 1
|
54
54
|
#include <stdio.h>
|
55
|
-
#include <string.h>
|
56
55
|
#define M 50 //処理可能最大文字列長
|
57
56
|
#define N 27 //ソート対象文字(b)の文字数
|
58
57
|
int main(void){
|
59
|
-
int i, j, k
|
58
|
+
int i, j, k; //(配列以外の)変数
|
60
59
|
char a[2][M+1]={0}, b[N+1]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
61
60
|
#ifdef __STDC_LIB_EXT1__
|
62
61
|
gets_s(a, M+1); //入力
|
63
62
|
#else
|
64
63
|
gets(a); //入力
|
65
64
|
#endif
|
66
|
-
for(i=j=k=0
|
65
|
+
for(i=j=k=0; b[j]; (i=a[0][++i]?i:0)||j++, k+=a[1][k]!=0) a[1][k]=(b[j]==a[0][i])*(b[j]==' '?'-':b[j]); //処理
|
67
66
|
printf("%s\n", a[1]); //出力
|
68
67
|
}
|
69
68
|
```
|
15
追加
test
CHANGED
@@ -47,3 +47,23 @@
|
|
47
47
|
for(i=0, k=N, b[0]='-'; i<N; i++) for(j=0; j<a[i]; j++) b[k++]=b[i]; b[k]='\0'; printf("%s\n", &b[N]); //出力
|
48
48
|
}
|
49
49
|
```
|
50
|
+
---
|
51
|
+
選択外部ソート
|
52
|
+
```c
|
53
|
+
#define __STDC_WANT_LIB_EXT1__ 1
|
54
|
+
#include <stdio.h>
|
55
|
+
#include <string.h>
|
56
|
+
#define M 50 //処理可能最大文字列長
|
57
|
+
#define N 27 //ソート対象文字(b)の文字数
|
58
|
+
int main(void){
|
59
|
+
int i, j, k, l; //(配列以外の)変数
|
60
|
+
char a[2][M+1]={0}, b[N+1]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
61
|
+
#ifdef __STDC_LIB_EXT1__
|
62
|
+
gets_s(a, M+1); //入力
|
63
|
+
#else
|
64
|
+
gets(a); //入力
|
65
|
+
#endif
|
66
|
+
for(i=j=k=0, l=strlen(a); i<l*N; i++, j=i/l, k+=a[1][k]!=0) a[1][k]=(b[j]==a[0][i%l]?(b[j]==' '?'-':b[j]):0); //処理
|
67
|
+
printf("%s\n", a[1]); //出力
|
68
|
+
}
|
69
|
+
```
|
14
修正
test
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
#else
|
44
44
|
gets(&b[N]); //入力
|
45
45
|
#endif
|
46
|
-
for(i=
|
46
|
+
for(i=j=k=0; i<strlen(&b[N])*N; i++, j=i%N, k=i/N) a[j]+=(b[j]==b[N+k]); //処理
|
47
47
|
for(i=0, k=N, b[0]='-'; i<N; i++) for(j=0; j<a[i]; j++) b[k++]=b[i]; b[k]='\0'; printf("%s\n", &b[N]); //出力
|
48
48
|
}
|
49
49
|
```
|
13
修正
test
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
---aaacccdeefgiiiiiiillloopprrssstuux
|
26
26
|
```
|
27
27
|
|
28
|
-
matukeso さんの『 0x1f で AND 』を用いれば、処理の行は ```a[c & 0x1f]++;``` だけになるので、ループの制限は問題無さそうで、そしたらいっそ b も無くして出力も```for(i=0; i<N; i++) for(j=0; j<a[i]; j++) putchar(i+i?0x60:0x2d); putchar('\n');``` ですかねぇ。
|
28
|
+
matukeso さんの『 0x1f で AND 』を用いれば、処理の行は ```a[c & 0x1f]++;``` だけになるので、ループの制限は問題無さそうで、そしたらいっそ b も無くして出力も```for(i=0; i<N; i++) for(j=0; j<a[i]; j++) putchar(i+(i?0x60:0x2d)); putchar('\n');``` ですかねぇ。
|
29
29
|
|
30
30
|
---
|
31
31
|
2重ループ的単ループ、 gets(_s) 、比較の 1/0 、並び替えた文字列を作ってから printf とか…。
|
12
gets 、 gets_s を EXT1 で切り替え
test
CHANGED
@@ -30,6 +30,7 @@
|
|
30
30
|
---
|
31
31
|
2重ループ的単ループ、 gets(_s) 、比較の 1/0 、並び替えた文字列を作ってから printf とか…。
|
32
32
|
```c
|
33
|
+
#define __STDC_WANT_LIB_EXT1__ 1
|
33
34
|
#include <stdio.h>
|
34
35
|
#include <string.h>
|
35
36
|
#define M 50 //処理可能最大文字列長
|
@@ -37,7 +38,11 @@
|
|
37
38
|
int main(void){
|
38
39
|
int i, j, k; //(配列以外の)変数
|
39
40
|
char a[N]={0}, b[N+M+1]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
41
|
+
#ifdef __STDC_LIB_EXT1__
|
42
|
+
gets_s(&b[N], M+1); //入力
|
43
|
+
#else
|
40
|
-
gets
|
44
|
+
gets(&b[N]); //入力
|
45
|
+
#endif
|
41
46
|
for(i=0, j=0, k=strlen(&b[N])*N; i<k; i++, j=i%N) a[j]+=(b[i/N]==b[j]); //処理
|
42
47
|
for(i=0, k=N, b[0]='-'; i<N; i++) for(j=0; j<a[i]; j++) b[k++]=b[i]; b[k]='\0'; printf("%s\n", &b[N]); //出力
|
43
48
|
}
|
11
修正
test
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
---aaacccdeefgiiiiiiillloopprrssstuux
|
26
26
|
```
|
27
27
|
|
28
|
-
matukeso さんの『 0x1f で AND 』を用いれば、処理の行は ```a[c & 0x1f]++;``` だけになるので、ループの制限は問題無さそうで、そしたらいっそ
|
28
|
+
matukeso さんの『 0x1f で AND 』を用いれば、処理の行は ```a[c & 0x1f]++;``` だけになるので、ループの制限は問題無さそうで、そしたらいっそ b も無くして出力も```for(i=0; i<N; i++) for(j=0; j<a[i]; j++) putchar(i+i?0x60:0x2d); putchar('\n');``` ですかねぇ。
|
29
29
|
|
30
30
|
---
|
31
31
|
2重ループ的単ループ、 gets(_s) 、比較の 1/0 、並び替えた文字列を作ってから printf とか…。
|
10
修正
test
CHANGED
@@ -24,7 +24,9 @@
|
|
24
24
|
super califragilistic expiali docious
|
25
25
|
---aaacccdeefgiiiiiiillloopprrssstuux
|
26
26
|
```
|
27
|
+
|
27
|
-
matukeso さんの『 0x1f で AND 』を用いれば、処理の行は ```a[c & 0x1f]++;``` だけになるので、ループの制限は問題無さそうで、そしたらいっそ j と b も無くして出力も```for(i=0; i<N; i++) putchar(a[i]+
|
28
|
+
matukeso さんの『 0x1f で AND 』を用いれば、処理の行は ```a[c & 0x1f]++;``` だけになるので、ループの制限は問題無さそうで、そしたらいっそ j と b も無くして出力も```for(i=0; i<N; i++) putchar(a[i]+i?0x60:0x2d); putchar('\n');``` ですかねぇ。
|
29
|
+
|
28
30
|
---
|
29
31
|
2重ループ的単ループ、 gets(_s) 、比較の 1/0 、並び替えた文字列を作ってから printf とか…。
|
30
32
|
```c
|
9
追記
test
CHANGED
@@ -24,6 +24,7 @@
|
|
24
24
|
super califragilistic expiali docious
|
25
25
|
---aaacccdeefgiiiiiiillloopprrssstuux
|
26
26
|
```
|
27
|
+
matukeso さんの『 0x1f で AND 』を用いれば、処理の行は ```a[c & 0x1f]++;``` だけになるので、ループの制限は問題無さそうで、そしたらいっそ j と b も無くして出力も```for(i=0; i<N; i++) putchar(a[i]+a[i]?0x60:0x2d); putchar('\n');``` ですかねぇ。
|
27
28
|
---
|
28
29
|
2重ループ的単ループ、 gets(_s) 、比較の 1/0 、並び替えた文字列を作ってから printf とか…。
|
29
30
|
```c
|
8
修正
test
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
---aaacccdeefgiiiiiiillloopprrssstuux
|
26
26
|
```
|
27
27
|
---
|
28
|
-
2重ループ的単ループ、 gets(_s) 、
|
28
|
+
2重ループ的単ループ、 gets(_s) 、比較の 1/0 、並び替えた文字列を作ってから printf とか…。
|
29
29
|
```c
|
30
30
|
#include <stdio.h>
|
31
31
|
#include <string.h>
|
7
コメント修正
test
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
```c
|
8
8
|
#include <stdio.h>
|
9
9
|
#define M 50 //処理可能最大文字列長
|
10
|
-
#define N 27 //ソート対象
|
10
|
+
#define N 27 //ソート対象文字(b)の文字数
|
11
11
|
int main(void){
|
12
12
|
int i, j, c; //(配列以外の)変数
|
13
13
|
char a[N+1]={0}, b[N+1]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
@@ -30,7 +30,7 @@
|
|
30
30
|
#include <stdio.h>
|
31
31
|
#include <string.h>
|
32
32
|
#define M 50 //処理可能最大文字列長
|
33
|
-
#define N 27 //ソート対象
|
33
|
+
#define N 27 //ソート対象文字(b)の文字数
|
34
34
|
int main(void){
|
35
35
|
int i, j, k; //(配列以外の)変数
|
36
36
|
char a[N]={0}, b[N+M+1]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
6
追加
test
CHANGED
@@ -24,3 +24,18 @@
|
|
24
24
|
super califragilistic expiali docious
|
25
25
|
---aaacccdeefgiiiiiiillloopprrssstuux
|
26
26
|
```
|
27
|
+
---
|
28
|
+
2重ループ的単ループ、 gets(_s) 、論理式の 1/0 、並び替えた文字列を作ってから printf とか…。
|
29
|
+
```c
|
30
|
+
#include <stdio.h>
|
31
|
+
#include <string.h>
|
32
|
+
#define M 50 //処理可能最大文字列長
|
33
|
+
#define N 27 //ソート対象の文字列(b)の文字列の長さ
|
34
|
+
int main(void){
|
35
|
+
int i, j, k; //(配列以外の)変数
|
36
|
+
char a[N]={0}, b[N+M+1]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
37
|
+
gets/*_s*/(&b[N]); //入力
|
38
|
+
for(i=0, j=0, k=strlen(&b[N])*N; i<k; i++, j=i%N) a[j]+=(b[i/N]==b[j]); //処理
|
39
|
+
for(i=0, k=N, b[0]='-'; i<N; i++) for(j=0; j<a[i]; j++) b[k++]=b[i]; b[k]='\0'; printf("%s\n", &b[N]); //出力
|
40
|
+
}
|
41
|
+
```
|
5
define 化
test
CHANGED
@@ -6,12 +6,14 @@
|
|
6
6
|
|
7
7
|
```c
|
8
8
|
#include <stdio.h>
|
9
|
+
#define M 50 //処理可能最大文字列長
|
10
|
+
#define N 27 //ソート対象の文字列(b)の文字列の長さ
|
9
|
-
int main(void)
|
11
|
+
int main(void){
|
10
12
|
int i, j, c; //(配列以外の)変数
|
11
|
-
char a[
|
13
|
+
char a[N+1]={0}, b[N+1]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
12
|
-
for(i=0; i<
|
14
|
+
for(i=0; i<M && (c=getchar())!=EOF; i++) //入力(これは入力の為のループなのです!)
|
13
|
-
{ for(j=0; j<
|
15
|
+
{ for(j=0; j<N && b[j]!=c; j++); a[j]++; } //処理
|
14
|
-
for(i=0, b[0]='-'; i<
|
16
|
+
for(i=0, b[0]='-'; i<N; i++) for(j=0; j<a[i]; j++) putchar(b[i]); putchar('\n'); //出力
|
15
17
|
}
|
16
18
|
```
|
17
19
|
```plain
|
4
編集
test
CHANGED
@@ -6,10 +6,11 @@
|
|
6
6
|
|
7
7
|
```c
|
8
8
|
#include <stdio.h>
|
9
|
-
int main(void){
|
9
|
+
int main(void) {
|
10
10
|
int i, j, c; //(配列以外の)変数
|
11
|
-
char a[27+1]={0}, b[
|
11
|
+
char a[27+1]={0}, b[]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
12
|
+
for(i=0; i<50 && (c=getchar())!=EOF; i++) //入力(これは入力の為のループなのです!)
|
12
|
-
|
13
|
+
{ for(j=0; j<27 && b[j]!=c; j++); a[j]++; } //処理
|
13
14
|
for(i=0, b[0]='-'; i<27; i++) for(j=0; j<a[i]; j++) putchar(b[i]); putchar('\n'); //出力
|
14
15
|
}
|
15
16
|
```
|
3
修正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
ソートの中には、実際には
|
1
|
+
ソートの中には、"実際には元のデータは並び替えずに、並び替えたデータを作り出す" ソートというのもあります。
|
2
2
|
|
3
3
|
---
|
4
4
|
|
2
修正
test
CHANGED
@@ -2,13 +2,15 @@
|
|
2
2
|
|
3
3
|
---
|
4
4
|
|
5
|
+
c で行数制限などほぼ無意味なのに…。
|
6
|
+
|
5
7
|
```c
|
6
8
|
#include <stdio.h>
|
7
9
|
int main(void){
|
8
|
-
int i, j, c;
|
10
|
+
int i, j, c; //(配列以外の)変数
|
9
|
-
char a[27+1]={0}, b[27+1]=" abcdefghijklmnopqrstuvwxyz";
|
11
|
+
char a[27+1]={0}, b[27+1]=" abcdefghijklmnopqrstuvwxyz"; //配列
|
10
|
-
for(i=0; i<50 && (c=getchar())!=EOF; i++) { for(j=0; j<27 && b[j]!=c; j++); a[j]++; }
|
12
|
+
for(i=0; i<50 && (c=getchar())!=EOF; i++) { for(j=0; j<27 && b[j]!=c; j++); a[j]++; } //入力・処理
|
11
|
-
for(i=0, b[0]='-'; i<27; i++) for(j=0; j<a[i]; j++) putchar(b[i]); putchar('\n');
|
13
|
+
for(i=0, b[0]='-'; i<27; i++) for(j=0; j<a[i]; j++) putchar(b[i]); putchar('\n'); //出力
|
12
14
|
}
|
13
15
|
```
|
14
16
|
```plain
|
1
コード追加
test
CHANGED
@@ -1 +1,21 @@
|
|
1
1
|
ソートの中には、実際には "元のデータは並び替えずに、並び替えたデータを作り出す" ソートというのもあります。
|
2
|
+
|
3
|
+
---
|
4
|
+
|
5
|
+
```c
|
6
|
+
#include <stdio.h>
|
7
|
+
int main(void){
|
8
|
+
int i, j, c;
|
9
|
+
char a[27+1]={0}, b[27+1]=" abcdefghijklmnopqrstuvwxyz";
|
10
|
+
for(i=0; i<50 && (c=getchar())!=EOF; i++) { for(j=0; j<27 && b[j]!=c; j++); a[j]++; }
|
11
|
+
for(i=0, b[0]='-'; i<27; i++) for(j=0; j<a[i]; j++) putchar(b[i]); putchar('\n');
|
12
|
+
}
|
13
|
+
```
|
14
|
+
```plain
|
15
|
+
brick quiz whangs jumpy veldt fox.
|
16
|
+
-----abcdefghiijklmnopqrstuuvwxyz
|
17
|
+
```
|
18
|
+
```plain
|
19
|
+
super califragilistic expiali docious
|
20
|
+
---aaacccdeefgiiiiiiillloopprrssstuux
|
21
|
+
```
|