質問編集履歴
5
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
4
質問文の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,15 +40,9 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
以下のコードまで作成したのですが,
|
43
|
+
以下のコードまで作成したのですが,コマンド番号4の反復子を次の要素に進める操作が,無効になってしまいます.
|
44
|
-
|
45
|
-
|
44
|
+
|
46
|
-
|
47
|
-
・コマンド番号の3と4の処理が正しく実行されないのですが,コードをどのように修正したらよいでしょうか?
|
48
|
-
|
49
|
-
以上の2点について詳しく教えていただきたいです.
|
50
|
-
|
51
|
-
|
45
|
+
正しく操作が行われるには,コードをどのように修正したらよいでしょうか?教えてください.よろしくお願いします.
|
52
46
|
|
53
47
|
```C++
|
54
48
|
|
3
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -204,7 +204,11 @@
|
|
204
204
|
|
205
205
|
case NEXT:
|
206
206
|
|
207
|
+
while (p != busSchedule.end()) {
|
208
|
+
|
207
|
-
p++;
|
209
|
+
p++; //反復子が次の要素を参照するようにする
|
210
|
+
|
211
|
+
}
|
208
212
|
|
209
213
|
break;
|
210
214
|
|
@@ -214,7 +218,11 @@
|
|
214
218
|
|
215
219
|
case PREVIOUS:
|
216
220
|
|
221
|
+
while (p != busSchedule.begin()) {
|
222
|
+
|
217
|
-
p--; //反復子が前の要素を参照するようにする
|
223
|
+
p--; //反復子が前の要素を参照するようにする
|
224
|
+
|
225
|
+
}
|
218
226
|
|
219
227
|
break;
|
220
228
|
|
@@ -296,9 +304,13 @@
|
|
296
304
|
|
297
305
|
for (q = busSchedule.begin(); q != busSchedule.end(); q++) {
|
298
306
|
|
307
|
+
if (q == p) {
|
308
|
+
|
309
|
+
cout << ">";
|
310
|
+
|
311
|
+
}
|
312
|
+
|
299
|
-
cout <<
|
313
|
+
cout << q->busStopType << " " << q->busStopName << " " << q->time << endl;
|
300
|
-
|
301
|
-
p++;
|
302
314
|
|
303
315
|
}
|
304
316
|
|
2
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
・SHOWの処理の時に,反復子が参照する要素の行の先頭に「 > 」のマークを付けるには,どのようなコードを書けばいいですか?
|
46
46
|
|
47
|
-
・コマンド番号の3
|
47
|
+
・コマンド番号の3と4の処理が正しく実行されないのですが,コードをどのように修正したらよいでしょうか?
|
48
48
|
|
49
49
|
以上の2点について詳しく教えていただきたいです.
|
50
50
|
|
@@ -62,8 +62,6 @@
|
|
62
62
|
|
63
63
|
|
64
64
|
|
65
|
-
#define LINELENGTH 80 //一行の長さ
|
66
|
-
|
67
65
|
#define SHOW 1 //表示
|
68
66
|
|
69
67
|
#define INSERT 2 //追加
|
@@ -132,8 +130,6 @@
|
|
132
130
|
|
133
131
|
void main() {
|
134
132
|
|
135
|
-
char commandLine[LINELENGTH] = "";
|
136
|
-
|
137
133
|
int type=0;
|
138
134
|
|
139
135
|
string name, time;
|
1
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -38,7 +38,17 @@
|
|
38
38
|
|
39
39
|
・listとその反復子は、大域変数として定義します
|
40
40
|
|
41
|
+
|
42
|
+
|
43
|
+
以下のコードまで作成したのですが,わからない点があります.
|
44
|
+
|
45
|
+
・SHOWの処理の時に,反復子が参照する要素の行の先頭に「 > 」のマークを付けるには,どのようなコードを書けばいいですか?
|
46
|
+
|
47
|
+
・コマンド番号の3~5の処理が正しく出力されないのですが,コードをどのように修正したらよいでしょうか?
|
48
|
+
|
49
|
+
以上の2点について詳しく教えていただきたいです.
|
50
|
+
|
41
|
-
|
51
|
+
また,現在のコードで修正点があれば,それも教えてください.よろしくお願いします.
|
42
52
|
|
43
53
|
```C++
|
44
54
|
|
@@ -52,6 +62,8 @@
|
|
52
62
|
|
53
63
|
|
54
64
|
|
65
|
+
#define LINELENGTH 80 //一行の長さ
|
66
|
+
|
55
67
|
#define SHOW 1 //表示
|
56
68
|
|
57
69
|
#define INSERT 2 //追加
|
@@ -66,6 +78,36 @@
|
|
66
78
|
|
67
79
|
|
68
80
|
|
81
|
+
//バス停到着情報クラス
|
82
|
+
|
83
|
+
class Arrival {
|
84
|
+
|
85
|
+
public:
|
86
|
+
|
87
|
+
int busStopType; //バス停タイプ
|
88
|
+
|
89
|
+
string busStopName; //バス停名
|
90
|
+
|
91
|
+
string time; //通過時刻
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
// コンストラクタ
|
96
|
+
|
97
|
+
Arrival(int type, string name, string t) {
|
98
|
+
|
99
|
+
busStopType = type;
|
100
|
+
|
101
|
+
busStopName = name;
|
102
|
+
|
103
|
+
time = t;
|
104
|
+
|
105
|
+
}
|
106
|
+
|
107
|
+
};
|
108
|
+
|
109
|
+
|
110
|
+
|
69
111
|
void showMenu(void); //機能の一覧を表示する。
|
70
112
|
|
71
113
|
void show();
|
@@ -74,264 +116,216 @@
|
|
74
116
|
|
75
117
|
|
76
118
|
|
77
|
-
//
|
119
|
+
// 大域変数
|
120
|
+
|
78
|
-
|
121
|
+
list<Arrival> busSchedule; //バス時刻表リスト
|
122
|
+
|
123
|
+
list<Arrival>::iterator p; //上記を参照する反復子
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
/****
|
128
|
+
|
129
|
+
メイン関数
|
130
|
+
|
131
|
+
****/
|
132
|
+
|
79
|
-
|
133
|
+
void main() {
|
134
|
+
|
80
|
-
|
135
|
+
char commandLine[LINELENGTH] = "";
|
136
|
+
|
137
|
+
int type=0;
|
138
|
+
|
139
|
+
string name, time;
|
140
|
+
|
81
|
-
|
141
|
+
string t;
|
142
|
+
|
82
|
-
|
143
|
+
int command;
|
144
|
+
|
83
|
-
int busStopType; //バス停タイプ
|
145
|
+
int busStopType=0; //バス停タイプ
|
84
146
|
|
85
147
|
string busStopName; //バス停名
|
86
148
|
|
149
|
+
|
150
|
+
|
151
|
+
p = busSchedule.end(); //反復子がリスト末尾を指すようにする
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
//機能の一覧を表示する。
|
156
|
+
|
157
|
+
showMenu();
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
//コマンド番号を入力する。
|
162
|
+
|
163
|
+
cout << "コマンド番号=";
|
164
|
+
|
165
|
+
cin >> command;
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
//コマンドが「終了」でない限り、以下の処理を繰り返す。
|
170
|
+
|
171
|
+
while (command != END) {
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
//コマンドが「表示」であれば、以下を実行する。
|
176
|
+
|
177
|
+
switch (command) {
|
178
|
+
|
179
|
+
case SHOW:
|
180
|
+
|
181
|
+
show();
|
182
|
+
|
183
|
+
break;
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
//コマンドが「追加」であれば、以下を実行する。
|
188
|
+
|
189
|
+
case INSERT:
|
190
|
+
|
191
|
+
insert(busStopName,busStopType,time);
|
192
|
+
|
193
|
+
break;
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
//コマンドが「削除」であれば、以下を実行する。
|
198
|
+
|
199
|
+
case DELETE:
|
200
|
+
|
201
|
+
p = busSchedule.erase(p); //pの参照先を削除、戻り値は次の要素を参照
|
202
|
+
|
203
|
+
break;
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
//コマンドが「次の要素」であれば、以下を実行する。
|
208
|
+
|
209
|
+
case NEXT:
|
210
|
+
|
87
|
-
|
211
|
+
p++; //反復子が次の要素を参照するようにする
|
212
|
+
|
88
|
-
|
213
|
+
break;
|
214
|
+
|
215
|
+
|
216
|
+
|
89
|
-
|
217
|
+
//コマンドが「前の要素」であれば、以下を実行する。
|
218
|
+
|
90
|
-
|
219
|
+
case PREVIOUS:
|
220
|
+
|
221
|
+
p--; //反復子が前の要素を参照するようにする
|
222
|
+
|
223
|
+
break;
|
224
|
+
|
225
|
+
}
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
// 機能の一覧を表示する。
|
230
|
+
|
231
|
+
showMenu();
|
232
|
+
|
233
|
+
|
234
|
+
|
91
|
-
// コン
|
235
|
+
// コマンド番号を入力する。
|
92
|
-
|
236
|
+
|
93
|
-
|
237
|
+
cout << "コマンド番号=";
|
94
|
-
|
95
|
-
|
238
|
+
|
96
|
-
|
97
|
-
|
239
|
+
cin >> command;
|
240
|
+
|
98
|
-
|
241
|
+
}
|
242
|
+
|
243
|
+
}
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
/*****************************************
|
248
|
+
|
99
|
-
|
249
|
+
機能の一覧を表示する。
|
250
|
+
|
251
|
+
*****************************************/
|
252
|
+
|
253
|
+
void showMenu(void){
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
// 1. 「コマンド番号 1 は リストに登録されている要素を一覧表示する。」と表示する。
|
258
|
+
|
259
|
+
cout << "コマンド番号 1 は リストに登録されている要素を一覧表示する。" << endl;
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
// 2. 「コマンド番号 2 は 反復子の直前に新規要素を追加する。」と表示する。
|
264
|
+
|
265
|
+
cout << "コマンド番号 2 は 反復子の直前に新規要素を追加する。" << endl;
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
// 3. 「コマンド番号 3 は 反復子が参照する要素を削除する。」と表示する。
|
270
|
+
|
271
|
+
cout << "コマンド番号 3 は 反復子が参照する要素を削除する。" << endl;
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
// 4. 「コマンド番号 4 は 反復子を次の要素に進める。」と表示する。
|
276
|
+
|
277
|
+
cout << "コマンド番号 4 は 反復子を次の要素に進める。" << endl;
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
// 5. 「コマンド番号 5 は 反復子を前の要素に進める。」と表示する。
|
282
|
+
|
283
|
+
cout << "コマンド番号 5 は 反復子を前の要素に進める。" << endl;
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
// 6. 「コマンド番号 6 は プログラムを終了する。」と表示する。
|
288
|
+
|
289
|
+
cout << "コマンド番号 6 は プログラムを終了する。" << endl;
|
100
290
|
|
101
291
|
}
|
102
292
|
|
103
|
-
|
293
|
+
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
294
|
+
|
108
|
-
|
109
|
-
list<Arrival> busSchedule; //バス時刻表リスト
|
110
|
-
|
111
|
-
list<Arrival>::iterator p; //上記を参照する反復子
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
/****
|
116
|
-
|
117
|
-
メイン関数
|
118
|
-
|
119
|
-
****/
|
120
|
-
|
121
|
-
void
|
295
|
+
void show() {
|
122
|
-
|
123
|
-
|
296
|
+
|
124
|
-
|
125
|
-
int newValue; // 新しく加える値
|
126
|
-
|
127
|
-
int type=0;
|
128
|
-
|
129
|
-
stri
|
297
|
+
list<Arrival>::iterator q;
|
130
|
-
|
131
|
-
|
298
|
+
|
132
|
-
|
133
|
-
int command;
|
134
|
-
|
135
|
-
int busStopType=0; //バス停タイプ
|
136
|
-
|
137
|
-
|
299
|
+
p = busSchedule.begin();
|
138
|
-
|
139
|
-
|
140
|
-
|
300
|
+
|
141
|
-
|
301
|
+
for (q = busSchedule.begin(); q != busSchedule.end(); q++) {
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
302
|
+
|
146
|
-
|
147
|
-
showMenu();
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
//コマンド番号を入力する。
|
152
|
-
|
153
|
-
cout << "
|
303
|
+
cout << p->busStopType << " " << p->busStopName << " " << p->time << endl;
|
154
|
-
|
155
|
-
|
304
|
+
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
//コマンドが「終了」でない限り、以下の処理を繰り返す。
|
160
|
-
|
161
|
-
while (command != END) {
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
//コマンドが「表示」であれば、以下を実行する。
|
166
|
-
|
167
|
-
switch (command) {
|
168
|
-
|
169
|
-
case SHOW:
|
170
|
-
|
171
|
-
show();
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
305
|
+
p++;
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
//コマンドが「追加」であれば、以下を実行する。
|
180
|
-
|
181
|
-
case INSERT:
|
182
|
-
|
183
|
-
insert(busStopName,busStopType,time);
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
break;
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
//コマンドが「削除」であれば、以下を実行する。
|
192
|
-
|
193
|
-
case DELETE:
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
break;
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
//コマンドが「次の要素」であれば、以下を実行する。
|
204
|
-
|
205
|
-
case NEXT:
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
break;
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
//コマンドが「前の要素」であれば、以下を実行する。
|
216
|
-
|
217
|
-
case PREVIOUS:
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
break;
|
224
|
-
|
225
|
-
|
226
306
|
|
227
307
|
}
|
228
308
|
|
229
|
-
|
230
|
-
|
231
|
-
// 機能の一覧を表示する。
|
232
|
-
|
233
|
-
showMenu();
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
// コマンド番号を入力する。
|
238
|
-
|
239
|
-
cout << "コマンド番号=";
|
240
|
-
|
241
|
-
cin >> command;
|
242
|
-
|
243
309
|
}
|
244
310
|
|
245
311
|
|
246
312
|
|
247
|
-
|
313
|
+
void insert(string busStopName, int busStopType, string time){
|
314
|
+
|
248
|
-
|
315
|
+
int type=0;
|
316
|
+
|
317
|
+
// 入力を受け取る
|
318
|
+
|
319
|
+
cout << "バス停タイプ(0:乗車のみ、1:乗降可能、2:降車のみ),バス停名,通過時刻(hh : mmの形式)> ";
|
320
|
+
|
249
|
-
|
321
|
+
cin >> busStopType; //バス停タイプ
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
322
|
+
|
254
|
-
|
255
|
-
p--; //反復子が前の要素を参照するようにする
|
256
|
-
|
257
|
-
type = p->busStopType;
|
258
|
-
|
259
|
-
n
|
323
|
+
cin >> busStopName; //バス停名
|
260
|
-
|
324
|
+
|
261
|
-
|
325
|
+
cin >> time;
|
262
|
-
|
263
|
-
|
326
|
+
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
/*****************************************
|
268
|
-
|
269
|
-
機能の一覧を表示する。
|
270
|
-
|
271
|
-
*****************************************/
|
272
|
-
|
273
|
-
void showMenu(void){
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
// 1. 「コマンド番号 1 は リストに登録されている要素を一覧表示する。」と表示する。
|
278
|
-
|
279
|
-
c
|
327
|
+
p = busSchedule.insert(p, Arrival(busStopType, busStopName, time)); //pの参照先の直前に挿入、戻り値は挿入要素を参照
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
// 2. 「コマンド番号 2 は 反復子の直前に新規要素を追加する。」と表示する。
|
284
|
-
|
285
|
-
cout << "コマンド番号 2 は 反復子の直前に新規要素を追加する。" << endl;
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
// 3. 「コマンド番号 3 は 反復子が参照する要素を削除する。」と表示する。
|
290
|
-
|
291
|
-
cout << "コマンド番号 3 は 反復子が参照する要素を削除する。" << endl;
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
// 4. 「コマンド番号 4 は 反復子を次の要素に進める。」と表示する。
|
296
|
-
|
297
|
-
cout << "コマンド番号 4 は 反復子を次の要素に進める。" << endl;
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
// 5. 「コマンド番号 5 は 反復子を前の要素に進める。」と表示する。
|
302
|
-
|
303
|
-
cout << "コマンド番号 5 は 反復子を前の要素に進める。" << endl;
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
// 6. 「コマンド番号 6 は プログラムを終了する。」と表示する。
|
308
|
-
|
309
|
-
cout << "コマンド番号 6 は プログラムを終了する。" << endl;
|
310
328
|
|
311
329
|
}
|
312
330
|
|
313
|
-
|
314
|
-
|
315
|
-
void show() {
|
316
|
-
|
317
|
-
list<Arrival>::iterator q;
|
318
|
-
|
319
|
-
for (q = busSchedule.begin(); q != busSchedule.end(); q++) {
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
}
|
324
|
-
|
325
|
-
}
|
326
|
-
|
327
|
-
void insert(string busStopName, int busStopType, string time){
|
328
|
-
|
329
|
-
int type=0;
|
330
|
-
|
331
|
-
string name;
|
332
|
-
|
333
|
-
p = busSchedule.insert(p, Arrival(type, name, time)); //pの参照先の直前に挿入、戻り値は挿入要素を参照
|
334
|
-
|
335
|
-
}
|
336
|
-
|
337
331
|
```
|