From b28582bd7dc38c6c1e62d936d70d46b4eabb5f30 Mon Sep 17 00:00:00 2001 From: eriedaberrie Date: Sun, 3 Dec 2023 16:15:40 -0800 Subject: [PATCH] 2023 day 1-3: fixup C++ cin input --- 2023/1/main.cpp | 6 +++--- 2023/2/main-1.cpp | 20 ++++++-------------- 2023/2/main-2.cpp | 20 ++++++-------------- 2023/3/main-1.cpp | 4 ++-- 2023/3/main-2.cpp | 4 ++-- 5 files changed, 19 insertions(+), 35 deletions(-) diff --git a/2023/1/main.cpp b/2023/1/main.cpp index c2a8254..b8fe325 100644 --- a/2023/1/main.cpp +++ b/2023/1/main.cpp @@ -19,10 +19,10 @@ int main() { int ret = 0; - string line; - for (;;) { + while (!cin.eof()) { + string line; getline(cin, line); - if (cin.eof()) + if (line.empty()) break; int pi = INT_MAX, pl = -1, vi = 0, vl = 0; diff --git a/2023/2/main-1.cpp b/2023/2/main-1.cpp index 58173fb..3da0099 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,8 +37,6 @@ int main() { } break; case '\n': - if (cin.eof()) - goto end; if (isPossible) ret += id; else @@ -52,6 +45,5 @@ int main() { } } -end: cout << ret << '\n'; } diff --git a/2023/2/main-2.cpp b/2023/2/main-2.cpp index 723cb2d..91ca5cf 100644 --- a/2023/2/main-2.cpp +++ b/2023/2/main-2.cpp @@ -5,39 +5,31 @@ 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; 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..281ce44 100644 --- a/2023/3/main-1.cpp +++ b/2023/3/main-1.cpp @@ -10,13 +10,13 @@ int main() { cin.tie(0); vector lines; - do { + while (!cin.eof()) { string line; getline(cin, line); if (line.empty()) break; 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..aabc936 100644 --- a/2023/3/main-2.cpp +++ b/2023/3/main-2.cpp @@ -10,13 +10,13 @@ int main() { cin.tie(0); vector lines; - do { + while (!cin.eof()) { string line; getline(cin, line); if (line.empty()) break; lines.push_back(line); - } while (!cin.eof()); + } int ret = 0;