質問編集履歴
5
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
4
質問文の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,11 +19,8 @@
|
|
19
19
|
・SHOWとINSERTの処理のみ関数にします
|
20
20
|
・listとその反復子は、大域変数として定義します
|
21
21
|
|
22
|
-
以下のコードまで作成したのですが,
|
22
|
+
以下のコードまで作成したのですが,コマンド番号4の反復子を次の要素に進める操作が,無効になってしまいます.
|
23
|
-
・SHOWの処理の時に,反復子が参照する要素の行の先頭に「 > 」のマークを付けるには,どのようなコードを書けばいいですか?
|
24
|
-
・コマンド番号の3と4の処理が正しく実行されないのですが,コードをどのように修正したらよいでしょうか?
|
25
|
-
以上の2点について詳しく教えていただきたいです.
|
26
|
-
|
23
|
+
正しく操作が行われるには,コードをどのように修正したらよいでしょうか?教えてください.よろしくお願いします.
|
27
24
|
```C++
|
28
25
|
#include <iostream>
|
29
26
|
#include <list>
|
3
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -101,12 +101,16 @@
|
|
101
101
|
|
102
102
|
//コマンドが「次の要素」であれば、以下を実行する。
|
103
103
|
case NEXT:
|
104
|
+
while (p != busSchedule.end()) {
|
104
|
-
|
105
|
+
p++; //反復子が次の要素を参照するようにする
|
106
|
+
}
|
105
107
|
break;
|
106
108
|
|
107
109
|
//コマンドが「前の要素」であれば、以下を実行する。
|
108
110
|
case PREVIOUS:
|
111
|
+
while (p != busSchedule.begin()) {
|
109
|
-
|
112
|
+
p--; //反復子が前の要素を参照するようにする
|
113
|
+
}
|
110
114
|
break;
|
111
115
|
}
|
112
116
|
|
@@ -147,8 +151,10 @@
|
|
147
151
|
list<Arrival>::iterator q;
|
148
152
|
p = busSchedule.begin();
|
149
153
|
for (q = busSchedule.begin(); q != busSchedule.end(); q++) {
|
154
|
+
if (q == p) {
|
155
|
+
cout << ">";
|
156
|
+
}
|
150
|
-
cout <<
|
157
|
+
cout << q->busStopType << " " << q->busStopName << " " << q->time << endl;
|
151
|
-
p++;
|
152
158
|
}
|
153
159
|
}
|
154
160
|
|
2
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
|
22
22
|
以下のコードまで作成したのですが,わからない点があります.
|
23
23
|
・SHOWの処理の時に,反復子が参照する要素の行の先頭に「 > 」のマークを付けるには,どのようなコードを書けばいいですか?
|
24
|
-
・コマンド番号の3
|
24
|
+
・コマンド番号の3と4の処理が正しく実行されないのですが,コードをどのように修正したらよいでしょうか?
|
25
25
|
以上の2点について詳しく教えていただきたいです.
|
26
26
|
また,現在のコードで修正点があれば,それも教えてください.よろしくお願いします.
|
27
27
|
```C++
|
@@ -30,7 +30,6 @@
|
|
30
30
|
#include <string>
|
31
31
|
using namespace std;
|
32
32
|
|
33
|
-
#define LINELENGTH 80 //一行の長さ
|
34
33
|
#define SHOW 1 //表示
|
35
34
|
#define INSERT 2 //追加
|
36
35
|
#define DELETE 3 //削除
|
@@ -65,7 +64,6 @@
|
|
65
64
|
メイン関数
|
66
65
|
****/
|
67
66
|
void main() {
|
68
|
-
char commandLine[LINELENGTH] = "";
|
69
67
|
int type=0;
|
70
68
|
string name, time;
|
71
69
|
string t;
|
1
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -18,13 +18,19 @@
|
|
18
18
|
・「反復子がbegin()を参照するときのPREVIOUSコマンド」および「反復子がend()を参照するときのNEXTコマンド」は無効とします
|
19
19
|
・SHOWとINSERTの処理のみ関数にします
|
20
20
|
・listとその反復子は、大域変数として定義します
|
21
|
+
|
22
|
+
以下のコードまで作成したのですが,わからない点があります.
|
23
|
+
・SHOWの処理の時に,反復子が参照する要素の行の先頭に「 > 」のマークを付けるには,どのようなコードを書けばいいですか?
|
24
|
+
・コマンド番号の3~5の処理が正しく出力されないのですが,コードをどのように修正したらよいでしょうか?
|
25
|
+
以上の2点について詳しく教えていただきたいです.
|
21
|
-
|
26
|
+
また,現在のコードで修正点があれば,それも教えてください.よろしくお願いします.
|
22
27
|
```C++
|
23
28
|
#include <iostream>
|
24
29
|
#include <list>
|
25
30
|
#include <string>
|
26
31
|
using namespace std;
|
27
32
|
|
33
|
+
#define LINELENGTH 80 //一行の長さ
|
28
34
|
#define SHOW 1 //表示
|
29
35
|
#define INSERT 2 //追加
|
30
36
|
#define DELETE 3 //削除
|
@@ -32,10 +38,6 @@
|
|
32
38
|
#define PREVIOUS 5 //前の要素
|
33
39
|
#define END 6 //終了
|
34
40
|
|
35
|
-
void showMenu(void); //機能の一覧を表示する。
|
36
|
-
void show();
|
37
|
-
void insert(string busStopName, int busStopType, string time);
|
38
|
-
|
39
41
|
//バス停到着情報クラス
|
40
42
|
class Arrival {
|
41
43
|
public:
|
@@ -51,6 +53,10 @@
|
|
51
53
|
}
|
52
54
|
};
|
53
55
|
|
56
|
+
void showMenu(void); //機能の一覧を表示する。
|
57
|
+
void show();
|
58
|
+
void insert(string busStopName, int busStopType, string time);
|
59
|
+
|
54
60
|
// 大域変数
|
55
61
|
list<Arrival> busSchedule; //バス時刻表リスト
|
56
62
|
list<Arrival>::iterator p; //上記を参照する反復子
|
@@ -59,15 +65,14 @@
|
|
59
65
|
メイン関数
|
60
66
|
****/
|
61
67
|
void main() {
|
62
|
-
string newName; // 新しく加える名称
|
63
|
-
|
68
|
+
char commandLine[LINELENGTH] = "";
|
64
69
|
int type=0;
|
65
70
|
string name, time;
|
66
71
|
string t;
|
67
72
|
int command;
|
68
73
|
int busStopType=0; //バス停タイプ
|
69
74
|
string busStopName; //バス停名
|
70
|
-
|
75
|
+
|
71
76
|
p = busSchedule.end(); //反復子がリスト末尾を指すようにする
|
72
77
|
|
73
78
|
//機能の一覧を表示する。
|
@@ -84,51 +89,36 @@
|
|
84
89
|
switch (command) {
|
85
90
|
case SHOW:
|
86
91
|
show();
|
87
|
-
|
88
92
|
break;
|
89
93
|
|
90
94
|
//コマンドが「追加」であれば、以下を実行する。
|
91
|
-
case INSERT:
|
95
|
+
case INSERT:
|
92
96
|
insert(busStopName,busStopType,time);
|
93
|
-
|
94
97
|
break;
|
95
98
|
|
96
99
|
//コマンドが「削除」であれば、以下を実行する。
|
97
100
|
case DELETE:
|
98
|
-
|
101
|
+
p = busSchedule.erase(p); //pの参照先を削除、戻り値は次の要素を参照
|
99
|
-
|
100
102
|
break;
|
101
103
|
|
102
104
|
//コマンドが「次の要素」であれば、以下を実行する。
|
103
105
|
case NEXT:
|
104
|
-
|
106
|
+
p++; //反復子が次の要素を参照するようにする
|
105
|
-
|
106
107
|
break;
|
107
108
|
|
108
109
|
//コマンドが「前の要素」であれば、以下を実行する。
|
109
110
|
case PREVIOUS:
|
110
|
-
|
111
|
+
p--; //反復子が前の要素を参照するようにする
|
111
|
-
|
112
112
|
break;
|
113
|
-
|
114
113
|
}
|
115
|
-
|
114
|
+
|
116
115
|
// 機能の一覧を表示する。
|
117
116
|
showMenu();
|
118
117
|
|
119
118
|
// コマンド番号を入力する。
|
120
119
|
cout << "コマンド番号=";
|
121
120
|
cin >> command;
|
122
|
-
}
|
121
|
+
}
|
123
|
-
|
124
|
-
p = busSchedule.erase(p); //pの参照先を削除、戻り値は次の要素を参照
|
125
|
-
p = busSchedule.begin(); //反復子がリスト先頭を指すようにする
|
126
|
-
|
127
|
-
p++; //反復子が次の要素を参照するようにする
|
128
|
-
p--; //反復子が前の要素を参照するようにする
|
129
|
-
type = p->busStopType;
|
130
|
-
name = p->busStopName;
|
131
|
-
t = p->time;
|
132
122
|
}
|
133
123
|
|
134
124
|
/*****************************************
|
@@ -157,13 +147,20 @@
|
|
157
147
|
|
158
148
|
void show() {
|
159
149
|
list<Arrival>::iterator q;
|
150
|
+
p = busSchedule.begin();
|
160
151
|
for (q = busSchedule.begin(); q != busSchedule.end(); q++) {
|
161
|
-
|
152
|
+
cout << p->busStopType << " " << p->busStopName << " " << p->time << endl;
|
153
|
+
p++;
|
162
154
|
}
|
163
155
|
}
|
156
|
+
|
164
157
|
void insert(string busStopName, int busStopType, string time){
|
165
158
|
int type=0;
|
159
|
+
// 入力を受け取る
|
160
|
+
cout << "バス停タイプ(0:乗車のみ、1:乗降可能、2:降車のみ),バス停名,通過時刻(hh : mmの形式)> ";
|
161
|
+
cin >> busStopType; //バス停タイプ
|
162
|
+
cin >> busStopName; //バス停名
|
166
|
-
|
163
|
+
cin >> time;
|
167
|
-
p = busSchedule.insert(p, Arrival(
|
164
|
+
p = busSchedule.insert(p, Arrival(busStopType, busStopName, time)); //pの参照先の直前に挿入、戻り値は挿入要素を参照
|
168
165
|
}
|
169
166
|
```
|