質問編集履歴

6

へんこう

2020/08/01 04:05

投稿

KeiD
KeiD

スコア26

test CHANGED
File without changes
test CHANGED
@@ -201,57 +201,3 @@
201
201
  ijklmと入力すると空白が出力されて、元からijklmが与えられていたプログラムと同じ出力になりません。
202
202
 
203
203
  どう直せばよいがご存じの方よろしくお願い致します。
204
-
205
-
206
-
207
- また5文字の中に同じ文字が存在する場合に同じ文字列を非表示にする方法を知りたいのですが、同じ文字列を表示する場合例えば
208
-
209
-
210
-
211
- iiikmと同じ文字が4つ続く場合の出力が
212
-
213
-
214
-
215
- iiiik
216
-
217
- iiiik iiiki iiiik iiiki iikii iikii iiiik iiiki
218
-
219
- iiiik iiiki iikii iikii iiiik iiiki iiiik iiiki
220
-
221
- iikii iikii ikiii ikiii ikiii ikiii ikiii ikiii
222
-
223
- iiiik iiiki iiiik iiiki iikii iikii iiiik iiiki
224
-
225
- iiiik iiiki iikii iikii iiiik iiiki iiiik iiiki
226
-
227
- iikii iikii ikiii ikiii ikiii ikiii ikiii ikiii
228
-
229
- iiiik iiiki iiiik iiiki iikii iikii iiiik iiiki
230
-
231
- iiiik iiiki iikii iikii iiiik iiiki iiiik iiiki
232
-
233
- iikii iikii ikiii ikiii ikiii ikiii ikiii ikiii
234
-
235
- iiiik iiiki iiiik iiiki iikii iikii iiiik iiiki
236
-
237
- iiiik iiiki iikii iikii iiiik iiiki iiiik iiiki
238
-
239
- iikii iikii ikiii ikiii ikiii ikiii ikiii ikiii
240
-
241
- kiiii kiiii kiiii kiiii kiiii kiiii kiiii kiiii
242
-
243
- kiiii kiiii kiiii kiiii kiiii kiiii kiiii kiiii
244
-
245
- kiiii kiiii kiiii kiiii kiiii kiiii kiiii kiiii
246
-
247
-
248
-
249
- となりますが、同じ文字列を非表示にする表示方法
250
-
251
-
252
-
253
- iiiik
254
-
255
- iiiik iiiki iikii ikiii kiiii となるようにするにはどう変更すればよいか
256
-
257
- ご存じの方よろしくお願い致します。

5

同じ文字列対応

2020/08/01 04:05

投稿

KeiD
KeiD

スコア26

test CHANGED
File without changes
test CHANGED
@@ -200,4 +200,58 @@
200
200
 
201
201
  ijklmと入力すると空白が出力されて、元からijklmが与えられていたプログラムと同じ出力になりません。
202
202
 
203
- どう直せばよいがご存じの方よろしくお願い致します
203
+ どう直せばよいがご存じの方よろしくお願い致します
204
+
205
+
206
+
207
+ また5文字の中に同じ文字が存在する場合に同じ文字列を非表示にする方法を知りたいのですが、同じ文字列を表示する場合例えば
208
+
209
+
210
+
211
+ iiikmと同じ文字が4つ続く場合の出力が
212
+
213
+
214
+
215
+ iiiik
216
+
217
+ iiiik iiiki iiiik iiiki iikii iikii iiiik iiiki
218
+
219
+ iiiik iiiki iikii iikii iiiik iiiki iiiik iiiki
220
+
221
+ iikii iikii ikiii ikiii ikiii ikiii ikiii ikiii
222
+
223
+ iiiik iiiki iiiik iiiki iikii iikii iiiik iiiki
224
+
225
+ iiiik iiiki iikii iikii iiiik iiiki iiiik iiiki
226
+
227
+ iikii iikii ikiii ikiii ikiii ikiii ikiii ikiii
228
+
229
+ iiiik iiiki iiiik iiiki iikii iikii iiiik iiiki
230
+
231
+ iiiik iiiki iikii iikii iiiik iiiki iiiik iiiki
232
+
233
+ iikii iikii ikiii ikiii ikiii ikiii ikiii ikiii
234
+
235
+ iiiik iiiki iiiik iiiki iikii iikii iiiik iiiki
236
+
237
+ iiiik iiiki iikii iikii iiiik iiiki iiiik iiiki
238
+
239
+ iikii iikii ikiii ikiii ikiii ikiii ikiii ikiii
240
+
241
+ kiiii kiiii kiiii kiiii kiiii kiiii kiiii kiiii
242
+
243
+ kiiii kiiii kiiii kiiii kiiii kiiii kiiii kiiii
244
+
245
+ kiiii kiiii kiiii kiiii kiiii kiiii kiiii kiiii
246
+
247
+
248
+
249
+ となりますが、同じ文字列を非表示にする表示方法
250
+
251
+
252
+
253
+ iiiik
254
+
255
+ iiiik iiiki iikii ikiii kiiii となるようにするにはどう変更すればよいか
256
+
257
+ ご存じの方よろしくお願い致します。

4

修正

2020/08/01 00:42

投稿

KeiD
KeiD

スコア26

test CHANGED
File without changes
test CHANGED
@@ -4,90 +4,84 @@
4
4
 
5
5
  char disp[5]="ijklm";
6
6
 
7
- と並べ替える文字を与えている場合は以下のプログラムを実行すると
7
+ と並べ替える文字を与えている場合は以下のプログラム
8
8
 
9
9
  ```ここに言語を入力
10
10
 
11
11
  #include <stdio.h>
12
12
 
13
-
14
-
15
13
  char data[5]="ijklm";
16
14
 
17
15
  char disp[5]="ijklm";
18
16
 
19
-
20
-
21
17
  int flg[5]={0};
22
18
 
23
-
24
-
25
- int sub_(int num, int c) {
26
-
27
- if( num == 5 ) {
28
-
29
- printf("%s ", disp);
30
-
31
- // 8個おきに改行
32
-
33
- if ( ++c % 8 == 0 ) {
34
-
35
- putchar('\n');
36
-
37
- }
38
-
39
- } else {
40
-
41
- int i;
42
-
43
- for ( i = 0; i < 5; i++) {
44
-
45
- if ( !flg[i] ) {
46
-
47
- flg[i] = 1;
48
-
49
- disp[num] = data[i];
50
-
51
- c = sub_(num+1, c);
52
-
53
- flg[i] = 0;
54
-
55
- }
56
-
57
- }
58
-
59
- }
60
-
61
- return c;
62
-
63
- }
64
-
65
-
66
-
67
- // 順列を生成し、その総数を返す
68
-
69
- int sub(int num) {
70
-
71
- return sub_(num, 0);
72
-
73
- }
74
-
75
-
76
-
77
- int main() {
78
-
79
- int c = sub(0);
80
-
81
- printf("\n%d\n", c);
82
-
83
- return 0;
84
-
85
- }
19
+ void sub(int num)
20
+
21
+ {
22
+
23
+ static int cnt = 0;
24
+
25
+ if (num == 5) {
26
+
27
+ printf("%s ",disp);
28
+
29
+ cnt++;
30
+
31
+ if (cnt % 8 == 0) {
32
+
33
+ printf("\n");
34
+
35
+ cnt = 0;
36
+
37
+ }
38
+
39
+ return;
40
+
41
+ }
42
+
43
+
44
+
45
+ for (int i = 0; i < 5; i++) {
46
+
47
+ if (!flg[i]) {
48
+
49
+ flg[i] = 1;
50
+
51
+ disp[num] = data[i];
52
+
53
+ sub(num + 1);
54
+
55
+ flg[i] = 0;
56
+
57
+ }
58
+
59
+ }
60
+
61
+ }
62
+
63
+
64
+
65
+ int main()
66
+
67
+ {
68
+
69
+ sub(0);
70
+
71
+ return 0;
72
+
73
+ }
74
+
75
+
86
76
 
87
77
 
88
78
 
89
79
  ```
90
80
 
81
+ を実行すると
82
+
83
+
84
+
91
85
  ikljm iklmj ikmjl ikmlj iljkm iljmk ilkjm ilkmj
92
86
 
93
87
  ilmjk ilmkj imjkl imjlk imkjl imklj imljk imlkj

3

空白出力

2020/07/31 20:16

投稿

KeiD
KeiD

スコア26

test CHANGED
File without changes
test CHANGED
@@ -126,6 +126,8 @@
126
126
 
127
127
  ```ここに言語を入力
128
128
 
129
+
130
+
129
131
  #include <stdio.h>
130
132
 
131
133
 
@@ -134,13 +136,13 @@
134
136
 
135
137
  {
136
138
 
137
- char data[5];
139
+ char* data[5];
138
-
140
+
139
- char disp[5];
141
+ char* disp[5];
140
142
 
141
143
  int flg[5]={0};
142
144
 
143
-
145
+
144
146
 
145
147
  static int cnt = 0;
146
148
 
@@ -186,9 +188,11 @@
186
188
 
187
189
  int main(){
188
190
 
189
-
191
+ char* data[5];
192
+
190
-
193
+ char* disp[5];
194
+
191
- scanf("%c ",&data[5]);
195
+ scanf("%s %s",&data, &disp);
192
196
 
193
197
  sub(0);
194
198
 
@@ -200,6 +204,6 @@
200
204
 
201
205
  ```
202
206
 
203
- ijklmと入力してもエラーて、元からijklmが与えられていたプログラムと同じ出力になりません。
207
+ ijklmと入力すると空白出力されて、元からijklmが与えられていたプログラムと同じ出力になりません。
204
208
 
205
209
  どう直せばよいがご存じの方よろしくお願い致します

2

出力ついか

2020/07/31 20:08

投稿

KeiD
KeiD

スコア26

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  char disp[5]="ijklm";
6
6
 
7
- と並べ替える文字を与えている場合は以下のプログラムで158列の出力がでのですが
7
+ と並べ替える文字を与えている場合は以下のプログラムを実
8
8
 
9
9
  ```ここに言語を入力
10
10
 
@@ -88,6 +88,38 @@
88
88
 
89
89
  ```
90
90
 
91
+ ikljm iklmj ikmjl ikmlj iljkm iljmk ilkjm ilkmj
92
+
93
+ ilmjk ilmkj imjkl imjlk imkjl imklj imljk imlkj
94
+
95
+ jiklm jikml jilkm jilmk jimkl jimlk jkilm jkiml
96
+
97
+ jklim jklmi jkmil jkmli jlikm jlimk jlkim jlkmi
98
+
99
+ jlmik jlmki jmikl jmilk jmkil jmkli jmlik jmlki
100
+
101
+ kijlm kijml kiljm kilmj kimjl kimlj kjilm kjiml
102
+
103
+ kjlim kjlmi kjmil kjmli klijm klimj kljim kljmi
104
+
105
+ klmij klmji kmijl kmilj kmjil kmjli kmlij kmlji
106
+
107
+ lijkm lijmk likjm likmj limjk limkj ljikm ljimk
108
+
109
+ ljkim ljkmi ljmik ljmki lkijm lkimj lkjim lkjmi
110
+
111
+ lkmij lkmji lmijk lmikj lmjik lmjki lmkij lmkji
112
+
113
+ mijkl mijlk mikjl miklj miljk milkj mjikl mjilk
114
+
115
+ mjkil mjkli mjlik mjlki mkijl mkilj mkjil mkjli
116
+
117
+ mklij mklji mlijk mlikj mljik mljki mlkij mlkji
118
+
119
+ と15行8列の出力がでるのですが
120
+
121
+
122
+
91
123
  上記プログラムを下記のように改良し、5文字を入力するようにすると
92
124
 
93
125
 

1

コードじょきょ

2020/07/31 16:05

投稿

KeiD
KeiD

スコア26

test CHANGED
File without changes
test CHANGED
@@ -94,7 +94,7 @@
94
94
 
95
95
  ```ここに言語を入力
96
96
 
97
- コード#include <stdio.h>
97
+ #include <stdio.h>
98
98
 
99
99
 
100
100