回答編集履歴
3
丸め処理のコードを追加
test
CHANGED
@@ -137,3 +137,103 @@
|
|
137
137
|
```
|
138
138
|
|
139
139
|
感雨時刻の重複は、終了時刻を更新していくことで解決できるでしょう。
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
**追記**
|
146
|
+
|
147
|
+
質問に「丸めの関数を修正したコード」が追記されましたが、
|
148
|
+
|
149
|
+
無駄な記述がたくさんあります。
|
150
|
+
|
151
|
+
`} else if(s.at(3) == '6' || s.at(3) == '7' || s.at(3) == '8') {`
|
152
|
+
|
153
|
+
の場合の処理と、
|
154
|
+
|
155
|
+
`} else if(s.at(3) == '9') {` の場合の処理が全く同じです。
|
156
|
+
|
157
|
+
なぜ、
|
158
|
+
|
159
|
+
`} else if(s.at(3) >= '6' && s.at(3) <= '9') {` と一つにまとめないのでしょうか?
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
私なら次のように書きます。
|
164
|
+
|
165
|
+
```C++
|
166
|
+
|
167
|
+
#include <iostream>
|
168
|
+
|
169
|
+
#include <string>
|
170
|
+
|
171
|
+
using namespace std;
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
string my_round_start(string s)
|
176
|
+
|
177
|
+
{
|
178
|
+
|
179
|
+
s.at(3) = (s.at(3) < '5') ? '0' : '5';
|
180
|
+
|
181
|
+
return s;
|
182
|
+
|
183
|
+
}
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
string my_round_end(string s)
|
188
|
+
|
189
|
+
{
|
190
|
+
|
191
|
+
if (s.at(3) > '5') { // '6' <= s.at(3) <= '9'
|
192
|
+
|
193
|
+
s.at(3) = '0';
|
194
|
+
|
195
|
+
if (++s.at(2) == '6') {
|
196
|
+
|
197
|
+
s.at(2) = '0';
|
198
|
+
|
199
|
+
if (++s.at(1) > '9') {
|
200
|
+
|
201
|
+
s.at(1) = '0';
|
202
|
+
|
203
|
+
++s.at(0);
|
204
|
+
|
205
|
+
}
|
206
|
+
|
207
|
+
}
|
208
|
+
|
209
|
+
}
|
210
|
+
|
211
|
+
else if (s.at(3) != '0') // '1' <= s.at(3) <= '5'
|
212
|
+
|
213
|
+
s.at(3) = '5';
|
214
|
+
|
215
|
+
return s;
|
216
|
+
|
217
|
+
}
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
int main()
|
222
|
+
|
223
|
+
{
|
224
|
+
|
225
|
+
string str[] = { "1106-1123", "1129-1203", "1148-1210", "1904-1956" };
|
226
|
+
|
227
|
+
for (int i = 0; i < 4; i++) {
|
228
|
+
|
229
|
+
cout << str[i] << endl;
|
230
|
+
|
231
|
+
cout << my_round_start(str[i].substr(0, 4)) << '-'
|
232
|
+
|
233
|
+
<< my_round_end(str[i].substr(5, 9)) << endl << endl;
|
234
|
+
|
235
|
+
}
|
236
|
+
|
237
|
+
}
|
238
|
+
|
239
|
+
```
|
2
#include <string> を追加
test
CHANGED
@@ -37,6 +37,8 @@
|
|
37
37
|
#include <iostream> // cout
|
38
38
|
|
39
39
|
#include <iomanip> // setfill, setw
|
40
|
+
|
41
|
+
#include <string> // string
|
40
42
|
|
41
43
|
#include <vector> // vector
|
42
44
|
|
1
+ を * に修正
test
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
そこで、時刻を 00:00 から m分後という値にしておけば
|
28
28
|
|
29
|
-
(m + 4) / 5
|
29
|
+
(m + 4) / 5 * 5 で 5分単位の時刻に切り上げることが簡単にできます。
|
30
30
|
|
31
31
|
|
32
32
|
|