質問編集履歴

3

前提・実現したいことの部分の追加

2019/08/29 06:06

投稿

rinringo_88
rinringo_88

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,13 @@
1
1
  }### 前提・実現したいこと
2
2
 
3
+ できるだけバブルソートの部分を入れ替えるのを繰り返すという方法で、年齢を小さい順に表示させたいです。
4
+
5
+ 以下の画像に書いた考え方でバブルソートの部分をコーディングしたいです。
6
+
7
+ http://s.kota2.net/1567057495.png
8
+
9
+ http://s.kota2.net/1567057524.png
10
+
3
11
 
4
12
 
5
13
  ここに質問の内容を詳しく書いてください。
@@ -298,6 +306,14 @@
298
306
 
299
307
  ここに問題に対して試したことを記載してください。
300
308
 
309
+ 双方向リストの入れ替えについて以下の画像のように考えました。
310
+
311
+ http://s.kota2.net/1567057495.png
312
+
313
+ http://s.kota2.net/1567057524.png
314
+
315
+
316
+
301
317
 
302
318
 
303
319
  ### 補足情報(FW/ツールのバージョンなど)

2

バブルソートのコーディング部分を自分なりに考えて変更しました。

2019/08/29 06:06

投稿

rinringo_88
rinringo_88

スコア4

test CHANGED
File without changes
test CHANGED
@@ -72,6 +72,10 @@
72
72
 
73
73
  ### 発生している問題・エラーメッセージ
74
74
 
75
+ バブルソートの部分が上手く入れ替えできず、for文が回らない。
76
+
77
+ コンパイルすると「ファイルのオープンに成功しました」という文章しか表示されない。
78
+
75
79
 
76
80
 
77
81
  ```
@@ -102,11 +106,11 @@
102
106
 
103
107
  int number; //社員番号
104
108
 
105
- char name[50]; //名前
109
+ char name[50]; //名前
106
110
 
107
111
  int age; //年齢
108
112
 
109
- char gender[10]; //性別
113
+ char gender[10]; //性別
110
114
 
111
115
  struct ST_MEMBER *prev;
112
116
 
@@ -126,7 +130,7 @@
126
130
 
127
131
  int i, j, max, ret;
128
132
 
129
- struct ST_MEMBER *str, *str2 = 0, *temp, *temp2;
133
+ struct ST_MEMBER *str, *str2 = 0, *str3 = 0, *temp;
130
134
 
131
135
 
132
136
 
@@ -174,7 +178,7 @@
174
178
 
175
179
  {
176
180
 
177
- str2 = str; //アドレス
181
+ str2 = str;
178
182
 
179
183
  str2->prev = 0;
180
184
 
@@ -202,43 +206,59 @@
202
206
 
203
207
 
204
208
 
209
+
210
+
205
211
  if(ret == -1) //EOF
206
212
 
207
213
  break;
208
214
 
209
215
  }
210
216
 
217
+
218
+
211
-
219
+ //先頭に戻る
212
-
213
-
214
220
 
215
221
  for(i = 0; str2->prev != 0; i++)
216
222
 
217
223
  str2 = str2->prev;
218
224
 
219
-
220
-
221
-
222
-
225
+
226
+
223
- for(i = 0; (str2->next->age) != 0; i++)
227
+ for(i = 0; (str2->next->age) != 0; i++)
224
-
228
+
225
- {
229
+ {
226
-
230
+
231
+
232
+
227
- if((str2->age) > (str2->next->age)) //年齢を順に表示したいので年齢を比較する。
233
+ if((str2->age) > (str2->next->age)) //年齢を小さい順に表示したいので年齢を比較する。
234
+
228
-
235
+ {
236
+
229
- { //全部の構造体を入れ替える(1行ずつ入れ替える)
237
+ //全部の構造体を入れ替える(1行ずつ入れ替える)
230
-
238
+
239
+
240
+
231
- temp = str2;
241
+ str2->next = str2->next->next;
232
-
242
+
233
- str2 = (str->next);
243
+ str2->prev = str2->next;
244
+
245
+
246
+
234
-
247
+ str->next->next = str2->next->prev;
248
+
235
- (str->next) = temp;
249
+ str->next->prev = str2->prev;
250
+
251
+
252
+
253
+ }
236
254
 
237
255
  }
238
256
 
239
- }
257
+
240
-
241
- /*
258
+
259
+
260
+
261
+
242
262
 
243
263
  for(i = 0; str2->next != 0; i++)
244
264
 
@@ -248,11 +268,9 @@
248
268
 
249
269
  str2 = str2->next;
250
270
 
251
- }
271
+ }
252
-
253
- */
272
+
254
-
255
-
273
+
256
274
 
257
275
  free(str);
258
276
 
@@ -264,6 +282,12 @@
264
282
 
265
283
  return 0;
266
284
 
285
+ }
286
+
287
+
288
+
289
+
290
+
267
291
  ```
268
292
 
269
293
 

1

ソースコードを書く場所を間違っていたので訂正しました。ご指摘ありがとうございました。

2019/08/29 05:57

投稿

rinringo_88
rinringo_88

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,92 @@
1
+ }### 前提・実現したいこと
2
+
3
+
4
+
5
+ ここに質問の内容を詳しく書いてください。
6
+
1
- // 11-2.cpp : コンソール アリケーションエントリ ポトを定義しま
7
+ ログラム初心者です。こちらイトで質問するのも慣れておりませんので失礼があったら申訳ありせん
8
+
9
+
10
+
2
-
11
+ C言語で名簿を表示させるプログラムを作成しました。
12
+
13
+ 名簿の中身は以下のようになっております。
14
+
15
+
16
+
17
+ 100 あ 30 男性
18
+
19
+ 101 あ 20 女性
20
+
21
+ 102 い 40 男性
22
+
23
+ 103 う 30 男性
24
+
25
+ 104 え 30 女性
26
+
27
+ 105 お 20 男性
28
+
29
+ 106 か 40 女性
30
+
31
+ 107 き 50 男性
32
+
33
+ 108 く 30 女性
34
+
35
+ 109 け 40 男性
36
+
37
+ 110 こ 20 女性
38
+
39
+ 111 さ 50 男性
40
+
41
+ 112 し 30 女性
42
+
43
+ 113 す 40 男性
44
+
45
+ 114 せ 20 男性
46
+
47
+ 115 そ 30 女性
48
+
49
+ 116 た 40 男性
50
+
51
+ 117 ち 20 女性
52
+
53
+ 118 つ 30 男性
54
+
55
+ 119 て 50 男性
56
+
57
+ 120 と 40 女性
58
+
59
+ 121 な 50 男性
60
+
61
+ 122 に 30 女性
62
+
63
+ 123 ぬ 20 男性
64
+
65
+
66
+
67
+ 名簿の年齢が小さい順に並べ替えたいのですが、当方の力不足で上手くできません。
68
+
69
+ 特に、下の方のポインタ演算子の入れ替えの部分が上手いコードが思いつきません。
70
+
71
+
72
+
73
+ ### 発生している問題・エラーメッセージ
74
+
75
+
76
+
77
+ ```
78
+
79
+ エラーメッセージ
80
+
81
+ ```
82
+
83
+
84
+
3
- //
85
+ ### 該当のソースコード
86
+
87
+
88
+
89
+ ```C
4
90
 
5
91
  #include "stdafx.h"
6
92
 
@@ -178,100 +264,8 @@
178
264
 
179
265
  return 0;
180
266
 
181
- }### 前提・実現したいこと
182
-
183
-
184
-
185
- ここに質問の内容を詳しく書いてください。
186
-
187
- プログラム初心者です。こちらのサイトで質問をするのも慣れておりませんので失礼があったら申し訳ありません。
188
-
189
-
190
-
191
- C言語で名簿を表示させるプログラムを作成しました。
192
-
193
- 名簿の中身は以下のようになっております。
194
-
195
-
196
-
197
- 100 あ 30 男性
198
-
199
- 101 あ 20 女性
200
-
201
- 102 い 40 男性
202
-
203
- 103 う 30 男性
204
-
205
- 104 え 30 女性
206
-
207
- 105 お 20 男性
208
-
209
- 106 か 40 女性
210
-
211
- 107 き 50 男性
212
-
213
- 108 く 30 女性
214
-
215
- 109 け 40 男性
216
-
217
- 110 こ 20 女性
218
-
219
- 111 さ 50 男性
220
-
221
- 112 し 30 女性
222
-
223
- 113 す 40 男性
224
-
225
- 114 せ 20 男性
226
-
227
- 115 そ 30 女性
228
-
229
- 116 た 40 男性
230
-
231
- 117 ち 20 女性
232
-
233
- 118 つ 30 男性
234
-
235
- 119 て 50 男性
236
-
237
- 120 と 40 女性
238
-
239
- 121 な 50 男性
240
-
241
- 122 に 30 女性
242
-
243
- 123 ぬ 20 男性
244
-
245
-
246
-
247
- 名簿の年齢が小さい順に並べ替えたいのですが、当方の力不足で上手くできません。
248
-
249
- 特に、下の方のポインタ演算子の入れ替えの部分が上手いコードが思いつきません。
250
-
251
-
252
-
253
- ### 発生している問題・エラーメッセージ
254
-
255
-
256
-
257
267
  ```
258
268
 
259
- エラーメッセージ
260
-
261
- ```
262
-
263
-
264
-
265
- ### 該当のソースコード
266
-
267
-
268
-
269
- ```ここに言語名を入力
270
-
271
- ソースコード
272
-
273
- ```
274
-
275
269
 
276
270
 
277
271
  ### 試したこと