From 5a9a3ff3127d9815014f2e744ada0720aa7534d2 Mon Sep 17 00:00:00 2001 From: eriedaberrie Date: Sun, 3 Dec 2023 16:15:40 -0800 Subject: [PATCH] 2023 day 1-3: touchup C++ cin input --- 2023/1/main.cpp | 6 +----- 2023/2/main-1.cpp | 27 +++++++++++---------------- 2023/2/main-2.cpp | 21 +++++++-------------- 2023/3/main-1.cpp | 9 +++------ 2023/3/main-2.cpp | 9 +++------ 5 files changed, 25 insertions(+), 47 deletions(-) diff --git a/2023/1/main.cpp b/2023/1/main.cpp index c2a8254..574dc41 100644 --- a/2023/1/main.cpp +++ b/2023/1/main.cpp @@ -20,11 +20,7 @@ int main() { int ret = 0; string line; - for (;;) { - getline(cin, line); - if (cin.eof()) - break; - + while (getline(cin, line) && !line.empty()) { int pi = INT_MAX, pl = -1, vi = 0, vl = 0; for (int i = 0; i < line.size(); i++) { unsigned char c = line[i] - '0'; diff --git a/2023/2/main-1.cpp b/2023/2/main-1.cpp index 58173fb..2dffa50 100644 --- a/2023/2/main-1.cpp +++ b/2023/2/main-1.cpp @@ -5,28 +5,23 @@ int main() { ios::sync_with_stdio(0); cin.tie(0); - auto& cin = std::cin >> noskipws; - int ret = 0, id = 0; bool isPossible = true; - for (;;) { - char c; - cin >> c; - switch (c) { + while (!cin.eof()) { + switch (cin.get()) { case 'G': - cin >> c; cin >> c; cin >> c; cin >> c; + cin.ignore(4); cin >> id; break; case ':': case ',': case ';': if (!isPossible) break; - cin >> c; + cin.ignore(1); int n; cin >> n; - cin >> c; - cin >> c; - switch (c) { + cin.ignore(1); + switch (cin.get()) { case 'r': if (n > 12) isPossible = false; @@ -42,16 +37,16 @@ int main() { } break; case '\n': - if (cin.eof()) - goto end; - if (isPossible) + case EOF: + if (isPossible) { ret += id; - else + id = 0; + } else { isPossible = true; + } break; } } -end: cout << ret << '\n'; } diff --git a/2023/2/main-2.cpp b/2023/2/main-2.cpp index 723cb2d..fc73df3 100644 --- a/2023/2/main-2.cpp +++ b/2023/2/main-2.cpp @@ -5,39 +5,32 @@ int main() { ios::sync_with_stdio(0); cin.tie(0); - auto& cin = std::cin >> noskipws; - int ret = 0, id = 0, r = 0, g = 0, b = 0; - for (;;) { - char c; - cin >> c; - switch (c) { + while (!cin.eof()) { + switch (cin.get()) { case 'G': - cin >> c; cin >> c; cin >> c; cin >> c; + cin.ignore(4); cin >> id; break; case ':': case ',': case ';': - cin >> c; + cin.ignore(1); int n; cin >> n; - cin >> c; - cin >> c; - switch (c) { + cin.ignore(1); + switch (cin.get()) { case 'r': r = max(n, r); break; case 'g': g = max(n, g); break; case 'b': b = max(n, b); break; } break; case '\n': - if (cin.eof()) - goto end; + case EOF: ret += r * g * b; r = 0; g = 0; b = 0; break; } } -end: cout << ret << '\n'; } diff --git a/2023/3/main-1.cpp b/2023/3/main-1.cpp index c2c0ca6..717ab22 100644 --- a/2023/3/main-1.cpp +++ b/2023/3/main-1.cpp @@ -10,13 +10,10 @@ int main() { cin.tie(0); vector lines; - do { - string line; - getline(cin, line); - if (line.empty()) - break; + string line; + while (getline(cin, line) && !line.empty()) { lines.push_back(line); - } while (!cin.eof()); + } int ret = 0; diff --git a/2023/3/main-2.cpp b/2023/3/main-2.cpp index dceb6e6..9ded0d8 100644 --- a/2023/3/main-2.cpp +++ b/2023/3/main-2.cpp @@ -10,13 +10,10 @@ int main() { cin.tie(0); vector lines; - do { - string line; - getline(cin, line); - if (line.empty()) - break; + string line; + while (getline(cin, line) && !line.empty()) { lines.push_back(line); - } while (!cin.eof()); + } int ret = 0;